MCP Servers

Model Context Protocol servers available in the ai-platform ecosystem
Published

September 13, 2026

Model Context Protocol (MCP) servers extend Cursor agents with domain-specific tools and resources. They are registered in ~/.cursor/mcp.json and are available in every Cursor conversation.


Registered MCP Servers

Canonical register: platform/registry/mcp/*/mcp.yaml. Source of truth for agents is that directory (plus Cursor ~/.cursor/mcp.json for IDE wiring).

Server Port / Location Purpose
famulus-mcp (gateway) platform/mcp-server · streamable HTTP :5090 · launchd com.ai-platform.mcp-gateway The one entry of every client: live catalog, mcp_find, mcp_call, pinned tools; see Famulus MCP
ai-catalog registry/mcp/ai-catalog/ · stdio Project catalog queries (ports, machines, git status)
lwgrammar Port 5116 · http://127.0.0.1:5116/mcp · registry/mcp/lwgrammar/ Central language hub (dictionary, lector, rules, situate/gate)
famulus-reference Port 5135 · http://127.0.0.1:5135/mcp · registry/mcp/famulus-reference/ · pdai/famulus-reference Famulus reference over the DuckLake: items by fr: address, citations, traces, grounding, read-only SQL; harvest routes
korrespondenz registry/mcp/korrespondenz/ · stdio · apps/privatkanzlei Private correspondence (PrivatKanzlei)
lettre-pdai registry/mcp/lettre-pdai/ · stdio PDAI pipeline — OCR, figures, entities, structure tagging
mcp-apple-dev registry/mcp/mcp-apple-dev/ · apps/ai-applevoicerecorder/mcp-apple-dev iOS/macOS — Xcode, TestFlight, simulator, Swift packages
cursor-ide-browser Built-in · registry/mcp/cursor-ide-browser/ Browser automation and web testing
cursor-app-control Built-in (Cursor) Control Cursor IDE (move root, create project)

ai-catalog

The ai-catalog MCP server indexes all projects across the three domain catalogs (~/ai-mac-studio/agents/index.duckdb, ~/ai-mac-studio/scholarly/index.duckdb, ~/ai-mac-studio/publication/index.duckdb) and exposes them as queryable tools.

NoteClient machines

~/ai-mac-studio exists only on mac-studio. Client machines (e.g. openscience) use ~/ai-openscience, a Syncthing mirror of the same tree; substitute that prefix in the paths on this page.

Tools

Tool Parameters Description
stats — Total project count and size per domain
list_categories folder List categories and project counts within a domain
find_project name, folder? Search for a project by name across all domains
query_projects folder, sql Run arbitrary SELECT on the projects table

DuckDB Schema

CREATE TABLE projects (
    name        VARCHAR,   -- package name (e.g. "ai-scholar")
    category    VARCHAR,   -- category (e.g. "document-processing")
    path        VARCHAR,   -- absolute resolved path
    size_kb     BIGINT,    -- directory size in KB
    description VARCHAR,   -- extracted from README.md
    last_commit VARCHAR,   -- most recent git commit hash
    git_remote  VARCHAR,   -- git remote URL
    indexed_at  VARCHAR    -- ISO timestamp of last indexing
);

Example Queries

# Domain overview
stats()

# All infrastructure packages sorted by size
query_projects(
    folder="ai-agents",
    sql="SELECT name, size_kb FROM projects WHERE category='infrastructure' ORDER BY size_kb DESC"
)

# Largest research projects
query_projects(
    folder="ai-scholarly",
    sql="SELECT name, category, size_kb FROM projects ORDER BY size_kb DESC LIMIT 10"
)

# Find a specific project
find_project(name="ai-korrespondenz")

# All projects with a web server (approximation: has a port in description)
query_projects(
    folder="ai-agents",
    sql="SELECT name, category, description FROM projects WHERE description LIKE '%Port%'"
)

Keeping the Catalog Fresh

The catalog is re-indexed by running:

python3 ~/ai-mac-studio/agents/index_catalog.py          # all three domains
python3 ~/ai-mac-studio/agents/index_catalog.py --folder ai-agents
python3 ~/ai-mac-studio/agents/index_catalog.py --folder ai-scholarly

This script scans each domain directory, extracts metadata from pyproject.toml/README.md, reads git history, and writes to the three .duckdb files.


cursor-app-control

Built-in MCP server that controls the Cursor IDE itself.

Tool Description
move_agent_to_root Change the current agent’s workspace root directory
create_project Create a directory with git init and move to it

Use case: After creating a git worktree or a new project, call move_agent_to_root to continue working in the new directory without opening a new Cursor window.


cursor-ide-browser

Built-in MCP server for browser automation and web testing.

Tool Description
browser_navigate Navigate to a URL
browser_snapshot Get current page structure (ARIA snapshot + refs)
browser_take_screenshot Capture viewport screenshot
browser_click Click an element by ref
browser_fill Fill an input field
browser_scroll Scroll the page
browser_tabs List/manage open tabs
browser_console_messages Read browser console output
browser_network_requests Inspect network requests

Use for: Testing web UIs after changes; verifying service health; form interactions.

Key rule: Always call browser_snapshot before interactions to get current refs. Never reuse refs from an older snapshot after page changes.



ai-platform-mcp

Top-level orchestrator (proxied_via: ~). Multiplexes to korrespondenz, lettre-pdai, lwgrammar, ai-catalog, cursor-ide-browser, and related servers.

Tool Description
list_agents / get_agent Registry agents
list_skills / get_skill Registry skills
list_instructions / render_instruction Instruction templates
mcp_catalog / mcp_find / mcp_describe Tree, search and full description of every backend tool
mcp_call / mcp_refresh Forward a call to a backend; re-read the backends’ tool lists
list_projects / find_project / port_status Catalog / port status

Launch: python3.14 -m ai_platform_mcp with cwd platform/mcp-server.


lettre-pdai

PDAI document processing MCP (stdio, proxied via ai-platform-mcp).

Tool Description
process_document Full PDAI processing pipeline
ocr_document OCR
extract_figures Figure extraction
extract_entities Entity recognition
tag_structure Structure tagging
list_collections List collections
get_document Fetch a document

Register entry: platform/registry/mcp/lettre-pdai/mcp.yaml.


mcp-apple-dev

iOS/macOS development MCP (stdio, proxied via ai-platform-mcp). Lives under apps/ai-applevoicerecorder/mcp-apple-dev (Xcode workspace OpenScienceTechnology.xcworkspace).

Covers Xcode scheme management, TestFlight build status, simulator control, and Swift package operations. See platform/registry/mcp/mcp-apple-dev/mcp.yaml.


korrespondenz

Correspondence MCP for PrivatKanzlei (privat/privatkanzlei): launchd service com.privatkanzlei.korrespondenz-mcp on 127.0.0.1:5301 (one worker process per call, read-only archive for read tools), reached through the gateway as namespace korrespondenz.

Tool Description
send_letter Send / queue a letter
list_letters List letters
search_letters Search correspondence
get_letter Fetch one letter

lwgrammar

Streamable-HTTP language institution on port 5116 (GET /health, MCP at /mcp). Launchd: com.ai-platform.lwgrammar-mcp. Register: platform/registry/mcp/lwgrammar/mcp.yaml.

Core tools include lw_term, lw_usage_rules, lw_lector, lw_rule_conformity, lw_situate, lw_gate, and related lw_* dictionary/mode/cite helpers.

famulus-reference

Streamable-HTTP server on port 5135 (GET /health, MCP at /mcp; tailnet http://mac-studio.tail147011.ts.net:5135/mcp), proxied via ai-platform-mcp. Runs on mac-studio only, launchd com.ai-platform.famulus-reference-mcp; attaches the DuckLake read replica READ_ONLY. Register: platform/registry/mcp/famulus-reference/mcp.yaml. Route /famulus-reference is deploy: planned.

Tool Returns
fr_list_collections, fr_describe_collection collections; metadata, data source origin, identifiers, DTDs, counts
fr_get_dtd, fr_get_structure, fr_list_segments, fr_get_item, fr_get_sidecars DTD, structure, segments, single items, extension tables
fr_get_provenance provenance chain and source origin
fr_cite, fr_bibtex BibTeX, CSL-JSON, text citation; gaps reported, never filled
fr_trace validation and justification record of an item
fr_ground lexical grounding hits with fr: address, snippet, citation
fr_sql read-only SQL (guarded, max. 500 rows)
fr_snapshot_info, fr_trace_run lake snapshot; justification of a past answer by run_id

HTTP routes on the same port: /oai (OAI-PMH 2.0), /jsonld/<coll>, /iiif/<coll>/<doc>/manifest.json, /peers. Concept: Famulus reference.

Adding a New MCP Server

  1. Write the server using the MCP SDK (or FastMCP):

    from mcp.server.fastmcp import FastMCP
    mcp = FastMCP("my-server")
    
    @mcp.tool()
    def my_tool(query: str) -> str:
        """Tool description shown to agents."""
        return do_something(query)
    
    if __name__ == "__main__":
        mcp.run()
  2. Register in ~/.cursor/mcp.json:

    {
      "mcpServers": {
        "my-server": {
          "command": "uv",
          "args": ["run", "--project", "/path/to/project", "python", "-m", "my_module.mcp_server"]
        }
      }
    }
  3. Use patterns from ~/ai-mac-studio/platform/shared/mcp/ for consistency.

  4. Document the server here and in platform/AGENTS.md.


Last updated: 2026-09-13