代码分析服务

一个提供实时代码库洞察的高级系统,通过索引、分析和搜索功能帮助理解项目代码。

  • by MrDecryptDecipher
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 MrDecryptDecipher/CodeBaseMCP

使用说明

增强型代码库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为代理商提供全面的信息,以便:

  1. 探索代码结构:浏览项目层次结构并了解关系
  2. 按上下文搜索:查找代码不仅要通过文本匹配,还要通过语义意义
  3. 分析依赖关系:了解文件和组件如何交互
  4. 提取符号:识别类、函数及其关系
  5. 评估质量:评估复杂性、可维护性和潜在问题

集成示例(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']}")

性能提示

  1. 使用Redis:启用Redis,通过缓存和任务队列显著提高性能
  2. 工人规模:根据CPU内核(通常为1-2×内核)调整工作进程并发性
  3. 初始索引:第一次索引传递将较慢;后续操作要快得多
  4. 搜索类型:文本搜索最快,正则表达式灵活,语义最强大,但速度较慢
  5. 批量操作:尽可能从缓存中受益的组相关查询

安全考虑

  1. 默认情况下,API是打开的。对于生产,请在.env文件中启用API密钥保护
  2. 集 CORS_ORIGINS 限制对特定域的访问
  3. API文档可在 /api/docs 但可以禁用以用于生产

故障排除

  • 日志:检查日志 logs/ 详细错误信息目录
  • 瑞迪斯:如果发生Redis连接问题,请确保Redis正在运行或禁用.env中的Redis功能
  • 内存使用:对于大型代码库,调整 MAX_FILE_SIZE_BYTES 设置
  • 搜索速度慢:矢量搜索在首次使用时建立索引,后续搜索要快得多