与CodeBase Rag Mcp聊天
与CodeBase Rag Mcp聊天 是个聪明人 人工智能驱动的代码检索和修改系统 利用 RAG(检索增强生成) 随着 MCP(模型上下文协议)。它实现了无缝连接 代码搜索、草稿生成和自动同步 你之间 本地工作空间 和 向量数据库.
______________________________________________________________________
🧠 概述
该系统使用模型上下文协议为智能代码管理提供了端到端的解决方案:
- 📦 上传和索引 将代码项目压缩到矢量数据库中(一次性设置)
- 🔍 查询相关代码片段 使用RAG支持的自然语言
- ✍️ 生成代码修改 通过MCP工具自动
- ✅ 审查和批准 在将更改应用于本地文件夹和Vector DB之前
- 🔌 MCP服务器:可流式HTTP服务器公开了两个自定义MCP工具
- 🤖 拟人客户:与MCP工具通信以进行智能代码操作
- ⚙️ FastAPI+Streamlit架构 用于强大的后端前端集成
🎥 演示视频: 在织机上观看
______________________________________________________________________
✨ 主要特点
- 🔗 MCP集成:为基于工具的AI交互实现模型上下文协议
- 🧠 语义搜索:由矢量数据库(Zilliz)提供支持,用于精确的代码检索
- 💬 自然语言接口:使用简明英语查询您的代码库
- 🧾 申请前起草:在提交更改之前审查生成的修改
- 🔄 自动同步:保持本地文件夹和Vector DB完全同步
- 🛠️ 两个自定义MCP工具:
- RAG搜索工具:语义代码搜索和检索 - 代码更新工具:批准后更新本地文件夹和矢量嵌入中的代码
- 🌐 MCP流式HTTP服务器:通过HTTP公开工具以实现灵活集成
- 🤖 拟人客户:内置客户端,可与MCP工具无缝通信
- ⚙️ 模块化架构:可扩展和生产就绪的设计
______________________________________________________________________
🏗️ 项目结构
RAG_MCP_CODE_SEARCH/
│
├── src/
│ ├── uploads/ # Folder for uploaded code zips & extracted files
│ ├── files.py # File handling utilities
│ └── uploads.py # Upload processing logic
│
├── server.py # FastAPI backend (API endpoints, VectorDB handling)
├── client.py # Anthropic Client
├── streamlit.py # Streamlit frontend for user interaction
├── requirements.txt # Project dependencies
├── .env # Environment variables (see configuration below)
└── README.md # Project documentation______________________________________________________________________
🔧 MCP架构
模型上下文协议实现
该项目实现了 模型上下文协议(MCP),这使得AI模型和外部工具之间能够进行结构化通信。
┌─────────────────┐
│ Anthropic │
│ Claude Client │
└────────┬────────┘
│ MCP Protocol
↓
┌─────────────────────┐
│ MCP HTTP Server │
│ (Streamable) │
└────────┬────────────┘
│
┌────┴────┐
↓ ↓
┌────────┐ ┌────────────┐
│ RAG │ │ Code │
│ Search │ │ Update │
│ Tool │ │ Tool │
└────┬───┘ └─────┬──────┘
│ │
↓ ↓
┌─────────────────────┐
│ Vector Database │
│ Local File System │
└─────────────────────┘MCP工具
1. RAG搜索工具 (rag_search)
- 目的:通过代码库进行语义搜索
- 输入:自然语言查询
- 输出:带有上下文的相关代码片段
- 过程:
- 将查询转换为嵌入 - 在Vector DB中搜索类似代码 - 返回带有文件路径的排名结果
2. 代码更新工具 (code_update)
- 目的:用户批准后更新代码
- 输入:文件路径、新代码内容、审批状态
- 输出:更新确认
- 过程:
- 更新本地文件系统 - 重新生成嵌入 - 更新矢量数据库 - 保持两家商店之间的同步
______________________________________________________________________
🔐 环境配置
创建一个 .env 根目录中的文件,配置如下:
# OpenAI API Configuration
OPENAI_API_KEY="your-openai-api-key"
# Zilliz Cloud Configuration
CLUSTER_ENDPOINT="your-zilliz-cluster-endpoint"
TOKEN="your-zilliz-token"
COLLECTION_NAME="CodeBase"
# Anthropic API Configuration
ANTHROPIC_API_KEY="your-anthropic-api-key"
# Folder Paths
FOLDER_TO_UPDATE="" ## keep it blank
FOLDER_TO_UPLOAD="src/uploads"
# MCP Server Configuration
MCP_SERVER_HOST="localhost"
MCP_SERVER_PORT="8001"配置参数
| 参数 | 说明 |
|---|---|
OPENAI_API_KEY | 用于嵌入和LLM操作的OpenAI API密钥 |
CLUSTER_ENDPOINT | Zilliz Cloud集群端点URL |
TOKEN | Zilliz Cloud的身份验证令牌 |
COLLECTION_NAME | Zilliz中集合的名称(默认值:“CodeBase”) |
ANTHROPIC_API_KEY | Claude集成的Anthropic API密钥 |
FOLDER_TO_UPDATE | |
FOLDER_TO_UPLOAD | 用于存储上传的ZIP文件和提取代码的文件夹 |
______________________________________________________________________
⚙️ 安装说明
1.️⃣ 克隆存储库
git clone https://github.com/rohitmukati/RAG_MCP_CODe_SEARCH.git
cd RAG_MCP_CODE_SEARCH2.️⃣ 创建和激活虚拟环境
Linux/macOS:
python3 -m venv venv
source venv/bin/activate窗户:
python -m venv venv
venv\Scripts\activate3.️⃣ 再进行
pip install -r requirements.txt4.️⃣ 配置环境变量
创建一个 .env 文件,并添加API密钥和配置,如 环境配置 上面的部分。
______________________________________________________________________
▶️ 运行项目
步骤1:启动FastAPI后端
在新终端中:
uvicorn server:app --reloadAPI服务器将在 http://localhost:8000
步骤2:启动Streamlit界面
打开另一个终端并运行:
streamlit run streamlit.pyMCP通信流程
User Query → Streamlit UI → Anthropic Client → MCP HTTP Server
↓
[Tool Selection]
↓
┌─────────────────┴─────────────────┐
↓ ↓
RAG Search Tool Code Update Tool
↓ ↓
Vector DB Query Local FS + Vector DB
↓ ↓
Return Results Return Confirmation
↓ ↓
└─────────────────┬─────────────────┘
↓
MCP HTTP Server Response
↓
Anthropic Client
↓
User Interface______________________________________________________________________
🧠 技术栈
| 组件 | 技术 |
|---|---|
| 前端 | 流光灯 |
| 后端 | FastAPI |
| 向量存储 | Zilliz云 |
| 模型API | OpenAI,人类学 |
| 协议 | 模型上下文协议(MCP) |
| MCP服务器 | 自定义流式HTTP服务器 |
| 语言模型 | Claude(通过Anthropic API) |
| RAG 流程 | 自定义实现 |
| 部署 | Uvicorn快速API |
______________________________________________________________________
📋 需求
- Python 3.8+
- OpenAI API访问
- 人类API访问(Claude)
- Zilliz云账号
- 足够的存储空间用于代码索引
- MCP服务器通信的网络接入
______________________________________________________________________
🔍 MCP协议优势
为什么选择模型上下文协议?
- 🔌 标准化工具通信:AI工具交互的一致界面
- 🔄 无状态操作:每个工具调用都是独立且可重复的
- 📡 HTTP流式传输:大型操作的实时流式响应
- 🧩 模块化设计:无需更改核心架构即可轻松添加新工具
- 🤖 人工智能原生:专为LLM工具交互而设计
- 🔒 安全:对文件系统和数据库操作的受控访问
______________________________________________________________________
🤝 贡献
欢迎投稿!请随时提交拉取请求。对于重大更改,请先打开一个问题来讨论您想要更改的内容。
添加新的MCP工具
- 在中创建新工具
mcp/tools/ - 实现工具界面
- 在中注册该工具
mcp/server.py - 如果需要,更新Anthropic客户端
______________________________________________________________________
📄 许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
______________________________________________________________________
🐛 故障排除
常见问题
问题:MCP服务器连接失败
- 解决方案:确保MCP服务器在正确的端口上运行,并检查防火墙设置
问题:矢量数据库连接失败
- 解决方案:验证您的
CLUSTER_ENDPOINT和TOKEN在.env文件
问题:索引需要太长时间
- 解决方案:对于大型代码库来说,这是正常的。索引只需要做一次。
问题:超过API费率限制
- 解决方案:检查您的OpenAI/Anthropic API使用限制,并在必要时升级
问题:MCP工具没有响应
- 解决方案:检查MCP服务器日志,确保所有依赖项都已正确安装
______________________________________________________________________
📚 资源
______________________________________________________________________
\**内置❤️ 使用RAG、MCP和Claude AI*
