Token导航 LogoToken导航TokenDH.com
MCP Code Qna logo
开发工具stdio官方级别未说明来源级核验

MCP Code Qna

MCP Server

一个基于MCP协议和RAG技术的代码仓库问答系统,能够智能分析本地代码库并回答相关问题,适用于代码理解和开发效率提升。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
代码分析Python开发工具搜索

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

djpardis

提供方

djpardis

最后核验

2026/5/17 20:21

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 -m pip install -r requirements.txt

详细介绍

MCP代码库问答

该项目实现了 模型上下文协议(MCP) 该服务器使用检索增强生成(RAG)系统回答有关本地代码存储库的问题。

特性

  • 符合MCP标准的问答服务器
  • 基于逻辑块(函数、类等)的智能代码分块
  • 语义搜索以查找相关代码片段
  • 带有相关代码引用的自然语言答案
  • 动态存储库路径支持,无需重新启动服务器即可查询多个存储库
  • 具有质量指标的综合评估框架

入门指南

先决条件

  • Python 3.9+
  • 要分析的本地Python存储库

安装

  1. 克隆此存储库
  1. 使用以下方法之一安装依赖项:

选项1:使用requirements.txt(基本)

   python3 -m pip install -r requirements.txt

选项2:使用setup.py(推荐)

   python3 -m pip install -e .

这将安装所有依赖项和其他组件,如spaCy语言模型。

> 注: 此项目使用 python3 -m pip 而不是独立的 pip 命令,以确保与正确的Python安装兼容。这是Python打包机构推荐的方法,因为它更明确地说明了您要将包安装到哪个Python环境中。

运行MCP服务器

# Start the MCP server with a specific repository path
python -m app.mcp_web_server --repo-path /path/to/your/repo

# Or start with a specific port (default is 8000)
python -m app.mcp_web_server --repo-path /path/to/your/repo --port 8002

访问Web界面

打开 http://localhost:8000 (或您指定的端口)在浏览器中访问web界面。

运行评估

# Run evaluation on the Grip repository
python run_test_evaluation.py --server-url http://localhost:8002 \
  --repo-path /path/to/grip-repo \
  --repo-type grip

# Run evaluation on the Sample Python repository
python run_test_evaluation.py --server-url http://localhost:8002 \
  --repo-path /path/to/sample-python-repo \
  --repo-type sample_repo

端到端测试

要运行MCP服务器的完整评估:

  1. 在一个终端中启动MCP服务器:
   python -m app.mcp_web_server --port 8002
  1. 在另一个终端中运行两个存储库的评估:
    # Run evaluation on the Grip repository
    python run_test_evaluation.py --server-url http://localhost:8002 \
      --repo-path /path/to/grip-repo \
      --repo-type grip
    
    # Run evaluation on the Sample Python repository
    python run_test_evaluation.py --server-url http://localhost:8002 \
      --repo-path /path/to/sample-python-repo \
      --repo-type sample_repo
  1. 审查评估结果 evaluation_results 目录

用法

MCP代理

MCP Agent是一个强大的工具,它利用MCP服务器执行全面的存储库分析。它生成关于代码库的架构、依赖关系和设计模式的详细报告。

特性

  • 体系结构分析:检查存储库的总体结构、组件和组织
  • 相关性分析:确定外部库、框架以及如何管理依赖关系
  • 设计模式检测:识别代码库中使用的常见设计模式
  • 多格式报告:生成JSON、Markdown和交互式HTML格式的报告

用法

# Basic usage
./scripts/mcp_agent.py --server-url http://localhost:8002 --repo-path /path/to/your/repo

# Specify a custom output directory for reports
./scripts/mcp_agent.py --server-url http://localhost:8002 --repo-path /path/to/your/repo --output-dir ./my-reports

# Specify repository type for better organization
./scripts/mcp_agent.py --server-url http://localhost:8002 --repo-path /path/to/your/repo --repo-type grip

报告类型

  1. JSON报告 (reports/{repo_type}/{repo_name}_report_{timestamp}.json)

- 用于程序化处理的原始结构化数据 - 包含分析中的所有问题和答案

  1. Markdown报告 (reports/{repo_type}/{repo_name}_report_{timestamp}.md)

- 人类可读的格式化文本 - 非常适合在GitHub或任何markdown查看器中查看

  1. HTML报告 (reports/{repo_type}/{repo_name}_report_{timestamp}.html)

- 具有格式和样式的交互式网络报告 - 包括可折叠部分和语法突出显示 - 最适合与团队成员分享

有组织的目录结构

报告和评估结果按存储库类型自动组织:

├── reports/
│   ├── sample_repo/   # Reports for the sample Python repository
│   ├── grip/          # Reports for the Grip repository
│   └── other/         # Reports for other repositories
│
└── evaluation_results/
    ├── sample_repo/   # Evaluation results for sample Python repository
    └── grip/          # Evaluation results for Grip repository

您可以在运行MCP代理时指定存储库类型:

./scripts/mcp_agent.py --server-url http://localhost:8002 --repo-path /path/to/repo --repo-type grip

报告内容示例

  • 体系结构分析

- 总体架构描述 - 组件交互图 - 入口点和代码组织

  • 相关性分析

- 外部库和框架 - 依赖性管理方法 - 核心与开发依赖关系

  • 设计模式识别

- 检测到具有置信水平的设计模式 - 显示模式实现的代码片段 - 如何使用模式的解释

Web UI界面(推荐)

用户友好的web界面可用于最简单的交互:

# Start the server with a default repository
./mcp serve --repo_path /path/to/your/repo

# Or start the server in dynamic mode (no default repository)
./mcp serve

然后打开浏览器 http://localhost:8000 访问web界面。

评估框架

MCP服务器包括一个全面的评估框架,用于评估其在不同存储库和问题类型中的性能。

MCP质量分数(MQS)

评估框架根据几个关键指标计算MCP质量分数(MQS):

  • 响应时间(30%):回报递减,回报更快
  • 错误率(70%):收到无错误答复的问题百分比

MQS是一个0-10的分数,用于全面评估系统的性能。

文件评估标准

在评估答案的质量时,使用以下标准:

  1. 准确度:答案是否正确地回答了问题并提供了事实上正确的信息?

- 优秀(9-10):答案完全准确,细节精确 - 良好(7-8):答案基本准确,有轻微不精确 - 可接受(5-6):答案有一些不准确之处,但通常是有帮助的 - 差(0-4):答案包含重大事实错误

  1. 相关性:答案是否直接回答了所提问题?

- 优秀(9-10):答案直接涉及问题的各个方面 - 好(7-8):答案回答了问题的要点 - 可接受(5-6):答案有点相关,但遗漏了关键方面 - 差(0-4):答案与问题基本无关

  1. 完整性:答案是否提供了全面的回应?

- 优秀(9-10):答案涵盖了所有方面 - 良好(7-8):答案涵盖了最重要的方面 - 可接受(5-6):答案提供了基本信息,但缺乏深度 - 差(0-4):答案不完整或肤浅

  1. 代码上下文:答案是否包括适当的相关代码片段?

- 优秀(9-10):包括精确相关的代码和良好的解释 - 良好(7-8):包括相关代码和充分的解释 - 可接受(5-6):包括一些代码,但解释有限 - 差(0-4):缺少相关代码或包含不相关代码

运行评估

评估框架使用测试文件中的确切问题(test_sample_repo_question_understanding.pyrun_comprehensive_evaluation.py).这些问题也显示在web界面中,以确保测试和用户交互之间的一致性。

# Run evaluation on the sample Python repository
python run_test_evaluation.py --server-url http://localhost:8002 \
  --repo-path /path/to/sample-python-repo \
  --repo-type sample_repo

# Run evaluation on the grip repository
python run_test_evaluation.py --server-url http://localhost:8002 \
  --repo-path /path/to/grip-repo \
  --repo-type grip

在执行评估脚本之前,请确保MCP服务器正在运行。默认服务器端口为8000,但您可以使用 --server-url 参数。

评估脚本将:

  1. 从web界面中提取与测试文件匹配的问题
  2. 使用指定的存储库路径将每个问题发送到MCP服务器
  3. 测量响应时间和错误率
  4. 计算MCP质量分数(MQS)
  5. 将详细结果保存到evaluation_results目录中的JSON文件中

评估生成了详细的报告,其中包括:

  • 总体质量指标,包括MQS
  • 按问题绩效分析
  • 响应时间统计
  • 错误率分析

解释结果

MQS分数可以解释如下:

  • 9-10:优秀-答案高度准确,响应时间快
  • 7-8:很好-大多数答案都是准确的,偶尔会出现一些小问题
  • 5-6:可接受-答案通常有帮助,但可能包含不准确之处
  • 3-4:需要改进-准确性或相关性方面的重大问题
  • 0-2:差-答案质量存在重大问题

对于生产使用,目标是MQS为7或更高。

近期评估结果

Grip存储库性能

  • MCP质量分数(MQS): 6.16/10
  • 平均响应时间:0.22秒
  • 错误率: 50.00%

Python存储库性能示例

  • MCP质量分数(MQS): 5.49/10
  • 平均响应时间:0.20s
  • 错误率: 60.00%

web UI提供:

  • 输入问题的简单表格
  • 存储库路径输入字段,用于指定要分析的代码存储库
  • 按类别组织的示例问题,以帮助您入门
  • Markdown呈现答案,并为代码突出语法
  • 连接状态指示器
  • 要尝试的示例问题

简单的CLI界面

# Start the server
./mcp serve /path/to/your/repo

# Ask a question directly
./mcp ask /path/to/your/repo "What does class UserService do?"

# Get help
./mcp --help

选项:

  • -p, --port PORT:指定服务器端口(默认值:8000)
  • -h, --host HOST:指定主机地址(默认值:0.0.0.0)
  • -r, --rebuild:强制重建索引

高级用法

该项目还提供了与代码QA系统交互的更详细的方法:

选项1:CLI直接问题

为了快速测试和直接使用而无需启动服务器:

python3 -m app.cli --repo_path /path/to/your/repo ask "What does class UserService do?"

这将直接在您的终端中输出答案。

选项2:MCP服务器(推荐)

启动MCP服务器以进行API访问和代理集成:

python3 -m app.cli --repo_path /path/to/your/repo serve [--port 8000] [--rebuild_index]

选项:

  • --port PORT:指定端口(默认值:8000)
  • --host HOST:指定主机(默认值:0.0.0.0)
  • --rebuild_index:强制重建索引,即使它存在

服务器将在以下时间可用http://localhost:8000(或您指定的端口)

与MCP服务器交互

  1. 获取服务器元数据:
   curl http://localhost:8000/.well-known/mcp
  1. 列出可用资源:
   curl http://localhost:8000/list_resources
  1. 问一个问题:
   curl -X POST -H "Content-Type: application/json" \
     -d '{"uri": "questions", "parameters": {"question": "What does class UserService do?"}}' \
     http://localhost:8000/read_resource
  1. 互动文档可在以下网址获得:
   http://localhost:8000/docs

系统组件和工作流

MCP代码库问答项目由三个主要部分组成,它们协同工作,提供完整的代码理解解决方案:

  1. MCP服务器 -核心RAG(检索增强生成)引擎,处理有关代码的问题
  2. 评估框架 -测量和评估MCP响应质量的工具
  3. MCP代理 -使用MCP服务器生成全面存储库分析的智能代理

组件如何协同工作

┌─────────────────┐     Questions     ┌─────────────────┐
│                 │ ◄───────────────► │                 │
│    MCP Server   │                   │     Web UI      │
│                 │ ─────────────────►│                 │
└─────────┬───────┘     Answers      └─────────────────┘
          │
          │ Questions/Answers
          ▼
┌─────────────────┐                  ┌─────────────────┐
│   Evaluation    │◄────────────────►│    MCP Agent    │
│    Framework    │   Uses Server    │                 │
└─────────────────┘                  └─────────────────┘
          │                                    │
          │                                    │
          ▼                                    ▼
┌─────────────────┐                  ┌─────────────────┐
│   Evaluation    │                  │  Architecture   │
│     Results     │                  │     Reports     │
└─────────────────┘                  └─────────────────┘

MCP服务器架构

MCP服务器由三个主要组件组成:

  1. 代码索引器:解析存储库,提取逻辑代码块,并创建嵌入
  2. 检索器:执行语义搜索以查找问题的相关代码块
  3. 发电机:使用检索到的代码块生成具有相关代码片段的准确答案

项目结构

.
├── app/                # Core application code
│   ├── generator/     # Answer generation components
│   ├── indexer/       # Code indexing and parsing
│   ├── retriever/     # Semantic search and retrieval
│   ├── static/        # Static web assets
│   ├── mcp_web_server.py  # Main MCP server implementation
│   ├── main.py        # FastAPI application
│   └── cli.py         # Command-line interface
├── scripts/           # Utility scripts
│   ├── mcp_agent.py   # Repository analysis agent
│   └── report_template.html # HTML template for agent reports
├── evaluation_scripts/ # Evaluation tools
│   ├── evaluate_mcp.py # Main evaluation script
│   ├── run_comprehensive_evaluation.py # Comprehensive evaluation
│   ├── run_simple_evaluation.py # Simple evaluation
│   └── run_test_evaluation.py # Test-based evaluation
├── tests/            # Test files
│   ├── test_grip_dataset_evaluation.py # Grip dataset tests
│   └── test_sample_repo_question_understanding.py # Sample repo tests
├── reports/          # Repository analysis reports
│   ├── sample_repo/  # Sample Python repository reports
│   ├── grip/         # Grip repository reports
│   └── other/        # Other repository reports
├── evaluation_results/ # MCP server evaluation results
│   ├── sample_repo/  # Sample Python repository evaluations
│   └── grip/         # Grip repository evaluations
├── mcp              # CLI script entry point
├── setup.py          # Installation script
├── requirements.txt  # Project dependencies
├── TODO.md           # Project tasks and roadmap
└── README.md         # This file

RAG系统详细信息

  • 组块:使用基于AST的解析来提取代码的逻辑块(函数、类、方法)
  • 存储:将代码块及其嵌入存储在FAISS向量数据库中
  • 索引:使用SentenceTransformers创建语义嵌入
  • 检索:使用余弦相似度查找相关代码块
  • 生成:使用适当的上下文和代码片段格式化响应

样本库

示例Python存储库包含在 /sample-python-repo 以测试系统。它包含:

  • user_service.py:用户管理和身份验证服务
  • order_processor.py:处理客户订单的服务
  • database.py:用于测试的模拟数据库实现

生成示例Python存储库

您可以使用附带的脚本生成示例Python存储库:

# Clone this repository if you haven't already
git clone https://github.com/djpardis/mcp-code-qna.git
cd mcp-code-qna

# Run the script to generate the sample repository
python -m scripts.generate_sample_repo

这将创建一个 sample-python-repo 目录,其中包含测试所需的所有文件。

您可以使用此示例仓库来测试系统,并提出以下问题:

What does class UserService do?
How is service OrderProcessor implemented?
How does method process_payment use parameter payment_method?

测试

我们使用CLI和服务器方法测试了系统。CLI界面提供即时结果,建议用于初始测试。服务器提供代理集成所需的完整MCP协议实现。

注: 用于评估的Grip数据集可以在以下网址找到:https://github.com/joeyespo/grip/tree/master

示例测试结果显示,系统正确识别了代码库中的类目的、实现细节和参数使用。

故障排除

第一次跑步需要很长时间

首次运行时,系统需要下载SentenceTransformer模型文件(总共约270MB)。这是一个一次性过程,后续运行将使用缓存的模型。

端口已在使用中

如果您收到以下错误 [Errno 48] error while attempting to bind on address: address already in use,尝试:

  1. 指定其他端口: --port 8001
  2. 检查现有服务器: lsof -i :8000
  3. 终止现有进程: `kill

`

安装问题

如果您遇到包依赖关系问题,特别是 huggingface-hubsentence-transformers,确保您使用中指定的版本 requirements.txt。我们固定了特定版本以避免兼容性问题。

相关项目

  • MCP协议:https://modelcontextprotocol.io/introduction
  • 句子转换:https://sbert.net

目录标签

目录标签

代码分析Python开发工具搜索代码问答本地部署RAG系统语义搜索

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP