使用说明
增强型代码库MCP(元内容提供商)
一个强大的系统,通过高级索引、分析和搜索功能提供对代码库的全面和实时洞察。此元内容提供商创建了对您的项目的深入理解,并通过为代理交互优化的API端点将其公开。
特性
核心功能
- 高性能索引:使用Celery workers对所有项目进行并行、分布式索引
- 实时文件系统监控:自动检测和处理发生的文件更改
- REST API:用于查询代码库信息的综合端点
- 矢量嵌入搜索:使用ML嵌入进行语义代码搜索,以理解代码意图
- 高级代码分析:提取符号、依赖关系和度量,以深入理解代码
附加功能
- Redis缓存:通过智能缓存实现高速响应
- 抽象语法树分析:理解简单文本搜索之外的代码结构
- 项目依赖性跟踪:分析文件和外部包之间的关系
- 代码质量度量:计算复杂性、可维护性和风险评分
- 代码符号提取:识别类、函数、方法和变量及其关系
- 普罗米修斯指标:监控系统性能和使用情况
系统要求
- Python 3.8+支持venv
- Redis(推荐使用,但缓存和排队可选)
- 4GB+RAM,用于处理大型代码库
- 用于代码索引和向量嵌入的磁盘空间
设置
1.创建虚拟环境
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
2.安装依赖项
pip install -r requirements.txt
3.配置环境
cp .env.example .env
# Edit .env file to adjust settings as needed
4.运行MCP系统
完整功能(推荐):
./run.sh -m all
或者单独运行组件:
# API server only
./run.sh -m server
# Worker processes only
./run.sh -m worker -c 8 # With 8 concurrent workers
建筑
增强型MCP由几个集成组件组成:
- API服务器:为代理提供端点的FastAPI应用程序
- 芹菜工人:用于索引和分析的分布式任务处理
- Redis后端:用于缓存、任务排队和向量搜索索引
- 文件系统监视器:检测和处理实时文件更改
- 矢量搜索引擎:使用ML模型启用语义代码搜索
- 代码解析器:使用抽象语法树分析代码结构
API终点
核心终点
POST /api/v1/index:为特定项目或所有项目建立索引GET /api/v1/projects:获取包含统计信息的所有索引项目的列表POST /api/v1/file/content:使用元数据获取特定文件的内容POST /api/v1/search:具有各种搜索类型(文本、语义、正则表达式、符号)的搜索代码POST /api/v1/project/structure:获取项目的目录结构POST /api/v1/project/dependencies:获取项目的依赖关系
监控端点
GET /:MCP系统的基本信息GET /metrics:普罗米修斯系统监控指标GET /api/v1/health:健康检查端点
使用API
索引所有项目
curl -X POST http://localhost:8000/api/v1/index -H "Content-Type: application/json" -d '{}'
搜索代码(文本搜索)
curl -X POST http://localhost:8000/api/v1/search -H "Content-Type: application/json" -d '{
"query": "function get_user",
"search_type": "text",
"projects": ["project1", "project2"],
"file_extensions": ["py", "js"],
"max_results": 20
}'
语义代码搜索
curl -X POST http://localhost:8000/api/v1/search -H "Content-Type: application/json" -d '{
"query": "code that handles user authentication",
"search_type": "semantic"
}'
获取项目结构
curl -X POST http://localhost:8000/api/v1/project/structure -H "Content-Type: application/json" -d '{
"project_name": "project1",
"include_content": false,
"max_depth": 5
}'
获取项目依赖关系
curl -X POST http://localhost:8000/api/v1/project/dependencies -H "Content-Type: application/json" -d '{
"project_name": "project1",
"include_external": true,
"include_internal": true
}'
与AI代理集成
这个增强的MCP旨在供需要深入了解代码库的AI代理查询。API为代理商提供全面的信息,以便:
- 探索代码结构:浏览项目层次结构并了解关系
- 按上下文搜索:查找代码不仅要通过文本匹配,还要通过语义意义
- 分析依赖关系:了解文件和组件如何交互
- 提取符号:识别类、函数及其关系
- 评估质量:评估复杂性、可维护性和潜在问题
集成示例(Python)
import requests
MCP_URL = "http://localhost:8000/api/v1"
def query_mcp(endpoint, data=None):
"""Query the MCP API"""
if data:
response = requests.post(f"{MCP_URL}/{endpoint}", json=data)
else:
response = requests.get(f"{MCP_URL}/{endpoint}")
return response.json()
# Get list of projects
projects = query_mcp("projects")
# Search for authentication-related code semantically
results = query_mcp("search", {
"query": "user authentication implementation",
"search_type": "semantic",
"max_results": 10
})
# Process and use results in your agent
for result in results["results"]:
print(f"Found in {result['file_path']} (Line {result['line_number']})")
print(f"Context: {result['code_context']}")
性能提示
- 使用Redis:启用Redis,通过缓存和任务队列显著提高性能
- 工人规模:根据CPU内核(通常为1-2×内核)调整工作进程并发性
- 初始索引:第一次索引传递将较慢;后续操作要快得多
- 搜索类型:文本搜索最快,正则表达式灵活,语义最强大,但速度较慢
- 批量操作:尽可能从缓存中受益的组相关查询
安全考虑
- 默认情况下,API是打开的。对于生产,请在.env文件中启用API密钥保护
- 集
CORS_ORIGINS限制对特定域的访问 - API文档可在
/api/docs但可以禁用以用于生产
故障排除
- 日志:检查日志
logs/详细错误信息目录 - 瑞迪斯:如果发生Redis连接问题,请确保Redis正在运行或禁用.env中的Redis功能
- 内存使用:对于大型代码库,调整
MAX_FILE_SIZE_BYTES设置 - 搜索速度慢:矢量搜索在首次使用时建立索引,后续搜索要快得多