
tclp-mcp
MCP server for The Chancery Lane Project's climate-aligned contract clause knowledge graph.
What it can do
What data it sees
Do you need an account
No: the server works without sign-in
MCP server for The Chancery Lane Project's climate-aligned contract clause knowledge graph.
How to connect
How to connect tclp-mcp to Claude
The server address to paste into Claude settings:
https://mcp.chancerylaneproject.org/mcp
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect tclp-mcp to ChatGPT
The server address to paste into ChatGPT settings:
https://mcp.chancerylaneproject.org/mcp
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect tclp-mcp to Cursor
The server address to paste into Cursor settings:
https://mcp.chancerylaneproject.org/mcp
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (4)
Raw names from tools/list. Only developers need these.
| search | Search the TCLP knowledge graph using fusion search (semantic + BM25). Args: query: Free-text search query (max 1000 characters). node_type: Content scope — "tclp" (clauses, glossary terms, guides), "lrsf" (laws, regulations, standards, frameworks), or "all". limit: Maximum number of results to return (1–50). rerank: Whether to apply RRF reranking when combining graph and text results. include_full_text: Include each hit's full body text (Markdown). Off by default — bodies are large; request only when you need the content, and prefer a small `limit` when you do. Returns: JSON with "meta" (totals, timing) and "results" (ranked hits with title, url, content_type, scores, and optionally relationships and full_text). |
| entity_lookup | Find TCLP content nodes (clauses, glossary terms) associated with a named concept. Unlike `search`, this performs a deterministic name match against Entity nodes in the knowledge graph rather than a relevance-ranked semantic search. Use it when you have a specific term or concept (e.g. "scope 3 emissions", "net zero") and want to retrieve every clause or glossary entry that explicitly references it. Args: name: The entity or concept name to look up (exact match, case-insensitive). limit: Maximum number of results to return (1–50). include_full_text: Include each hit's full body text (Markdown). Off by default — bodies are large; request only when you need the content, and prefer a small `limit` when you do. Returns: JSON with "meta" and "results" where each hit includes the source content node and the entity names that matched. |
| taxonomy_facets | List taxonomy facets and their value slugs across TCLP content. Facets are taxonomy categories like `sector`, `practice_area`, `application`, and `jurisdiction`. Each facet returns the list of slugs that actually appear on the graph, with counts. Use this to discover the vocabulary, then call `taxonomy_content` with chosen slugs. Args: scope: Which labels to include — `clause` (ClauseName only), `guide` (Guide only), or `all` (both, the default). Returns: JSON with "meta" and "facets". Each facet has `name`, `applies_to` (list of Neo4j labels carrying it), and `values` (list of `{slug, count}`, sorted by count desc). |
| taxonomy_content | List TCLP content (clauses, guides) filtered by taxonomy facet=value. Multi-facet filters are combined with AND. Call `taxonomy_facets` first to learn which facet names and slugs exist; using a name not in that list returns a 400. Args: filters: Mapping of facet name to value slug, e.g. `{"sector": "real-estate", "practice_area": "commercial"}`. Each facet may appear at most once. scope: `clause`, `guide`, or `all` (default). limit: Maximum results to return (1–100, default 25). offset: Result offset for paging (default 0). sort: `title`, `date_published_desc`, or `date_modified_desc`. Returns: JSON with "meta" (totals, scope, filters echoed back) and "results" (each hit has `id`, `url`, `title`, `content_type`, dates, and a `facets` map of all taxonomy arrays on the node). |