🚀 Noor MCP代码助手
MCP(模型上下文协议)服务器,将Claude Desktop与您的RAG-powered代码代理API连接起来。
   
______________________________________________________________________
📋 概述
此项目创建了一个MCP服务器,该服务器允许 克劳德桌面 与你现有的沟通 RAG代码代理API 奔跑在 localhost:8900。当您在Claude Desktop中询问与代码相关的问题时,它可以使用此工具从您的代码库中获取上下文感知的答案。
🎯 特性
- ✅ 与Claude Desktop无缝集成
- ✅ 连接到现有的RAG API(
/api/chat/rag) - ✅ 会话管理确保对话的连续性
- ✅ 全面的错误处理
- ✅ 可通过环境变量进行配置
- ✅ 为未来的代理扩展(SQL、React、Java)做好准备
______________________________________________________________________
🏗️ 项目结构
noor_mcp_code_assistant_parent/
├── env_container/ # Virtual environment
│ ├── bin/
│ ├── lib/
│ └── ...
└── noor_mcp_code_assistant/ # Project source
├── mcp_server.py # Main MCP server
├── config.py # Configuration management
├── requirements.txt # Dependencies
├── .env.example # Environment template
├── .env # Your configuration (git-ignored)
└── README.md # This file______________________________________________________________________
🚀 快速开始
1.️⃣ 创建虚拟环境
导航到父文件夹并创建环境:
cd noor_mcp_code_assistant_parent
python3.11 -m venv env_container激活环境:
# Linux/WSL/macOS
source env_container/bin/activate
# Windows PowerShell
.\env_container\Scripts\Activate______________________________________________________________________
2.️⃣ 安装要求
cd noor_mcp_code_assistant
pip install -r requirements.txt______________________________________________________________________
3.️⃣ 配置环境变量
复制示例文件并自定义:
cp .env.example .env编辑 .env 使用您的设置:
# Required
RAG_API_BASE_URL=http://localhost:8900
RAG_CHAT_ENDPOINT=/api/chat/rag
# Optional
DEFAULT_SESSION_ID=claude-desktop-session
REQUEST_TIMEOUT=120______________________________________________________________________
4.️⃣ 配置Claude桌面版
找到您的Claude Desktop配置文件:
窗户:
%APPDATA%\Claude\claude_desktop_config.json(通常: C:\Users\\AppData\Roaming\Claude\claude_desktop_config.json)
添加MCP服务器配置:
{
"mcpServers": {
"noor-code-assistant": {
"command": "wsl",
"args": [
"-d", "Ubuntu-20.04",
"--",
"/home//noor_mcp_code_assistant_parent/env_container/bin/python",
"/home//noor_mcp_code_assistant_parent/noor_mcp_code_assistant/mcp_server.py"
],
"env": {
"PYTHONUNBUFFERED": "1"
}
}
}
}⚠️ 重要提示: 替换 `` 使用您的实际WSL用户名并相应地调整路径。
🔍 查找您的WSL分发名称
wsl --list --verbose使用所示的确切名称(例如。, Ubuntu-20.04, Ubuntu等等)
______________________________________________________________________
5.️⃣ 验证设置
第一步: 确保您的RAG API正在运行:
# In WSL terminal
cd /path/to/your/rag-project
source env_container/bin/activate
uvicorn main:app --reload --port 8900第二步: 测试RAG API:
curl -X POST http://localhost:8900/api/chat/rag \
-H "Content-Type: application/json" \
-d '{"session_id": "test", "message": "hello"}'步骤3: 完全重新启动Claude Desktop(检查系统托盘)
步骤4: 这 noor-code-assistant 工具现在应该出现在Claude Desktop中!
______________________________________________________________________
💬 使用示例
配置后,您可以询问Claude Desktop:
“使用代码助手创建一个C#函数,通过员工ID获取员工请求”
“询问代码助理如何在我的项目中实现分页”
“使用code_assistant向我显示员工实体的DTO结构”
______________________________________________________________________
🔮 添加未来代理
当您准备添加更多代理(SQL、React、Java)时:
步骤1:将端点添加到RAG API
@app.post("/api/sql/agent")
async def sql_agent(request: SQLAgentRequest):
# Your SQL agent logic
pass第二步:更新 .env
SQL_AGENT_ENDPOINT=/api/sql/agent步骤3:取消注释中的工具定义 mcp_server.py
查找评论 sql_agent 工具和处理程序,然后取消注释。
步骤4:重新启动克劳德桌面
______________________________________________________________________
🐛 故障排除
| 问题 | 解决方案 |
|---|---|
| MCP服务器未出现 | 在以下网址查看克劳德桌面日志 %APPDATA%\Claude\logs\ |
| 连接被拒绝 | 确保RAG API正在运行 localhost:8900 |
| WSL路径问题 | 使用完整的Linux路径(例如。, /home/user/...) |
| 未找到Python | 在venv中使用Python的完整路径 |
| 超时错误 | 增加 REQUEST_TIMEOUT 在 .env |
📋 查看日志
克劳德桌面日志:
C:\Users\\AppData\Roaming\Claude\logs\独立测试MCP服务器:
cd noor_mcp_code_assistant
source ../env_container/bin/activate
python mcp_server.py______________________________________________________________________
📊 配置参考
| 变量 | 默认值 | 描述 |
|---|---|---|
RAG_API_BASE_URL | http://localhost:8900 | RAG API的基本URL |
RAG_CHAT_ENDPOINT | /api/chat/rag | 聊天端点路径 |
DEFAULT_SESSION_ID | claude-desktop-session | 连续性的默认会话 |
REQUEST_TIMEOUT | 120 | API超时(秒) |
______________________________________________________________________
🔐 安全说明
- 此MCP服务器仅用于 出站 向本地RAG API发送HTTP请求
- 不存储或记录敏感数据
- 会话ID仅用于对话上下文
- 所有通信都通过本地主机进行
______________________________________________________________________
📄 许可证
MIT许可证-随意使用和修改!
______________________________________________________________________
👨💻 作者
努尔·乌丁
______________________________________________________________________
🌟 支持
如果您觉得这有帮助,请:
- ⭐ 为存储库添加星号
- 📺 订阅 努尔代码逻辑
- 🔗 与其他开发人员分享
快乐编码! 🚀
