MCP 服务器

tclp-mcp

io.github.thechancerylaneproject/tclp-mcp
知识与文档 法律与合规 公开且可连接 MCP 2025-11-25

此 MCP 可以做什么

Searches and filters The Chancery Lane Project's climate-aligned contract clauses, guides, legal references, and taxonomy.

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.
只读 可访问外部资源
输入模式
{'type': 'object', 'title': 'entity_lookupArguments', 'required': ['name'], 'properties': {'name': {'type': 'string', 'title': 'Name'}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 10}, 'include_full_text': {'type': 'boolean', 'title': 'Include Full Text', 'default': False}}}
输出模式
{'type': 'object', '$defs': {'_EntityHit': {'type': 'object', 'title': '_EntityHit', 'properties': {'id': {'type': 'string', 'title': 'Id'}, 'url': {'type': 'string', 'title': 'Url'}, 'ranks': {'$ref': '#/$defs/_SearchRanks'}, 'title': {'type': 'string', 'title': 'Title'}, 'scores': {'$ref': '#/$defs/_SearchScores'}, 'full_text': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Full Text'}, 'content_type': {'type': 'string', 'title': 'Content Type'}, 'relationships': {'anyOf': [{'type': 'array', 'items': {'$ref': '#/$defs/_Relationship'}}, {'type': 'null'}], 'title': 'Relationships'}, 'entity_matches': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Entity Matches'}}}, '_SearchMeta': {'type': 'object', 'title': '_SearchMeta', 'properties': {'took_ms': {'type': 'integer', 'title': 'Took Ms'}, 'degraded': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Degraded'}, 'request_id': {'type': 'string', 'title': 'Request Id'}, 'text_total': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Text Total'}, 'graph_total': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Graph Total'}, 'total_available': {'type': 'integer', 'title': 'Total Available'}}}, '_SearchRanks': {'type': 'object', 'title': '_SearchRanks', 'properties': {'bm25': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Bm25'}, 'graph': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Graph'}, 'combined': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Combined'}}}, '_Relationship': {'type': 'object', 'title': '_Relationship', 'required': ['path_types', 'target_id', 'target_label', 'target_name', 'target_url'], 'properties': {'target_id': {'type': 'string', 'title': 'Target Id'}, 'path_types': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Path Types'}, 'target_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Target Url'}, 'target_name': {'type': 'string', 'title': 'Target Name'}, 'target_label': {'type': 'string', 'title': 'Target Label'}}}, '_SearchScores': {'type': 'object', 'title': '_SearchScores', 'properties': {'bm25': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Bm25'}, 'graph': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Graph'}}}}, 'title': 'EntityLookupResult', 'required': ['meta', 'results'], 'properties': {'meta': {'$ref': '#/$defs/_SearchMeta'}, 'results': {'type': 'array', 'items': {'$ref': '#/$defs/_EntityHit'}, 'title': 'Results'}}}
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).
只读 可访问外部资源
输入模式
{'type': 'object', 'title': 'searchArguments', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit', 'default': 10}, 'query': {'type': 'string', 'title': 'Query'}, 'rerank': {'type': 'boolean', 'title': 'Rerank', 'default': True}, 'node_type': {'type': 'string', 'title': 'Node Type', 'default': 'all'}, 'include_full_text': {'type': 'boolean', 'title': 'Include Full Text', 'default': False}}}
输出模式
{'type': 'object', '$defs': {'_SearchHit': {'type': 'object', 'title': '_SearchHit', 'properties': {'id': {'type': 'string', 'title': 'Id'}, 'url': {'type': 'string', 'title': 'Url'}, 'ranks': {'$ref': '#/$defs/_SearchRanks'}, 'title': {'type': 'string', 'title': 'Title'}, 'scores': {'$ref': '#/$defs/_SearchScores'}, 'full_text': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Full Text'}, 'content_type': {'type': 'string', 'title': 'Content Type'}, 'entity_matches': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Entity Matches'}, 'relationships_text': {'type': 'string', 'title': 'Relationships Text'}}}, '_SearchMeta': {'type': 'object', 'title': '_SearchMeta', 'properties': {'took_ms': {'type': 'integer', 'title': 'Took Ms'}, 'degraded': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Degraded'}, 'request_id': {'type': 'string', 'title': 'Request Id'}, 'text_total': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Text Total'}, 'graph_total': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Graph Total'}, 'total_available': {'type': 'integer', 'title': 'Total Available'}}}, '_SearchRanks': {'type': 'object', 'title': '_SearchRanks', 'properties': {'bm25': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Bm25'}, 'graph': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Graph'}, 'combined': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Combined'}}}, '_SearchScores': {'type': 'object', 'title': '_SearchScores', 'properties': {'bm25': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Bm25'}, 'graph': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Graph'}}}}, 'title': 'SearchResult', 'required': ['meta', 'results'], 'properties': {'meta': {'$ref': '#/$defs/_SearchMeta'}, 'results': {'type': 'array', 'items': {'$ref': '#/$defs/_SearchHit'}, 'title': 'Results'}}}
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).
只读 可访问外部资源
输入模式
{'type': 'object', 'title': 'taxonomy_contentArguments', 'required': ['filters'], 'properties': {'sort': {'type': 'string', 'title': 'Sort', 'default': 'title'}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 25}, 'scope': {'type': 'string', 'title': 'Scope', 'default': 'all'}, 'offset': {'type': 'integer', 'title': 'Offset', 'default': 0}, 'filters': {'type': 'object', 'title': 'Filters', 'additionalProperties': {'type': 'string'}}}}
输出模式
{'type': 'object', '$defs': {'_TaxonomyContentHit': {'type': 'object', 'title': '_TaxonomyContentHit', 'properties': {'id': {'type': 'string', 'title': 'Id'}, 'url': {'type': 'string', 'title': 'Url'}, 'title': {'type': 'string', 'title': 'Title'}, 'facets': {'type': 'object', 'title': 'Facets', 'additionalProperties': {'type': 'array', 'items': {'type': 'string'}}}, 'content_type': {'type': 'string', 'title': 'Content Type'}, 'date_modified': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Date Modified'}, 'date_published': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Date Published'}}}, '_TaxonomyContentMeta': {'type': 'object', 'title': '_TaxonomyContentMeta', 'required': ['total_available', 'took_ms', 'request_id', 'scope', 'filters'], 'properties': {'scope': {'type': 'string', 'title': 'Scope'}, 'filters': {'type': 'object', 'title': 'Filters', 'additionalProperties': {'type': 'string'}}, 'took_ms': {'type': 'integer', 'title': 'Took Ms'}, 'request_id': {'type': 'string', 'title': 'Request Id'}, 'total_available': {'type': 'integer', 'title': 'Total Available'}}}}, 'title': 'TaxonomyContentResult', 'required': ['meta', 'results'], 'properties': {'meta': {'$ref': '#/$defs/_TaxonomyContentMeta'}, 'results': {'type': 'array', 'items': {'$ref': '#/$defs/_TaxonomyContentHit'}, 'title': 'Results'}}}
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).
只读 可访问外部资源
输入模式
{'type': 'object', 'title': 'taxonomy_facetsArguments', 'properties': {'scope': {'type': 'string', 'title': 'Scope', 'default': 'all'}}}
输出模式
{'type': 'object', '$defs': {'_TaxonomyFacet': {'type': 'object', 'title': '_TaxonomyFacet', 'required': ['name', 'applies_to', 'values'], 'properties': {'name': {'type': 'string', 'title': 'Name'}, 'values': {'type': 'array', 'items': {'$ref': '#/$defs/_TaxonomyFacetValue'}, 'title': 'Values'}, 'applies_to': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Applies To'}}}, '_TaxonomyFacetValue': {'type': 'object', 'title': '_TaxonomyFacetValue', 'required': ['slug', 'count'], 'properties': {'slug': {'type': 'string', 'title': 'Slug'}, 'count': {'type': 'integer', 'title': 'Count'}}}, '_TaxonomyFacetsMeta': {'type': 'object', 'title': '_TaxonomyFacetsMeta', 'required': ['took_ms', 'request_id'], 'properties': {'took_ms': {'type': 'integer', 'title': 'Took Ms'}, 'request_id': {'type': 'string', 'title': 'Request Id'}}}}, 'title': 'TaxonomyFacetsResult', 'required': ['meta', 'facets'], 'properties': {'meta': {'$ref': '#/$defs/_TaxonomyFacetsMeta'}, 'facets': {'type': 'array', 'items': {'$ref': '#/$defs/_TaxonomyFacet'}, 'title': 'Facets'}}}
已添加
taxonomy_content
2026年9月17日 12:52
已添加
taxonomy_facets
2026年9月17日 12:52
已添加
entity_lookup
2026年9月17日 12:52
已添加
search
2026年9月17日 12:52