代码问答工具

MCP-Toolkit是一个基于Python的检索增强生成(RAG)系统,用于回答关于Python代码库的自然语言问题,支持代码分块、语义索引、问答和基准评估。

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

使用说明

🧠 MCP工具包

MCP Toolkit是一个基于Python的检索增强生成(RAG)系统,用于回答有关Python代码库的自然语言问题,专门用于分析提供的 grip-no-tests 代码(假设面试审核者单独包含)。

它执行以下操作:

  • 代码库分块
  • 嵌入+语义索引
  • 通过OpenAI进行检索和问答
  • 基准评估使用 grip_qa.json
  • 通过代理进行高级分析

🚀 入门指南

1.安装Python 3.12

确保您正在使用 Python 3.12.

python3 --version
# Should print: Python 3.12.x

2.添加 grip-no-tests Python代码库

放置提供的 grip-no-tests MCP Toolkit目录中的代码库:

MCP-Toolkit/
├── main.py
├── grip-no-tests/       ← manually included folder
├── grip_qa/
│   ├── 0001.q.md
│   ├── 0001.a.md
├── results/             ← contains example output files
├── .env

⚠️ 此仓库不托管在GitHub上。假设它是作为任务的一部分手动包含的。


3.安装依赖项

pip install -r requirements.txt

或手动:

pip install openai fastapi uvicorn chromadb python-dotenv pydantic

4.设置API密钥

创建一个 .env 项目根目录中的文件:

OPEN_API_KEY=sk-...

5.生成 grip_qa.json 从markdown

这将转换您的 .q.md 和 .a.md 将文件转换为基准数据集。

python main.py --generate-grip

✅ 这创造了 grip_qa.json 从文件中 grip_qa/ 文件夹。


💬 运行提问回答API

启动FastAPI服务器:

python main.py

打开浏览器:
http://localhost:8000/docs

测试 /qa 带有POST请求的端点,如:

{
  "question": "How do I run grip from the command line?"
}

✅ 该系统将:

  • 嵌入您的问题
  • 检索最相关的代码块
  • 将它们输入GPT
  • 返回有用的答案

🧪 运行评估

根据基准答案进行评估 grip_qa.json:

python main.py --evaluate

✅ 这个:

  • 在系统中运行所有抓握QA问题
  • 使用以下公式将答案与参考答案进行比较 difflib.SequenceMatcher
  • 打印每个问题的相似性得分和总体平均值

🧠 运行存储库分析

要生成关于代码库的markdown风格的报告,请执行以下操作:

python main.py --analyze

✅ 这使用LLM来回答以下高级问题:

  • 建筑是什么?
  • 使用了哪些设计模式?
  • 关键依赖关系是什么?

📂 示例结果

该项目包括 results/ 包含示例输出文件的文件夹来自:

  • --evaluate 跑
  • --analyze 报告
  • 样品 /qa 响应

这些说明了出于验证和测试目的,典型的运行应该是什么样子。


🛠 下一步/改进

以下是用最少的努力改进项目的方法:

1. 代码模块化

  • 现在一切都好了 main.py
  • 拆分为以下模块 retriever.py, evaluator.py等将提高可读性和可测试性

2. 使回购选择动态化

  • 目前,该系统假设 grip-no-tests 回购是手动添加的
  • 添加CLI标志或配置选项以动态分析任何仓库路径

3. 改进评估指标

  • 当前评估者使用 difflib.SequenceMatcher,这是字符级别
  • 切换到语义相似性模型(例如。, sentence-transformers)会更好地捕捉到转述但准确的答案

🔁 可选:使用Shell脚本进行验证

要使用一个命令对系统进行端到端测试,请使用附带的 validate.sh 脚本:

🧪 一次运行所有步骤:

chmod +x validate.sh
./validate.sh

这将:

  • 生成 grip_qa.json 从markdown文件
  • 运行评估并将输出保存到 results/eval_test.txt
  • 运行分析并将输出保存到 results/analysis_test.md

✅ 使用此功能可快速验证您的设置是否与预期行为匹配。