代码分析服务器

Fast MCP Server for Codebase Analysis 是一个全面的模型上下文协议(MCP)服务器,提供强大的代码分析工具,包括AST提取、向量数据库集成、相似性搜索和依赖图生成。

  • by unclemusclez
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 unclemusclez/mcp-tool

使用说明

用于代码库分析的快速MCP服务器

一个全面的模型上下文协议(MCP)服务器,提供强大的代码分析工具,包括AST提取、向量数据库集成、相似性搜索和依赖图生成。

概述

快速MCP代码库分析器是一种专用服务器,旨在通过MCP协议提供智能代码分析功能。它提供了四个核心工具,使开发人员能够分析代码库,提取有意义的见解,并理解代码结构和关系。

主要特点:

  • AST提取:使用抽象语法树解析和分析代码结构
  • 矢量数据库集成:使用ChromaDB存储和索引代码表示
  • 相似性搜索:查找类似的代码模式和代码片段
  • 依赖图生成:可视化功能和模块依赖关系
  • 多语言支持:适用于Python代码库
  • 集成就绪:设计用于与MCP兼容的客户端配合使用

先决条件

  • Python 3.8或更高版本
  • pip包管理器
  • Git(用于克隆依赖项)

安装

1.克隆存储库

git clone <repository-url>
cd mcp-tool

2.创建虚拟环境

# Create virtual environment
python -m venv .venv

# Activate virtual environment
# On Linux/macOS:
source .venv/bin/activate
# On Windows:
.venv\Scripts\activate

3.安装依赖项

pip install -r requirements.txt

4.验证安装

python mcp_codebase_analyzer.py --help

配置

环境变量

创建一个 .env 如果需要,请在项目根目录中创建文件:

# Optional: Custom ChromaDB path
CHROMADB_PATH=./chroma_db

# Optional: Google API key for embeddings (if using cloud embeddings)
GOOGLE_API_KEY=your_api_key_here

# Optional: Custom model for embeddings
EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2

目录结构

确保以下目录结构存在:

mcp-tool/
├── .venv/
├── .gitignore
├── .env (optional)
├── requirements.txt
├── mcp_codebase_analyzer.py
├── README.md
└── ../codebase_analyzer_workflow/
    ├── ast_extractor.py
    ├── chroma_ast_importer.py
    ├── similarity_search.py
    ├── function_dependency_graph.py
    └── ...

工具说明

1.提取_统计

从Python代码文件中提取抽象语法树(AST)信息。此工具解析源代码,并提供代码语法和语义的结构化表示。

目的:

  • 代码结构分析
  • 语法验证
  • 自动重构准备
  • 代码质量评估

参数:

  • file_path (必填):Python源文件的路径

2.进口到chromadb

将AST数据导入ChromaDB矢量数据库进行存储和索引。这允许对代码模式进行语义搜索和相似性分析。

目的:

  • 代码分析结果的持久存储
  • 语义代码搜索准备
  • 代码模式索引
  • 知识库创建

参数:

  • file_path (必填):要导入的Python源文件的路径

3.搜索_类似代码

使用向量相似度搜索与提供的查询类似的代码。这利用ChromaDB中存储的嵌入来查找概念上相似的代码。

目的:

  • 代码重用发现
  • 模式识别
  • 重复代码检测
  • 代码现代化协助

参数:

  • query (必填):要搜索的自然语言描述或代码片段

4.生成依赖图

生成一个依赖关系图,显示代码库中的函数调用和模块关系。这有助于理解代码架构并识别潜在的耦合问题。

目的:

  • 架构可视化
  • 影响分析
  • 重构规划
  • 技术债务评估

参数:

  • file_path (必填):用于分析的Python源文件的路径

示例用法

与MCP客户端一起使用

使用任何兼容MCP的客户端连接到服务器:

# Example: Connecting to the MCP server
import asyncio
from mcp import ClientSession

async def main():
    async with ClientSession("mcp_codebase_analyzer.py") as session:
        # Initialize connection
        await session.initialize()
        
        # List available tools
        tools = await session.list_tools()
        print("Available tools:", tools)

示例1:从Python文件中提取AST

# Extract AST from main.py
result = await session.call_tool(
    "extract_ast",
    arguments={
        "file_path": "./src/main.py"
    }
)
print(result.content[0].text)

示例2:将代码导入矢量数据库

# Import a module to ChromaDB for search
result = await session.call_tool(
    "import_to_chromadb",
    arguments={
        "file_path": "./src/utils.py"
    }
)
print(result.content[0].text)

示例3:搜索类似代码

# Search for similar authentication code
result = await session.call_tool(
    "search_similar_code",
    arguments={
        "query": "user authentication with JWT tokens"
    }
)
print(result.content[0].text)

示例4:生成依赖关系图

# Generate dependency graph for a module
result = await session.call_tool(
    "generate_dependency_graph",
    arguments={
        "file_path": "./src/controllers.py"
    }
)
print(result.content[0].text)

故障排除

常见问题

1.导入错误

问题:模块导入失败 解决方案:

# Ensure virtual environment is activated
source .venv/bin/activate  # Linux/macOS
.venv\Scripts\activate     # Windows

# Reinstall dependencies
pip install -r requirements.txt

2.ChromaDB连接问题

问题:无法连接到矢量数据库 解决方案:

# Check if ChromaDB path exists
ls -la ./chroma_db/

# Recreate database if corrupted
rm -rf ./chroma_db/
# Re-import your code files

3.Python文件解析错误

问题:AST提取某些文件失败 解决方案:

  • 确保文件路径正确且可访问
  • 检查Python文件是否具有有效语法
  • 验证文件权限
  • 如果相对路径导致问题,请使用绝对路径

4.大型代码库的内存问题

问题:服务器在分析过程中内存不足 解决方案:

# Process files individually rather than whole directories
# Increase system memory or process files in smaller batches
# Use file filtering to exclude test files or generated code

5.缺少依赖关系

问题:工具因缺少包而失败 解决方案:

# Update requirements
pip install --upgrade -r requirements.txt

# Install specific missing packages
pip install fastmcp chromadb google-genai sentence-transformers

性能提示

  1. 批处理:按顺序而不是并行处理多个文件
  2. 文件筛选:排除非代码文件(测试、文档、生成的代码)
  3. 内存管理:定期清除大型代码库的矢量数据库
  4. 缓存:启用ChromaDB持久性以避免重新索引

调试模式

通过设置环境变量启用调试日志记录:

export MCP_DEBUG=1
export LOG_LEVEL=DEBUG
python mcp_codebase_analyzer.py

获取帮助

如需额外支持:

  1. 检查日志以了解详细的错误消息
  2. 验证所有依赖项是否已正确安装
  3. 首先使用简单的Python文件进行测试
  4. 确保codebase_analyzer_workflow目录存在并包含所需的脚本

建筑

MCP服务器充当 codebase_analyzer_workflow 工具,为以下内容提供标准化接口:

MCP Client
    ↓
mcp_codebase_analyzer.py (MCP Server)
    ↓
codebase_analyzer_workflow/
    ├── ast_extractor.py
    ├── chroma_ast_importer.py  
    ├── similarity_search.py
    └── function_dependency_graph.py

版本信息

  • 服务器版本: 1.0.0
  • 协议:模型上下文协议(MCP)
  • Python兼容性: 3.8+
  • 许可证:[您的许可证在这里]

贡献

  1. 复刻仓库
  2. 创建要素分支
  3. 进行更改
  4. 彻底测试
  5. 提交拉取请求

许可证

[在此处指定您的许可证]