一个高级的MCP(模型上下文协议)服务器,结合了Tree-sitter解析、图数据库和向量搜索功能,以实现跨多个存储库的快速代码智能。
┌─────────────────┐ ┌──────────────────┐ └─────────────────┐
│ Claude Code │────▶│ MCP Server │────▶│ Tree-sitter │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│ │
▼ ▼
┌──────────────┐ ┌────────────────┐
│ DuckDB │ │ ChromaDB │
│ (图) │ │ (向量) │
└──────────────┘ └────────────────┘
# 克隆仓库
git clone https://github.com/rahulvgmail/CodeInteliMCP.git
cd CodeInteliMCP
# 运行设置脚本
python setup_for_claude.py
设置脚本将:
# 安装依赖项
pip install mcp duckdb chromadb sentence-transformers aiofiles
pip install tree-sitter tree-sitter-python tree-sitter-javascript
# 添加到Claude Desktop配置(~/.config/claude/claude_desktop_config.json):
{
"mcpServers": {
"code-intelligence": {
"command": "python",
"args": ["/path/to/CodeInteliMCP/code_intelligence_mcp/server_minimal.py"],
"env": {
"CODE_INTEL_PROJECT_ROOT": "/path/to/your/project"
}
}
}
}
此MCP服务器提供以下工具:
add_repository - 添加一个新的存储库进行跟踪
name(字符串,必需):存储库名称path(字符串,必需):存储库路径description(字符串,可选):存储库描述make_active(布尔值,可选):设为活动存储库list_repositories - 列出所有已跟踪的存储库
set_active_repository - 设置操作的活动存储库
name(字符串,必需):要设为活动的存储库名称index_repository - 索引整个存储库
repository_name(字符串,必需):要索引的存储库名称include_patterns(字符串,可选):逗号分隔的文件模式包含列表exclude_patterns(字符串,可选):逗号分隔的文件模式排除列表index_file - 将单个文件索引到代码图中
file_path(字符串,必需):要索引的文件路径find_symbol - 按名称查找符号
name(字符串,必需):要搜索的符号名称file_path(字符串,可选):限制搜索到特定文件find_usages - 查找符号的所有使用情况
name(字符串,必需):要查找使用情况的符号名称file_path(字符串,可选):限制搜索到特定文件semantic_search - 使用语义相似性搜索代码
query(字符串,必需):自然语言搜索查询limit(整数,可选):结果的最大数量(默认:1_0)symbol_types(字符串,可选):逗号分隔的符号类型过滤列表find_similar_code - 查找与给定符号相似的代码
symbol_name(字符串,必需):参考符号名称file_path(字符串,可选):包含参考符号的文件test_connection - 测试服务器是否正常工作
get_index_stats - 获取当前索引统计信息
get_vector_stats - 获取向量存储统计信息
配置完成后,在Claude中使用这些工具:
# 添加新的存储库
add_repository(name="my-app", path="/path/to/my-app", description="主应用程序")
# 索引存储库
index_repository(repository_name="my-app", include_patterns="**/*.py,**/*.js")
# 搜索认证函数
semantic_search(query="认证和登录函数", limit=20)
# 查找类的使用位置
find_usages(name="UserService")
# 查找相似的实现
find_similar_code(symbol_name="login_user")