CodeKG MCP 服务器

使用说明

  • 项目简介
    • CodeKG MCP 服务器是 CodeKG 项目的一部分,实现了基于 MCP 的后端服务。它把代码知识图的资源与能力(资源读取、工具注册/执行、提示模板等)以统一的 JSON-RPC 接口对外暴露,方便 AI 代理(如 Claude、Copilot 等)在对话中查询代码信息、执行外部操作、渲染并获取提示模板,从而实现对代码库的上下文感知与辅助推理。
    • 服务器核心功能包括:资源管理与访问、工具注册与执行、Prompts(提示模板)的定义与渲染,以及对客户端的会话管理与能力声明。支持多种传输协议,方便在不同环境中与 LLM 客户端集成。
  • 主要功能点
    • MCP 工具集合(示例,可由 LLM 客户端调用并得到结构化响应):
      • query_codebase(q, …) — 进行语义 + 结构化混合检索,返回节点与关系信息。
      • pack_snippets(q, …) — 根据查询从代码库中提取源代码片段并打包为可直接用于提示的文本格式。
      • get_node(node_id) — 按节点 ID 获取具体节点信息。
      • graph_stats() — 提供图的节点/边统计信息,便于评估代码基线规模。
      • callers(node_id) — 精确的逆向搜索,找出所有调用目标节点的调用方。
      • analyze_repo() — 运行全量/完整分析,返回分析结果(JSON)。
    • 服务器行为
      • 读取并分析已建立的图与向量索引,提供只读的 MCP 通道。
      • 进行会话管理、能力声明与自描述能力协商,确保客户端清楚可用的操作集合。
      • 支持不同传输通道以适配各种 AI 客户端的需求(如在 IDE、云端代理等环境中使用)。
  • 安装步骤
    • 先在目标项目中准备好代码库并构建知识图:
      • 构建 SQLite 图数据库:把仓库中的 AST 解析并持久化为图数据库。
      • 构建 LanceDB 向量索引(语义检索)。
    • 启动 MCP 服务器(示例命令,实际路径请替换为你本地环境的路径):
      • 启动方式通常为运行 CodeKG 提供的 MCP 服务命令,类似:
        • codekg mcp --repo /absolute/path/to/your/repo
    • MCP 服务器启动后,MCP 客户端(如 Claude Code/Cline、Copilot 等)可按下述配置与调用入口对接。
  • 服务器配置(供 MCP 客户端使用的配置示例,JSON 结构,含 server name、command、args)
    • 服务器配置用于 MCP 客户端建立连接,至少包含服务器的启动命令及参数。以下为符合仓库信息的示意描述,请将其中的路径替换为你自己的实际路径后使用:
    • JSON 形式(描述性文本,非代码块): { "server_name": "codekg-mcp-my-repo", "command": "/absolute/path/to/venv/bin/codekg-mcp", "args": ["--repo", "/absolute/path/to/your/repo"] }
    • 说明:
      • server_name:用于在客户端或管理界面上标识该 MCP 服务器的名称,通常与对应的仓库/项目名称相关联。
      • command:启动 MCP 服务器的具体可执行程序路径,这里对应仓库文档中提到的 codekg-mcp 脚本。
      • args:传递给 MCP 服务器的启动参数,示例中包含 --repo 指定要服务的代码仓库根目录。实际生产环境请替换为你自己的路径。
  • 基本使用方法
    • 服务器准备好后,按照客户端文档的接入步骤,使用 MCP 服务端暴露的六个工具进行交互:
      • 通过 query_codebase 调用进行混合检索,得到候选节点并可进一步做详细分析。
      • 通过 pack_snippets 调用获取与查询相关的源代码片段,直接粘贴到 LLM 提示中。
      • 通过 get_node 按节点 ID 读取单个结点信息,支持对特定函数、类的快速查询。
      • 通过 graph_stats 获取代码图的规模与结构信息,用于监控与调优。
      • 通过 callers 进行精确的逆向查询,找出对某个实体的调用方。
      • 通过 analyze_repo 执行完整的体系分析,获取 JSON 格式的分析报告。
    • 集成要点
      • MCP 客户端需使用上面提供的 server 配置(server_name、command、args)来建立连接。
      • 客户端通过 JSON-RPC 请求向 MCP 服务器发起对应方法的调用,服务器返回 JSON-RPC 响应或通知。

服务器信息