CodeKG MCP 服务器
使用说明(Markdown 格式)
-
项目简介
- CodeKG MCP 服务器将 CodeKG 的核心能力以 MCP 服务的形式对外暴露,核心功能包括资源读取与管理、工具注册与执行,以及 Prompt 模板的渲染与上下文包生成,方便 AI 客户端(如 Claude Code、Kilo Code、GitHub Copilot 等)通过 MCP 与后端进行交互。
-
主要功能点
- MCP 服务端:实现按 MCP 规范的请求/响应处理,提供对资源、工具、Prompts 的统一访问接口。
- 资源与数据能力:托管代码图的结构信息、查询结果、片段包等上下文数据,供 LLM 客户端获取参考。
- 工具注册与调用:LLM 客户端可通过 MCP 调用服务器暴露的工具,如查询代码库、打包片段、获取节点、分析仓库等。
- Prompt 与模板渲染:定义并渲染 Prompts,支持混合语义与结构化的交互方式,方便在 LLM 中嵌入上下文。
- 多传输协议支持:服务器端设计上支持包括 stdio、SSE、WebSocket 等传输,方便在不同环境中部署。
- 会话与能力声明:对会话进行管理,并暴露服务器能力信息,确保安全和可扩展性。
-
安装步骤
- 直接从该仓库获取:将代码下载或克隆到本地。
- 依赖安装:请在 Python 环境中安装必要依赖(仓库通常通过 Poetry/pip 安装,此处以实际项目为准)。
- MCP 服务器启动:运行 CodeKG 提供的 MCP 启动命令,例如通过代码行接口启动 MCP 服务器并指向目标代码仓库,以便服务器加载图数据并对外暴露 MCP 能力。
- 运行环境准备:
- 确保本地仓库中已经生成了图数据和向量索引所需的数据库文件(如 Graph(SQLite) + LanceDB 索引),以及 MCP 配置文件(若有)。
- 确保权限、端口、传输协议等配置已就绪,以便客户端能够正确连接。
-
服务器配置(供 MCP 客户端使用的配置信息示例) 说明:以下信息为 MCP 客户端配置示例,描述服务器名称、启动命令及参数等要点,实际使用时请将路径替换为你系统中的实际路径。
-
Per-repo 配置( Claude Code / Kilo Code 使用的 .mcp.json): { "mcpServers": { "codekg": { "command": "codekg", "args": ["mcp", "--repo", "/absolute/path/to/repo"] } } } 注释:command 指向 MCP 服务器的执行入口,args 为启动服务器所需的参数,--repo 指定需要分析的代码仓库路径。
-
Per-repo 配置( Claude Code / Kilo Code 继续使用的示例,与上类似): { "mcpServers": { "codekg": { "command": "codekg", "args": ["mcp", "--repo", "/absolute/path/to/repo"] } } }
-
Cline(全局设置,示例 cline_mcp_settings.json): { "mcpServers": { "codekg-my-repo": { "command": "/absolute/path/to/venv/bin/codekg-mcp", "args": ["--repo", "/absolute/path/to/repo"] } } }
-
Claude Desktop(macOS,示例 claude_desktop_config.json): { "mcpServers": { "codekg": { "command": "/absolute/path/to/venv/bin/codekg-mcp", "args": ["--repo", "/absolute/path/to/repo"] } } }
-
GitHub Copilot(.vscode/mcp.json,示例): { "servers": { "codekg": { "type": "stdio", "command": "/absolute/path/to/.venv/bin/codekg-mcp", "args": [ "--repo", "/absolute/path/to/repo", "--db", "/absolute/path/to/repo/.codekg/graph.sqlite", "--lancedb", "/absolute/path/to/repo/.codekg/lancedb" ] } } }
-
-
基本使用方法
- 启动 MCP 服务器后,客户端通过 JSON-RPC 请求调用以下工具:
- query_codebase(q, ...): 语义 + 结构混合查询
- pack_snippets(q, ...): 生成带有源代码片段的上下文包
- get_node(node_id): 获取指定节点信息
- graph_stats(): 获取图的统计信息
- callers(node_id): 精确的调用者查询
- explain(node_id): 自然语言解释节点
- analyze_repo(): 对仓库进行全面分析,输出 JSON 结果
- 客户端示例工作流程
- 向 MCP 发送请求,查询某一主题的节点
- 根据返回结果组装上下文信息,供 LLM 使用
- 如需查看资源或元信息,可调用 get_node / graph_stats 等工具
- 服务器与客户端的交互要求
- 客户端需能够通过配置文件正确定位到 MCP 服务器的地址、端口以及传输协议
- MCP 服务器端实现应在接收到请求后返回标准的 JSON-RPC 响应,包含请求的结果数据或错误信息
- 启动 MCP 服务器后,客户端通过 JSON-RPC 请求调用以下工具:
-
其他注意事项
- MCP 服务器端可能需要在启动时加载代码图及向量索引,确保相关数据库文件(如 Graph.sqlite、lancedb 索引)已经就绪。
- 为了安全性与稳定性,生产环境应考虑认证、授权、日志与监控等机制。
-
关键词 CodeKG, 语义检索, 静态分析, JSON-RPC, 知识图谱
-
分类ID 6