An intelligent codebase search engine that transforms local codebases into a natural language queryable knowledge base.
Codebase MCP Server 是一个专为开发者设计的智能代码库搜索引擎。它基于模型上下文协议(MCP),将本地代码库转化为一个可通过自然语言查询的智能知识库。与传统的文件遍历和文本搜索不同,本工具通过先进的语义理解能力,帮助开发者快速、精准地定位代码片段,从而大幅提升开发效率和代码理解深度。
git clone <项目地址>
cd CodebaseMcpServer
编辑 appsettings.json
文件:
{
"CodeSearch": {
"DashScopeApiKey": "your-dashscope-api-key",
"QdrantConfig": {
"Host": "localhost",
"Port": 6334,
"CollectionName": "codebase_embeddings"
},
"DefaultCodebasePath": "D:\\Path\\To\\Your\\Codebase",
"SearchConfig": {
"DefaultLimit": 10,
"MaxTokenLength": 8192,
"BatchSize": 10
}
}
}
使用 Docker 启动 Qdrant:
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant
dotnet build
典型的使用流程如下,旨在将您的代码库转变为一个可搜索的知识库。
首先,需要为目标代码库创建一个向量索引。这是所有搜索功能的基础。
CreateIndexLibrary
D:\Projects\MyApp
。{
"tool_name": "CreateIndexLibrary",
"arguments": {
"codebasePath": "D:\\Projects\\MyApp",
"friendlyName": "My Awesome App"
}
}
服务器将启动一个后台任务来扫描、解析和索引您的代码。
索引创建需要一些时间,具体取决于代码库的大小。您可以使用 GetIndexingStatus
工具来监控进度。
GetIndexingStatus
{ "tool_name": "GetIndexingStatus" }
{
"tool_name": "GetIndexingStatus",
"arguments": { "codebasePath": "D:\\Projects\\MyApp" }
}
索引完成后,您就可以开始用自然语言进行搜索了。
SemanticCodeSearch
{
"tool_name": "SemanticCodeSearch",
"arguments": {
"query": "用户登录验证逻辑",
"codebasePath": "D:\\Projects\\MyApp",
"limit": 5
}
}
服务器将返回最相关的代码片段、文件路径、相似度得分等信息。
您可以根据需要重建或删除索引。
RebuildIndex
DeleteIndexLibrary
(需要二次确认)服务器提供两类工具:代码搜索和索引管理。
SemanticCodeSearch
首选代码查询工具。根据自然语言描述,精准定位相关的代码片段。它避免了完整读取和遍历文件,通过语义相似度直接找到目标代码,极大提升了代码查找和理解的效率。
参数:
query
(string, 必需): 自然语言搜索查询。
'用户登录验证逻辑'
, '数据库连接池管理'
, 'JWT令牌生成'
。'函数'
, '类'
。codebasePath
(string, 必需): 要搜索的代码库根目录的绝对路径。
'd:/VSProject/MyApp'
, './src'
。limit
(int, 可选, 默认 5): 返回最相关的代码片段数量。
使用示例:
{
"tool_name": "SemanticCodeSearch",
"arguments": {
"query": "如何实现文件上传的错误处理",
"codebasePath": "D:\\Projects\\WebApp",
"limit": 3
}
}
CreateIndexLibrary
为指定的代码库目录创建语义索引。索引是实现 SemanticCodeSearch
的前提。此过程会在后台运行,并自动启用文件监控以进行增量更新。
参数:
codebasePath
(string, 必需): 要索引的代码库目录的完整绝对路径。friendlyName
(string, 可选): 为索引库指定一个易于识别的名称。如果未提供,则默认使用目录名。使用示例:
{
"tool_name": "CreateIndexLibrary",
"arguments": {
"codebasePath": "C:\\Users\\Dev\\Documents\\MyProject",
"friendlyName": "Main Project"
}
}
GetIndexingStatus
查询一个或所有代码库的索引状态、统计信息和进度。
参数:
codebasePath
(string, 可选): 如果提供,则显示该特定代码库的详细状态。taskId
(string, 可选): 如果提供,则查询特定索引任务的状态。使用示例:
{
"tool_name": "GetIndexingStatus",
"arguments": {
"codebasePath": "C:\\Users\\Dev\\Documents\\MyProject"
}
}
RebuildIndex
当代码结构发生重大变更或怀疑索引数据损坏时,此工具可用于清除旧索引并从头开始重新构建。
参数:
codebasePath
(string, 必需): 要重建索引的代码库路径。使用示例:
{
"tool_name": "RebuildIndex",
"arguments": {
"codebasePath": "C:\\Users\\Dev\\Documents\\MyProject"
}
}
DeleteIndexLibrary
永久删除指定代码库的索引数据和相关配置。这是一个危险操作,需要二次确认。
参数:
codebasePath
(string, 必需): 要删除索引的代码库路径。confirm
(bool, 必需, 默认 false
): 必须将此参数设置为 true
才能执行删除。首次调用(不带或带 false
)会返回一条确认提示。使用示例 (安全删除):
{
"tool_name": "DeleteIndexLibrary",
"arguments": { "codebasePath": "C:\\Path\\To\\OldProject" }
}
{
"tool_name": "DeleteIndexLibrary",
"arguments": {
"codebasePath": "C:\\Path\\To\\OldProject",
"confirm": true
}
}
在 Claude Desktop 的配置文件中添加:
{
"mcpServers": {
"codebase-search": {
"url": "http://localhost:5000/sse",
"alwaysAllow": [
"SemanticCodeSearch",
"GetIndexingStatus"
],
"timeout": 30
}
}
}
任何支持 MCP 协议的客户端都可以通过标准输入输出与此服务器通信。
graph TD
subgraph MCP Client
A[User/Client Application]
end
subgraph CodebaseMcpServer
B[MCP Protocol Layer]
C[MCP Tools Layer]
D[Service Layer]
E[Data & Infrastructure]
end
A -- MCP Request --> B
B -- Tool Call --> C
C -- Calls --> D
D -- Interacts with --> E
subgraph C [MCP Tools Layer]
C1[CodeSearchTools]
C2[IndexManagementTools]
end
subgraph D [Service Layer]
D1[EnhancedCodeSemanticSearch]
D2[IndexLibraryService]
D3[FileWatcherService]
D4[BackgroundTaskService]
end
subgraph E [Data & Infrastructure]
E1["Embedding Providers\n(DashScope, Ollama, etc.)"]
E2["Qdrant DB\n(Vector Storage)"]
E3["LiteDB\n(Metadata & Task Storage)"]
E4[C# Code Parser]
end
C1 -- Uses --> D1
C2 -- Uses --> D2
D1 -- Needs --> E1
D1 -- Needs --> E2
D2 -- Manages --> E2
D2 -- Manages --> E3
D2 -- Uses --> D3
D2 -- Uses --> D4
D1 -- Uses --> E4
Tools/
目录下创建新的工具类[McpServerToolType]
和 [McpServerTool]
特性Program.cs
中注册新工具CodeSemanticSearch.cs
中的代码解析逻辑Qdrant 连接失败
DashScope API 错误
代码库索引失败
服务器会输出详细的调试信息,包括:
[根据项目需要添加许可证信息]
欢迎提交 Issue 和 Pull Request 来改进此项目。
A template for creating MCP (ModelContextProvider) servers, configurable via environment variables.
A proxy server that enables existing REST APIs to be used as Model Context Protocol (MCP) servers.
Access real-time and historical token, wallet, and trading data from the Solana ecosystem via the Solana Tracker API.
A GraphQL server that supports the Model Context Protocol (MCP), enabling Large Language Models (LLMs) to interact with GraphQL APIs through schema introspection and query execution.
A demonstration server for ActionKit, providing access to Slack actions via Claude Desktop.
An MCP server for the transformer.bee service, configurable via environment variables.
A proxy server that combines multiple MCP servers into a single endpoint, routing requests to the appropriate underlying server.
Performs data enrichment on observables using third-party services via the security-cli Python package.
Official MCP server for Buildable AI-powered development platform. Enables AI assistants to manage tasks, track progress, get project context, and collaborate with humans on software projects.
Interact with the Postman API via an MCP server. Requires a Postman API key.