FRC RAG MCP服务器
这包含一个 模型上下文协议(MCP) 为FRC机器人编程提供基于RAG的WPILib文档访问的服务器。
⚠️ 重要提示:Beta状态和可用性
该服务目前处于测试阶段,并在本地托管。
这 仅 目前支持的WPILib的可用版本是WPILib 2025.3.2版本I将在发布后立即添加2026。
- 限量供应:服务器可能会出现停机或中断
- 演出:响应时间可能因网络条件而异
- 扩展:如果需求增加,扩展基础设施已经计划好并准备部署
- 无服务:这是在测试期间按原样提供的社区服务
请耐心等待,我们将努力提高可靠性和性能。如果您遇到连接问题,请报告,以便我们解决。
______________________________________________________________________
此设置的好处
WPILib的一个坏习惯是每年都会发生突破性的变化,虽然这在过去是可以的,但随着代理编码的普及,很明显需要采取一些措施来帮助缓解这个问题。这就是为什么这个项目存在并提供:
✅ 准确的信息:基于WPILib官方文件的回复
✅ 版本特定:获取您的特定WPILib版本的答案
✅ 最新:无需重新培训AI即可更新文档
✅ 上下文感知:Copilot了解您项目的FRC/WPILib背景
什么是RAG?
RAG(检索增强生成) 是一种通过在生成答案之前从知识库中检索相关信息来增强AI响应的技术。RAG没有完全依赖人工智能的训练数据,而是:
- 检索 根据您的问题从矢量数据库中提取相关文档块
- 增强 人工智能与检索到的信息的上下文
- 生成 基于官方文件的准确、最新答案
这确保了您使用的任何GenAI模型都能提供准确的、特定于版本的WPILib指导,而不是其训练数据中可能过时的信息。
什么是复印件说明文件?
这 .github/copilot-instructions.md file是一个特殊的配置文件,用于定制GitHub Copilot在项目中的行为方式。它
- 指导副驾驶的行为 针对您的特定项目环境
- 指示何时使用MCP工具 (例如,“始终向WPILib MCP服务器查询机器人代码问题”)
- 设定编码标准 为您的团队制定惯例
- 定义项目特定的首选项 (框架版本、设计模式等)
为什么它对这个项目至关重要
为了使此WPILib RAG MCP服务器有效工作,Copilot指令文件 必须明确告诉Copilot查询MCP服务器 关于WPILib的相关问题。如果没有此说明,Copilot可能会依赖其训练数据,而不是MCP服务器中准确、最新的文档。
安装说明
1.MCP服务器
MCP服务器已在运行 http://97.139.150.106:3000。您不需要安装或运行任何东西,只需配置VS Code即可连接到它。
2.配置VS代码以连接到MCP服务器
您需要将MCP服务器配置添加到VS代码中。有两种方法可以做到这一点:
选项A:自动设置(推荐)
复制提供的 .vscode/mcp.json 文件到您的VS Code用户配置:
视窗:
copy .vscode\mcp.json %APPDATA%\Code\User\mcp.jsonmacOS/Linux:
cp .vscode/mcp.json ~/.config/Code/User/mcp.json选项B:手动配置
- 打开VS Code的用户配置文件夹:
- 视窗: %APPDATA%\Code\User\ - macOS/Linux: ~/.config/Code/User/
- 创建或编辑文件
mcp.json在该文件夹中
- 添加以下配置:
{
"servers": {
"WPILibRag": {
"url": "http://97.139.150.106:3000/",
"type": "http"
}
},
"inputs": []
}重要提示:
- 服务器名称必须精确
WPILibRag(区分大小写) - URL包含尾随斜线
- 这是一个基于HTTP的MCP服务器,而不是基于stdio的
- 服务器是远程托管的,不需要本地安装
3.创建复制品说明文件
创建一个 .github 项目根目录中的文件夹(如果不存在),然后创建 copilot-instructions.md 里面:
your-project/
├── .github/
│ └── copilot-instructions.md
├── src/
├── README.md
└── ... other files4.配置副驾驶指令文件
将以下内容添加到 .github/copilot-instructions.md:
# GitHub Copilot Instructions
⚠️ **CRITICAL - READ THIS FIRST** ⚠️
═══════════════════════════════════════════════════════════════════════════════
🛑 **MANDATORY REQUIREMENT - NO EXCEPTIONS** 🛑
Before answering ANY question about:
- WPILib APIs, classes, methods, or syntax
- Robot code (commands, subsystems, autonomous)
- FRC programming patterns or best practices
- Command-based programming
- Any WPILib framework functionality
YOU MUST:
1. **STOP** - Do not answer from memory or training data
2. **QUERY** - Use `mcp_wpilibrag_query_wpilib_docs` tool FIRST
3. **VERIFY** - Base your answer on the retrieved documentation
4. **CITE** - Reference the official WPILib documentation
This is NOT optional. This is a MANDATORY step for ALL WPILib-related questions.
═══════════════════════════════════════════════════════════════════════════════
## Project Context
This is a WPILib robotics project for FRC (FIRST Robotics Competition).
### Project Configuration
- **WPILib Version**: [SPECIFY VERSION HERE - e.g., 2025.1.1]
- **Programming Language**: [SPECIFY LANGUAGE HERE - Java/C++/Python]
- **Target Platform**: FRC Robot (roboRIO)
## WPILib RAG Server Usage
- **Tool Name**: `mcp_wpilibrag_query_wpilib_docs`
- **When to Use**: ALWAYS for any WPILib-related question (see mandatory requirement above)
- **Parameters**:
- `question`: The user's question
- `version`: WPILib version (default: "2025")
- `language`: "Java", "Python", "C++", or "API Reference"
## Preferences
- Follow WPILib best practices and conventions
- Use appropriate design patterns for robot code (Command-based, subsystems, etc.)
- Ensure thread safety when necessary
- Include proper error handling and logging
- Reference official WPILib documentation for all framework-specific code
## Code Style
- Write clear, maintainable code
- Add comments for complex logic but avoid over-commenting
- Use descriptive variable and method names
- Follow FRC/WPILib naming conventions
## Additional Notes
- Remember to consider real-time constraints for robot code
- Always consider competition requirements and rules┌─────────────────┐
│ Your Code │
│ Questions │
└────────┬────────┘
│
v
┌─────────────────────────────────────┐
│ GitHub Copilot │
│ (reads copilot-instructions.md) │
└────────┬────────────────────────────┘
│
v
┌─────────────────────────────────────┐
│ MCP Server │
│ (WPILibRag) │
└────────┬────────────────────────────┘
│
v
┌─────────────────────────────────────┐
│ RAG System │
│ - Vector Database │
│ - WPILib Documentation Chunks │
│ - Similarity Search │
└────────┬────────────────────────────┘
│
v
┌─────────────────────────────────────┐
│ Retrieved Documentation │
│ (sent back to Copilot) │
└─────────────────────────────────────┘可用的MCP工具
此MCP服务器提供以下工具:
mcp_wpilibrag_query_wpilib_docs-按版本和语言查询WPILib文档mcp_wpilibrag_get_latest_version-获取可用的最新WPILib版本mcp_wpilibrag_list_available_versions-列出所有可用的WPILib版本mcp_wpilibrag_list_available_languages-列出版本的可用语言mcp_wpilibrag_embed_query-为自定义搜索生成嵌入向量
故障排除
MCP服务器未连接
- 验证
mcp.json文件位于正确的位置(%APPDATA%\Code\User\在Windows上) - 检查服务器名称是否准确
WPILibRag(区分大小写) - 确保URL为
http://97.139.150.106:3000/带有尾随斜线 - 配置更改后重新启动VS代码
- 检查输出面板(视图→ 输出→ GitHub Copilot聊天)
- 验证您是否已连接到互联网以访问远程服务器
副驾驶未使用MCP服务器
- 确保
.github/copilot-instructions.md存在于您的项目根目录中 - 检查说明是否明确提到使用MCP服务器
- 尝试明确地询问:“向WPILib MCP服务器查询…”
过时的文件
- 检查MCP服务器中加载了哪个WPILib版本
- 更新您的版本
copilot-instructions.md匹配 - 验证RAG数据库是否加载了正确的版本
贡献
仍在计划我要开源什么,以及这个项目的运行成本是多少。我肯定会开源一些东西,但我可能会向供应商收取少量费用,以添加他们的库文档。我希望他们联合起来,而不是编造自己的版本。
