---
title: "MCP server"
type: "docs-mcp"
canonical_url: "https://www.graphcanon.com/docs/mcp"
---

# GraphCanon MCP server

_Read-only Model Context Protocol server for querying the knowledge graph._

## Overview

GraphCanon exposes a read-only Model Context Protocol (MCP) server so agents can query the knowledge graph at runtime without scraping HTML.

Endpoint: https://www.graphcanon.com/api/mcp (Streamable HTTP, JSON-RPC 2.0). No API key is required for normal use - optional Bearer keys raise hourly limits (see Auth below).

The server is tools-only (no prompts or resources). Responses are JSON text inside standard MCP tool result envelopes.

## General

Clients that support remote Streamable HTTP can connect directly with the URL above.

After connecting, run the MCP lifecycle: initialize → notifications/initialized → tools/list or tools/call.

Legacy clients without remote MCP can use mcp-remote as a stdio bridge (see below).

### Streamable HTTP (Cursor, Claude Code, recent clients)

```json
{
  "mcpServers": {
    "graphcanon": {
      "url": "https://www.graphcanon.com/api/mcp"
    }
  }
}
```

## Cursor

One-click install (Streamable HTTP) or paste the JSON config into Cursor MCP settings.

Install link: cursor://anysphere.cursor-deeplink/mcp/install?name=GraphCanon&config=eyJ1cmwiOiJodHRwczovL3d3dy5ncmFwaGNhbm9uLmNvbS9hcGkvbWNwIn0=

```json
{
  "mcpServers": {
    "graphcanon": {
      "url": "https://www.graphcanon.com/api/mcp"
    }
  }
}
```

## Claude Code

Register the server from your terminal, then run /mcp in a session to complete any client-specific steps.

```json
claude mcp add --transport http graphcanon https://www.graphcanon.com/api/mcp
```

## Claude Desktop & VS Code

When Streamable HTTP is unavailable, proxy through mcp-remote (stdio command that speaks HTTP to our endpoint).

```json
{
  "mcpServers": {
    "graphcanon": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://www.graphcanon.com/api/mcp"]
    }
  }
}
```

## Windsurf & Zed

Same mcp-remote pattern as Claude Desktop - add a custom MCP server with command npx.

```json
{
  "mcpServers": {
    "graphcanon": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://www.graphcanon.com/api/mcp"]
    }
  }
}
```

## Tools

9 tools mirror the open REST API. Prefer resolve_by_constraints when you need hard filters; use search_tools for exploratory text search.

- search_tools - Ranked full-text search over the graph. Use when: Exploratory queries when you do not know exact slugs.
- get_tool - Full tool detail by slug (owner-repo). Use when: You already have a slug from search or a URL.
- list_categories - Canonical categories with tool counts. Use when: Browse taxonomy or pick a category slug for filters.
- get_alternatives - Typed alternative/successor edges plus category neighbours. Use when: "What else can I use instead of X?"
- get_graph - Walk edges and category neighbours from one tool. Use when: Traverse integrations, alternatives, and related tools.
- get_trust_report - Maintenance, provenance, and dependency scan summary. Use when: Stack decisions that need freshness and advisory context.
- get_compatibility - README-sourced IDE/runtime/framework compatibility claims. Use when: Check whether a tool claims Cursor, VS Code, LangChain, etc.
- compare_tools - Side-by-side details for two slugs. Use when: Head-to-head evaluation of two known tools.
- resolve_by_constraints - Hard constraint filter (license, deploy, docker, MCP, stars, …). Use when: Satisfiability filtering - not semantic search. Pair with search_tools for discovery.

## REST & markdown twins

Every MCP tool has a REST equivalent under /api/graphcanon/*. Agents can also fetch .md twins (append .md to any page URL) or read /llms.txt for a curated index.

OpenAPI: /api/graphcanon/openapi.json. Discovery index: GET /api/graphcanon.

## Auth & rate limits

Anonymous access is open. Middleware applies a generous hourly limit per IP on /api/graphcanon and /api/mcp.

Optional API keys (prefix gc_) raise limits. Create keys while signed in via POST /api/graphcanon/keys, then send Authorization: Bearer <key> on REST or MCP requests.

Signed-in users manage keys on /account.

## FAQ

- Auth: optional API keys for higher limits; anonymous access remains available under fair use.
- Rate limits: 120 requests/hour per IP by default; key tier sets a higher hourly cap.
- SSE: our server disables legacy SSE; Streamable HTTP POST is the supported path.
- Accept header: some raw HTTP clients must send Accept: application/json, text/event-stream.
- Verify deploy: npm run smoke:mcp --prefix apps/graphcanon (from the monorepo).

## Common questions

### Does GraphCanon MCP support Streamable HTTP?

Yes. Connect to https://www.graphcanon.com/api/mcp with a Streamable HTTP-capable client.

### Do I need an API key?

No for normal use. Optional gc_ keys from /account raise hourly limits when you send Authorization: Bearer <key>.

### Which tool should I use for 'self-hosted vector DB with MIT license'?

resolve_by_constraints with category, license, and deploy filters - not search_tools.

### Where is the full agent documentation index?

https://www.graphcanon.com/docs lists all guides with search.

---

**Machine-readable endpoints**

- JSON: [`/api/mcp`](/api/mcp)
- LLM index: [/llms.txt](/llms.txt)
- Full corpus: [/llms-full.txt](/llms-full.txt)

_GraphCanon - The knowledge graph for AI development. https://www.graphcanon.com/_
