APLCart MCP Server

1

Add it to Claude Code

Run this in a terminal.

Run in terminal
claude mcp add -e "OPENAI_API_KEY=${OPENAI_API_KEY}" aplcart -- uv run --directory YOUR/PATH/HERE/ac-mcp python aplcart_mcp_semantic.py
Required:OPENAI_API_KEY+ 1 optional
README.md

An MCP server providing access to the APLCart idiom collection

APLCart MCP Server

A Model Context Protocol (MCP) server that exposes the APLCart idiom collection with semantic search capabilities. APLCart is a searchable collection of APL expressions with descriptions.

Features

  • Find APL expressions by exact syntax match
  • Search across syntax, descriptions, and keywords
  • Get keywords for specific APL expressions
  • Natural language queries using OpenAI embeddings

Installation

Prerequisites

  • Python 3.11 or higher
  • OpenAI API key (for semantic search functionality)

Using uv

# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh

# Clone the repository
git clone <repository-url>
cd ac-mcp

# Install dependencies
uv sync

Setup

Convert APLCart Data

First, fetch and convert the APLCart TSV data to JSONL format:

# Using uv
uv run python aplcart2json.py

# Or with activated venv
python aplcart2json.py

# Optional: Generate SQLite database for faster searches
python aplcart2json.py --db

Generate Embeddings (Optional; for Semantic Search)

To enable semantic search functionality:

# Set your OpenAI API key
export OPENAI_API_KEY='your-api-key-here'

# Generate embeddings
uv run python generate_embeddings.py

# Or with activated venv
python generate_embeddings.py

This creates:

  • aplcart.index - FAISS index file containing embeddings
  • aplcart_metadata.pkl - Metadata for semantic search results

Usage

Running the MCP Server

# Basic usage
uv run python aplcart_mcp_semantic.py

# With SQLite database backend
APLCART_USE_DB=1 uv run python aplcart_mcp_semantic.py

Using with Claude Code

The project includes a .mcp.json.template file that automatically configures the MCP server. Save that as .mcp.json, update it with your details, and run /mcp in Claude Code to see available servers.

You can also manually add the server:

claude mcp add aplcart "uv run python aplcart_mcp_semantic.py"

Using with Claude Desktop

Add this to your Claude Desktop configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/claude/claude_desktop_config.json
{
  "mcpServers": {
    "aplcart": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "YOUR/PATH/HERE/ac-mcp",
        "python",
        "aplcart_mcp_semantic.py"
      ],
      "env": {
        "APLCART_USE_DB": "1",
        "OPENAI_API_KEY": "${OPENAI_API_KEY}"
      }
    }
  }
}

Then restart Claude Desktop to load the MCP server.

Available MCP Tools

  • lookup-syntax - Exact match on APL syntax

    Example: lookup-syntax "⍳10"
    
  • search - Substring search across syntax, description, and keywords

    Example: search "matrix" limit=10
    
  • keywords-for - Get keywords for a specific syntax

    Example: keywords-for "∘.≤⍨∘⍳"
    
  • semantic-search - Natural language search using embeddings

    Example: semantic-search "how to split a string on a separator"
    

Standalone Search Tool

You can also use the semantic search functionality directly:

# Interactive mode
uv run python search_embeddings.py

# Single query
uv run python search_embeddings.py "find the largest number"

# JSON output
uv run python search_embeddings.py "reverse an array" --json

# More results
uv run python search_embeddings.py "matrix operations" -k 10

Interactive mode commands:

  • Type your query and press Enter to search
  • Type quit, exit, or q to exit (or Ctrl+D or Ctrl+C)

Configuration

Environment Variables

  • OPENAI_API_KEY - Required for semantic search functionality
  • APLCART_USE_DB - Set to 1, true, or yes to use SQLite database backend

File Structure

ac-mcp/
├── aplcart.jsonl           # Converted APLCart data (run aplcart2json.py to generate)
├── aplcart.db              # SQLite database (optional)
├── aplcart.index           # FAISS embeddings index (run generate_embeddings.py to generate)
├── aplcart_metadata.pkl    # Metadata for semantic search (run generate_embeddings.py to generate)
├── aplcart2json.py         # Converter script
├── generate_embeddings.py  # Embedding generator
├── aplcart_mcp_semantic.py # MCP server with semantic search
├── search_embeddings.py    # Standalone search tool
└── pyproject.toml          # Project dependencies

About APLCart

APLCart is a searchable collection of APL idioms and expressions maintained at https://aplcart.info/

License

This project is licensed under the MIT License - see the LICENSE file for details.

Note: The APLCart data itself is subject to its own licensing terms.

Tools (4)

lookup-syntaxExact match on APL syntax
searchSubstring search across syntax, description, and keywords
keywords-forGet keywords for a specific syntax
semantic-searchNatural language search using embeddings

Environment Variables

OPENAI_API_KEYrequiredRequired for semantic search functionality
APLCART_USE_DBSet to 1, true, or yes to use SQLite database backend

Configuration

claude_desktop_config.json
{"mcpServers": {"aplcart": {"command": "uv", "args": ["run", "--directory", "YOUR/PATH/HERE/ac-mcp", "python", "aplcart_mcp_semantic.py"], "env": {"APLCART_USE_DB": "1", "OPENAI_API_KEY": "${OPENAI_API_KEY}"}}}}

Try it

Find the APL syntax for matrix multiplication.
Search for APL expressions related to string splitting.
What are the keywords associated with the APL expression ∘.≤⍨∘⍳?
How do I perform a matrix transpose in APL?

Frequently Asked Questions

What are the key features of APLCart MCP Server?

Find APL expressions by exact syntax match. Search across syntax, descriptions, and keywords. Get keywords for specific APL expressions. Natural language queries using OpenAI embeddings.

What can I use APLCart MCP Server for?

Quickly looking up obscure APL syntax during development. Learning new APL idioms through natural language search. Integrating APL documentation directly into the Claude coding environment. Filtering APL expressions by keyword for specific programming tasks.

How do I install APLCart MCP Server?

Install APLCart MCP Server by running: git clone https://github.com/xpqz/ac-mcp && cd ac-mcp && uv sync

What MCP clients work with APLCart MCP Server?

APLCart MCP Server works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep APLCart MCP Server docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare