Smooth.CodeRepositoryIndexMcp 服务器端实现
使用说明(Markdown 格式)
-
项目简介
- 该项目是一整套基于 MCP 的后端/server 实现,旨在为 AI 客户端提供对代码仓库的上下文信息、资源数据、工具注册与调用以及提示模板渲染能力。核心组件包括 ASP.NET Core HTTP API 服务(HTTP/SSE 传输)、STDIO 传输的 MCP 服务,以及一组工具用于查询与操作索引(如 get_file、get_agents_context、get_domain_map、search_codebase 等)。
-
主要功能点
- MCP 协议支持:通过 JSON-RPC 与 AI 客户端进行请求/响应交互,支持查询、执行工具、获取资源/AGENTS.md、获取域映射等能力。
- 资源与工具管理:托管 AGENTS.md、域映射、资源与代码片段等资源,注册并执行 Tools,提供对外部功能的访问能力。
- Prompt 模板渲染:渲染用于对话的系统提示片段和上下文信息,帮助 LLM 客户端获取一致的上下文。
- 多传输支持:既可通过 STDIO(标准输入/输出)传输,也可通过 HTTP/ SSE 流式传输,适配不同编辑器或 IDE 的集成方式。
- 会话与域声明:服务端维护会话状态,声明各 bounded context 的能力与资源范围,支持对多仓库的统一管理。
- 索引与检索集成:结合本仓库的代码索引组件,提供对代码、AGENTS.md、域映射等的快速查询能力,且支持跨仓库模式。
-
安装与运行步骤
- 先决条件
- .NET 10 SDK
- Git(用于仓库根路径解析与变更检测等)
- 可选:ripgrep(用于外部检索优化)
- 构建与发布
- 使用 .NET 工具构建或直接运行对应的 API/CLI 项目,以启动 MCP HTTP/API 服务器或 STDIO 服务器。
- 运行模式与传输
- HTTP/API 模式:通过 API 服务暴露 MCP 端点,客户端可以通过 HTTP 请求进行 JSON-RPC 调用。
- STDIO 模式:通过标准输入/输出进行 JSON-RPC 通信,适用于代码代理、集成环境等。
- 先决条件
-
服务器配置(MCP 客户端连接所需的最小信息)
- serverName: smooth-code-repo-index
- command: dotnet
- args: ["run", "--project", "src/Smooth.CodeRepositoryIndexMcp.Api/Smooth.CodeRepositoryIndexMcp.Api.csproj", "--root", "<仓库根路径>", "--workspace", ".index"]
- 说明:以上配置用于在客户端启动一个 MCP 服务器实例,HTTP API 将对外暴露 MCP 服务。root 指定要索引的代码仓库根目录,workspace 指定索引数据的全局工作区目录(通常为 .index/),MCP 客户端通过 serverName 与对应的 command/args 与服务器建立连接并进行后续的 JSON-RPC 调用。
-
基本使用方法
- 启动服务器后,客户端(LLM/AI 辅助工具)可通过 MCP 协议向服务器请求以下能力:
- 获取域映射、加载 AGENTS.md 内容、搜索代码、根据路径定位上下文、获取特定上下文的 AGENTS.md、以及执行其他工具。
- 常见操作流程示例(概览)
- 初始化连接并获取服务器信息与能力描述
- 使用 where_am_i、get_domain_map、get_agents_context 等工具获取上下文与资源
- 使用 search_codebase 等工具在索引中检索代码并获取相关上下文
- 根据需要加载目标 AGENTS.md 内容以优化对话上下文
- 断开连接与清理
- 正确关闭 MCP 会话,按需要停用 HTTP/STDIO 服务,或在多仓库场景下清理缓存与索引数据。
- 启动服务器后,客户端(LLM/AI 辅助工具)可通过 MCP 协议向服务器请求以下能力:
-
备注
- 本实现包含 HTTP API 服务端、STDIO 转 transport、以及一整套工具/查询/索引组件,能够支持多仓库场景,具备完整的服务器端功能集合,符合 MCP 服务器的核心职责与工作流。