本项目提供了一个概念验证实现,该实现允许AI代理查询向量数据库并检索与检索增强生成(RAG)相关的文档。
pipx 是一个帮助你在隔离环境中安装和运行Python应用程序的工具。
# 在macOS上
brew install pipx
pipx ensurepath
# 在Ubuntu/Debian上
sudo apt update
sudo apt install python3-pip python3-venv
python3 -m pip install --user pipx
python3 -m pipx ensurepath
# 在Windows上使用pip
pip install pipx
pipx ensurepath
# 导航到包含mcp_server文件夹的目录
cd /path/to/mcp-server-project
# 以可编辑模式安装
pipx install -e .
.env.example复制为.envGITHUB_TOKEN=your_token_hereOPENAI_API_KEY=your_key_here如果您不希望使用pipx:
cd mcp_server
pip install -r requirements.txt
在使用pipx安装后,您可以访问以下命令:
# 使用默认设置下载Move文件
mcp-download --query "use sui" --output-dir docs/move_files
# 使用更多选项下载
mcp-download --query "module sui::coin" --max-results 50 --new-index --verbose
# 使用默认设置搜索GitHub并索引文件
mcp-search-index --keywords "sui move"
# 搜索多个关键词并自定义选项
mcp-search-index --keywords "sui move,move framework" --max-repos 30 --output-results --verbose
# 保存搜索结果并使用自定义索引位置
mcp-search-index --keywords "sui coin,sui::transfer" --index-file custom/path/index.bin --output-results
mcp-search-index 命令提供了增强的GitHub存储库搜索功能:
# 索引默认位置的文件
mcp-index
# 使用自定义选项索引
mcp-index --docs-dir path/to/files --index-file path/to/index.bin --verbose
# 基本查询
mcp-query "什么是Sui Move中的模块?"
# 带有选项的高级查询
mcp-query "如何在Sui Move中定义结构体?" -k 3 -f
# 基本RAG查询(如果没有提供API密钥,则使用模拟的LLM)
mcp-rag "什么是Sui Move中的模块?"
# 使用特定的LLM API
mcp-rag "如何在Sui Move中定义结构体?" --api-key your_api_key --top-k 3
# 输出为JSON以便进一步处理
mcp-rag "sui::coin有哪些好处?" --output-json > rag_response.json
# 使用默认设置启动服务器
mcp-server
# 使用自定义设置启动
mcp-server --host 127.0.0.1 --port 8080 --index-file custom/path/index.bin
cd mcp_server
python main.py
要从GitHub下载Move文件并填充您的向量数据库:
# 使用默认查询“use sui”下载Move文件
./run.sh --download-move
# 自定义搜索查询
./run.sh --download-move --github-query "module sui::coin" --max-results 50
# 下载、索引并启动服务器
./run.sh --download-move --index
您也可以直接使用Python脚本:
python download_move_files.py --query "use sui" --output-dir docs/move_files
在查询之前,您需要索引您的文档。您可以将文本文件(.txt)、Markdown文件(.md)或Move文件(.move)放在docs目录下。
要索引文档,您可以:
--index标志的运行脚本:./run.sh --index
python index_move_files.py --docs-dir docs/move_files --index-file data/faiss_index.bin
您可以使用本地查询脚本:
python local_query.py "什么是RAG?"
# 使用更多选项
python local_query.py -k 3 -f "如何在Sui Move中定义结构体?"
# 直接使用LLM的RAG查询
python rag_integration.py "什么是Sui Move中的模块?" --index-file data/faiss_index.bin
# 使用API密钥(如果有)
OPENAI_API_KEY=your_key_here python rag_integration.py "Sui中的硬币是如何工作的?"
MCP API端点位于/mcp/action。您可以使用它执行不同的操作:
retrieve_documents:根据查询检索相关文档index_documents:从目录中索引文档示例:
curl -X POST "http://localhost:8000/mcp/action" -H "Content-Type: application/json" -d '{"action_type": "retrieve_documents", "payload": {"query": "什么是RAG?", "top_k": 3}}'
完整的RAG(检索增强生成)流水线如下:
此工作流完全实现在rag_integration.py模块中,可以通过命令行或作为您自己应用中的库来使用。
系统可以从GitHub基于搜索查询提取Move文件。它实现了两种方法:
要配置您的GitHub令牌,请将其设置在.env文件或环境变量中:
GITHUB_TOKEN=your_github_token_here
mcp_server/
├── __init__.py # 包初始化
├── main.py # 主服务器文件
├── mcp_api.py # MCP API实现
├── index_move_files.py # 文件索引实用程序
├── local_query.py # 本地查询实用程序
├── download_move_files.py # GitHub Move文件提取器
├── rag_integration.py # LLM集成用于RAG
├── pyproject.toml # 包配置
├── requirements.txt # 依赖项
├── .env.example # 示例环境变量
├── README.md # 此文件
├── data/ # 存储FAISS索引
├── docs/ # 示例文档
│ └── move_files/ # 下载的Move文件
├── models/ # 模型实现
│ └── vector_store.py # FAISS向量存储实现
└── utils/
├── document_processor.py # 文档处理实用程序
└── github_extractor.py # GitHub文件提取实用程序
要扩展这个概念验证:
MIT