一个强大的工具,用于分析 Rust JSON 文档,提取实体和语义关系,并通过本地 SQLite 知识图谱进行高级分析,集成 FastMCP 2.0。无缝连接您的 Rust 文档到像 Claude 这样的大语言模型(LLMs),通过模型上下文协议。
要分析您的 Rust 项目,您需要先生成 JSON 文档。请参阅 Rustdoc JSON 指南,了解如何从您的 Rust 项目生成所需的 JSON 文件。
克隆仓库
git clone https://github.com/yourusername/mcp-py-json-doc.git
cd mcp-py-json-doc
设置虚拟环境(推荐):
# 创建并激活虚拟环境
python -m venv venv
source venv/bin/activate # Linux/Mac
# .\venv\Scripts\activate # Windows
安装依赖项 使用 uv(比 pip 更快):
uv pip install -e .
对于开发,安装额外的依赖项:
uv pip install -e ".[dev]"
要将 Rust 文档 JSON 文件导入知识图谱,请使用以下命令:
uv run python -m src.main <json文件路径> -o 输出目录 [选项]
<json文件路径>:指向 Rust 文档 JSON 文件的路径(必需)-o, --output:存储知识图谱数据库的输出目录(默认:output)--verbose, -v:启用调试的详细日志--no-kg:跳过加载数据到知识图谱(用于测试)--no-progress:禁用进度条基本用法(导入单个文件):
uv run python -m src.main doc/serde.json -o output
带有详细输出的导入:
uv run python -m src.main doc/tokio.json -o output --verbose
导入多个文件(依次运行命令):
uv run python -m src.main doc/serde.json -o output && \
uv run python -m src.main doc/tokio.json -o output
该命令将在指定的输出目录中创建以下文件:
knowledge_graph.db:包含所有实体和关系的 SQLite 数据库analysis_results.json:导入过程的概要full_analysis.json:导入文档的详细分析导入后,您可以使用交互式浏览器验证知识图谱的内容:
python explore_kg.py output/knowledge_graph.db
这将启动一个交互式 shell,您可以在其中查询导入的数据。
首先,将 Rust 文档导入知识图谱:
uv run python -m src.main rust_docs.json路径 -o 输出目录
您可以以两种不同的传输模式运行 MCP 服务器:
PYTHONPATH=. python -c "from src.mcp_server.server import main; main()" --kg-db 输出目录/knowledge_graph.db --transport stdio
此模式适用于与 Claude Desktop、Anthropic API 或其他兼容 MCP 的 LLM 客户端集成。
PYTHONPATH=. python -c "from src.mcp_server.server import main; main()" --kg-db 输出目录/knowledge_graph.db --transport http --host 0.0.0.0 --port 8000
此模式提供 REST API 接口,用于测试或与 Web 应用程序集成。
MCP 服务器与支持 Model Context Protocol 的应用程序和平台生态系统兼容:
大多数 MCP 客户端可以通过向各自的配置文件添加服务器详情来配置。常见位置包括:
~/.config/mcp/config.json.codeium/windsurf/mcp_config.json.kiro/settings/mcp.json有关详细设置说明,请参阅客户端文档中的 MCP 集成部分。
要使用此服务器与任何兼容 MCP 的客户端(如 Codeium、Claude 或自定义客户端)配合使用,请在 MCP 客户端的配置文件(通常是 mcp_config.json 或类似名称)中添加以下配置:
{
"mcpServers": {
"rust-docs": {
"command": "/path/to/your/venv/bin/python",
"args": [
"/path/to/mcp-py-json-doc/run_mcp_server.py",
"--kg-db",
"/path/to/mcp-py-json-doc/output/knowledge_graph.db",
"--transport",
"stdio"
]
}
}
}
{
"mcpServers": {
"rust-docs": {
"command": "/home/username/mcp-py-json-doc/.venv/bin/python",
"args": [
"/home/username/mcp-py-json-doc/run_mcp_server.py",
"--kg-db",
"/home/username/mcp-py-json-doc/output/knowledge_graph.db",
"--transport",
"stdio"
]
}
}
}
rust-docs 提供给 MCP 客户端以下工具可通过 MCP 服务器接口获得,使强大的代码分析和文档检索成为可能:
在 Rust 文档中搜索实体(函数、结构体、特征等)。
参数:
query:与实体名称匹配的搜索词entity_type:(可选)按类型过滤(functions、structs、traits、impls、enums、constants、modules)limit:返回的最大结果数(默认:10)示例:
{
"query": "Serialize",
"entity_type": "trait",
"limit": 5
}
获取特定实体的全面信息,包括其文档、属性和关系。
参数:
entity_id:实体的完全限定名(例如,serde::ser::Serialize)示例:
{
"entity_id": "serde::ser::Serialize"
}
发现与指定实体有关系的实体,如实现、定义或依赖。
参数:
entity_id:源实体的 IDrelation_type:(可选)关系类型(implements、defines、contains、depends_on)depth:遍历的关系层级数(默认:1)示例:
{
"entity_id": "serde::ser::Serialize",
"relation_type": "implements",
"depth": 2
}
分析特定特征在整个代码库中的实现情况,包括所有实现类型及其位置。
参数:
trait_name:要分析的特征名称示例:
{
"trait_name": "serde::ser::Serialize"
}
获取模块的层次结构,展示不同级别的代码组织情况。
参数:
module_name:(可选)要检查的具体模块名称。如果未提供,则返回完整的模块层次结构。示例:
{
"module_name": "serde"
}
在文档中执行语义搜索,包括函数/方法文档和内联代码注释。
参数:
query:搜索查询字符串include_code_examples:(可选)是否在搜索结果中包含代码示例(默认:false)示例:
{
"query": "serialization",
"include_code_examples": true
}
获取关于知识图谱的统计数据和指标,包括实体数量、关系类型和数据库指标。
参数: 无
示例:
{}
mcp-py-json-doc/
├── src/
│ ├── mcp_server/
│ │ ├── __init__.py
│ │ ├── server.py # FastAPI 服务器实现
│ │ ├── handlers.py # 请求处理器
│ │ ├── tools.py # 工具定义
│ │ └── models.py # 数据模型
│ └── native_kg/ # 知识图谱实现
├── tests/ # 测试文件
├── pyproject.toml # 项目配置
└── README.md # 本文档
欢迎贡献!请随意提交拉取请求。
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)本项目采用 MIT 许可证 - 详情见 LICENSE 文件。
本项目使用 FastMCP 2.0 来实现 Model Context Protocol (MCP),为 LLM 与 Rust 文档交互提供标准化方式。
FastMCP 2.0 相比官方 MCP SDK 具有以下优势: