本项目为基于MCP的RAG助手提供了一个简洁而可靠的蓝图,专为Python和Pybricks初学者(如FLL儿童和教练)设计。它通过整合Pybricks的官方文档和示例,为用户提供基于实际情况、版本感知的答案。
本项目包含两个核心文件,助您快速搭建起工作环境:
ingest_pybricks.py:该脚本会爬取官方的Pybricks文档、教程以及关键的GitHub页面,对内容进行合理分块,并构建一个ChromaDB集合。mcp_server.py:这是一个轻量级的MCP风格工具服务器,它基于Chroma集合,提供了docs.search、code.search、snippet.suggest和compare.versions等功能。初始爬取范围已限制在对初学者最有用、最稳定的页面,如API参考、参数/常量、机器人技术/DriveBase、入门指南、教程和更新日志等。您可以在后续添加更多内容。
运行脚本前,请确保已安装以下依赖:
pip install requests beautifulsoup4 lxml markdownify tiktoken chromadb sentence-transformers fastapi uvicorn
首次运行或定期更新数据时,执行以下命令:
python ingest_pybricks.py
启动工具服务器:
uvicorn mcp_server:app --reload --port 8765
以下是使用ingest_pybricks.py脚本的示例:
#!/usr/bin/env python3
"""
Build a beginner-friendly Pybricks RAG corpus into ChromaDB.
- Crawls/loads selected Pybricks docs/tutorials + key GitHub changelogs.
- Normalizes & chunks (HTML/Markdown-aware; preserves code blocks).
- Creates multi-view docs (full text + headings/signatures + identifiers).
- Indexes into ChromaDB collections: pybricks_docs and pybricks_snippets.
Requires: requests, beautifulsoup4, lxml, markdownify, tiktoken, chromadb, sentence-transformers
pip install requests beautifulsoup4 lxml markdownify tiktoken chromadb sentence-transformers
"""
# 后续代码保持不变...
以下是使用mcp_server.py提供的工具的示例:
# 发送文档搜索请求
import requests
data = {
"query": "DriveBase的使用方法",
"filters": {"version": "latest"}
}
response = requests.post("http://localhost:8765/tools/docs.search", json=data)
print(response.json())
初始允许列表包含以下内容:
docs.pybricks.com,包括机器人技术/DriveBase和参数/常量。(Pybricks Documentation)pybricks.com/learn/getting-started/*,code.pybricks.com主页。(Pybricks, Pybricks Code)pybricks-code和pybricks-micropython的更新日志。(GitHub)docs.search(query, filters):混合密集搜索,可根据版本和来源进行过滤。code.search(symbol):优先查找标识符匹配的结果。snippet.suggest(goal, hardware):返回预定义的代码模板。compare.versions(feature):检查更新日志,查找特定功能的版本信息。DriveBase.turn、Port.A等)提升结果排名。ingest_pybricks.py脚本通过以下步骤完成数据的爬取和处理:
requests库发送HTTP请求,获取页面内容,并使用BeautifulSoup解析HTML。mcp_server.py使用FastAPI框架实现了一个简单的工具服务器,提供了以下接口:
/tools/docs.search:处理文档搜索请求,支持根据版本和来源进行过滤。/tools/code.search:处理代码搜索请求,优先查找标识符匹配的结果。/tools/snippet.suggest:根据目标和硬件信息,返回预定义的代码模板。/tools/compare.versions:检查更新日志,查找特定功能的版本信息。文档中未提及相关许可证信息。
ingest_pybricks.py脚本,以更新ChromaDB集合中的数据。k值和过滤条件,以获得更准确的结果。⚠️ 重要提示
确保在运行脚本前已安装所有依赖项,否则可能会导致脚本运行失败。同时,注意数据爬取可能会受到网站的反爬机制限制,请遵守相关网站的使用条款。