SpecProof
SpecProof: Search standards specs with MCP-ready precision.
我該用這個嗎
品質與安全性
發現項目(2)
- HIGH
- INFO在 get_spec_metadata 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"specproof-mcp": {
"url": "https://mcp.specproof.ai/"
}
}
}遠端端點
https://mcp.specproof.ai/streamable-http它能做什麼
工具清單
工具(17)
🟢get_spec_references(spec_number, reference_type)
Get all specifications referenced by a given spec. Args: spec_number: Specification number (e.g., "23.501", "26.230") reference_type: Filter by type - "normative", "informative", "inline" (optional)
輸入結構描述
{
"type": "object",
"properties": {
"spec_number": {
"title": "Spec Number",
"type": "string"
},
"reference_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reference Type"
}
},
"required": [
"spec_number"
],
"title": "get_spec_referencesArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_spec_referencesOutput"
}🟢get_spec_dependents(spec_number, max_results)
Get all specifications that reference a given spec (reverse lookup). Args: spec_number: Specification number to find dependents of max_results: Maximum results (default: 50)
輸入結構描述
{
"type": "object",
"properties": {
"spec_number": {
"title": "Spec Number",
"type": "string"
},
"max_results": {
"default": 50,
"title": "Max Results",
"type": "integer"
}
},
"required": [
"spec_number"
],
"title": "get_spec_dependentsArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_spec_dependentsOutput"
}🟢get_relationship_graph(spec_number, depth, reference_type)
Get a relationship graph centered on a specification, expanding N hops. Returns JSON with nodes and edges suitable for graph visualization. Each node includes title, series, working group, and reference counts. Each edge includes source, target, reference type, and count. Args: spec_number: Center specification number depth: Number of hops to expand (1-3, default: 1) reference_type: Filter by type - "normative", "informative" (optional)
輸入結構描述
{
"type": "object",
"properties": {
"spec_number": {
"title": "Spec Number",
"type": "string"
},
"depth": {
"default": 1,
"title": "Depth",
"type": "integer"
},
"reference_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Reference Type"
}
},
"required": [
"spec_number"
],
"title": "get_relationship_graphArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_relationship_graphOutput"
}🟢get_spec_metadata(spec_number, series, working_group, doc_class, limit)
Get enriched metadata for specifications with filtering. Args: spec_number: Filter by spec number (partial match) series: Filter by series (e.g., "26" for 26.xxx codecs) working_group: Filter by working group (e.g., "SA4") doc_class: Filter by document class - "TS" or "TR" limit: Maximum results (default: 50)
輸入結構描述
{
"type": "object",
"properties": {
"spec_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Spec Number"
},
"series": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Series"
},
"working_group": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Working Group"
},
"doc_class": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Doc Class"
},
"limit": {
"default": 50,
"title": "Limit",
"type": "integer"
}
},
"title": "get_spec_metadataArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_spec_metadataOutput"
}🟢get_most_referenced_specs(doc_type, series, limit)
Get the most referenced (most important) specifications ranked by incoming reference count. Args: doc_type: Filter by "3gpp" or "ietf" series: Filter by series number limit: Maximum results (default: 20)
輸入結構描述
{
"type": "object",
"properties": {
"doc_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Doc Type"
},
"series": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Series"
},
"limit": {
"default": 20,
"title": "Limit",
"type": "integer"
}
},
"title": "get_most_referenced_specsArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_most_referenced_specsOutput"
}🟢get_series_overview
Get an overview of all specification series with document counts, reference statistics, and working group assignments.
輸入結構描述
{
"type": "object",
"properties": {},
"title": "get_series_overviewArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_series_overviewOutput"
}🟢search_specifications(query, doc_type, spec_number, max_results)
Search across 3GPP, IETF, and Multimedia specification documents using full-text search. Args: query: Search query terms (required) doc_type: Filter by document type - "3gpp", "ietf", or "mpeg" (optional) spec_number: Filter by specification number (optional) max_results: Maximum number of results to return (default: 10, max: 50)
輸入結構描述
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"doc_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Doc Type"
},
"spec_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Spec Number"
},
"max_results": {
"default": 10,
"title": "Max Results",
"type": "integer"
}
},
"required": [
"query"
],
"title": "search_specificationsArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "search_specificationsOutput"
}🟢semantic_search(query, max_results, similarity_threshold, index_type)
Perform semantic search using vector embeddings with FAISS acceleration. Args: query: Natural language search query (required) max_results: Maximum number of results to return (default: 5, max: 20) similarity_threshold: Minimum similarity threshold 0.0-1.0 (default: 0.3) index_type: FAISS index type - "hnsw", "ivf", or "flat" (optional, auto-selected)
輸入結構描述
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"max_results": {
"default": 5,
"title": "Max Results",
"type": "integer"
},
"similarity_threshold": {
"default": 0.3,
"title": "Similarity Threshold",
"type": "number"
},
"index_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Index Type"
}
},
"required": [
"query"
],
"title": "semantic_searchArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "semantic_searchOutput"
}🟢get_document_content(filename, page_range, section)
Get specific content from a specification document. Args: filename: Document filename (required) page_range: Page range like "10-15" or single page "20" (optional) section: Section title filter (optional)
輸入結構描述
{
"type": "object",
"properties": {
"filename": {
"title": "Filename",
"type": "string"
},
"page_range": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Page Range"
},
"section": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Section"
}
},
"required": [
"filename"
],
"title": "get_document_contentArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_document_contentOutput"
}🟢list_documents(doc_type, search_pattern, limit)
List available specification documents. Args: doc_type: Filter by document type - "3gpp", "ietf", or "mpeg" (optional) search_pattern: Search pattern for spec number or title (optional) limit: Maximum number of results (default: 20, max: 100)
輸入結構描述
{
"type": "object",
"properties": {
"doc_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Doc Type"
},
"search_pattern": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Search Pattern"
},
"limit": {
"default": 20,
"title": "Limit",
"type": "integer"
}
},
"title": "list_documentsArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "list_documentsOutput"
}🟢get_requirements(spec_number, obligation, search, limit)
List normative requirements (RFC 2119 / BCP 14 "shall/should/may" statements) extracted from specifications, each cited back to its source clause. Args: spec_number: Filter by spec number, e.g. "23.501" or "RFC 9110" (optional) obligation: Filter by strength - "must", "must_not", "should", "should_not", or "may" (optional) search: Keyword to search within the requirement text (optional) limit: Maximum number of requirements to return (default: 30, max: 100)
輸入結構描述
{
"type": "object",
"properties": {
"spec_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Spec Number"
},
"obligation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Obligation"
},
"search": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Search"
},
"limit": {
"default": 30,
"title": "Limit",
"type": "integer"
}
},
"title": "get_requirementsArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_requirementsOutput"
}🟢generate_tests(requirement_id, target)
Generate a cited, runnable conformance test that verifies one normative requirement. The test is grounded in the requirement sentence plus its surrounding clause from the corpus, and every test cites the spec, section and page it enforces. If the requirement is not testable (boilerplate, scope text), the generator abstains rather than inventing a test. Args: requirement_id: The requirement's id, as shown by get_requirements target: "pytest" for a runnable Python test module, or "gherkin" for a reviewable .feature file (default: pytest)
輸入結構描述
{
"type": "object",
"properties": {
"requirement_id": {
"title": "Requirement Id",
"type": "integer"
},
"target": {
"default": "pytest",
"title": "Target",
"type": "string"
}
},
"required": [
"requirement_id"
],
"title": "generate_testsArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "generate_testsOutput"
}🟢diff_spec_versions(spec_base, from_version, to_version, obligation, limit)
Diff two versions of a specification at the NORMATIVE level: which requirements were added, removed, or reworded. Not a textual diff — a clause that merely moved page or was recased counts as unchanged. Args: spec_base: Spec identity without the version, e.g. "38331" or "23501" from_version: Older version label, e.g. "j20" (default: the second-newest in the corpus) to_version: Newer version label, e.g. "j30" (default: the newest in the corpus) obligation: Only report changes at this strength — "must", "must_not", "should", "should_not", "may" limit: Max requirements to list per bucket (default: 25)
輸入結構描述
{
"type": "object",
"properties": {
"spec_base": {
"title": "Spec Base",
"type": "string"
},
"from_version": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "From Version"
},
"to_version": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "To Version"
},
"obligation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Obligation"
},
"limit": {
"default": 25,
"title": "Limit",
"type": "integer"
}
},
"required": [
"spec_base"
],
"title": "diff_spec_versionsArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "diff_spec_versionsOutput"
}🟢get_schema_definitions(name, spec_number, kind, limit)
Look up formal, machine-checkable structure defined in the specifications: ASN.1 types (3GPP RRC/NAS message grammars) and JSON Schema / OpenAPI models (5G Service Based Interfaces). Prefer this over prose search when the question is about a message's *structure* — field names, types, ranges, optionality. The definition is returned verbatim from the spec, so it is exact rather than recalled. Args: name: Type or schema name, e.g. "RRCSetup", "MeasConfig", "SmContextCreateData" spec_number: Restrict to a spec, e.g. "38.331" kind: "asn1", "openapi" or "json_schema" limit: Maximum definitions to return (default: 10, max: 25)
輸入結構描述
{
"type": "object",
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"spec_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Spec Number"
},
"kind": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Kind"
},
"limit": {
"default": 10,
"title": "Limit",
"type": "integer"
}
},
"title": "get_schema_definitionsArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_schema_definitionsOutput"
}🟢get_rfc_lineage(rfc)
An RFC's revision history. RFCs are immutable — an RFC is never revised, it is obsoleted or updated by a *different* RFC — so this Obsoletes/Updates graph, not a version diff, IS its change history. Use it to find out whether an RFC you depend on has been superseded. Args: rfc: The RFC, e.g. "7231", "rfc7231" or "RFC 7231"
輸入結構描述
{
"type": "object",
"properties": {
"rfc": {
"title": "Rfc",
"type": "string"
}
},
"required": [
"rfc"
],
"title": "get_rfc_lineageArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_rfc_lineageOutput"
}🟢build_cross_spec_suite(spec_base, keyword, include_references, limit)
Assemble the normative requirements for one procedure across a spec AND the specs it normatively references — a procedure like registration or handover is never described in a single document. Returns a cited suite plan; feed the requirement_ids to generate_tests. Args: spec_base: The anchor spec, e.g. "23502" or "38331" keyword: The procedure/topic, e.g. "registration", "handover", "authentication" include_references: Also pull matching clauses from specs this one references (default: True) limit: Max requirements in the plan (default: 20, max: 50)
輸入結構描述
{
"type": "object",
"properties": {
"spec_base": {
"title": "Spec Base",
"type": "string"
},
"keyword": {
"title": "Keyword",
"type": "string"
},
"include_references": {
"default": true,
"title": "Include References",
"type": "boolean"
},
"limit": {
"default": 20,
"title": "Limit",
"type": "integer"
}
},
"required": [
"spec_base",
"keyword"
],
"title": "build_cross_spec_suiteArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "build_cross_spec_suiteOutput"
}🟢get_database_stats
Get comprehensive database and system statistics.
輸入結構描述
{
"type": "object",
"properties": {},
"title": "get_database_statsArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_database_statsOutput"
}建議的提示詞
search_specificationssearch_specificationsget_spec_referencesget_spec_referenceslist_documents社群
證據