基于检索增强生成(RAG)的技能管理系统,通过Model Context Protocol(MCP)提供智能技能选择和经验存储功能。
RAG技能管理系统是一个基于MCP协议的服务器应用,提供以下核心功能:
- 智能技能选择:使用LLM理解用户需求并选择最合适的技能
- 经验存储与检索:通过Mem0实现语义存储和智能检索
- 标准化工具集成:基于MCP协议实现与各种AI Agent的集成
重要提醒:本项目需要本地部署两个核心服务,没有它们项目无法正常运行。请按照以下顺序完成部署:
- 作用:存储和管理技能及经验数据的向量表示
- 部署方式:Docker
- 官方地址:https://qdrant.tech/
# 启动Qdrant
docker run -d -p 6333:6333 -p 6334:6334 \
-v $(pwd)/qdrant_data:/qdrant/storage \
qdrant/qdrant验证部署成功:
# 检查容器是否运行
docker ps | grep qdrant
# 在浏览器中访问Web界面
# http://localhost:6333/dashboard
# 如果能看到Qdrant的管理界面说明部署成功- 作用:提供文本向量化服务,支持多种预训练模型
- 部署方式:本地安装
- 官方地址:https://ollama.com/
# 安装Ollama(根据你的操作系统选择)
# macOS
brew install ollama
# Linux
curl -fsSL https://ollama.com/install.sh | sh
# 启动Ollama服务
ollama serve
# 拉取需要的嵌入模型
ollama pull nomic-embed-text验证部署成功:
# 检查服务状态
ollama list
# 应该看到:nomic-embed-text
# 测试模型是否可用
ollama run nomic-embed-text "test"按照以下步骤完成项目设置:
git clone https://github.com/your-repo/rag-skill-mcp.git
cd rag-skill-mcp项目使用YAML文件定义技能。编辑skills/文件夹中的文件来自定义你的技能库。
技能文件格式示例(在skills/example.yaml中创建一个新技能):
id: "example_skill"
description: "当用户需要执行特定任务时使用此技能"
content: |
## 技能执行指南
### 适用场景
- 场景描述1
- 场景描述2
### 执行步骤
1. 第一步操作
2. 第二步操作
3. 验证结果
### 注意事项
- 重要提醒1
- 重要提醒2如果需要自定义配置,复制并编辑环境变量:
cp .env.example .env
# 编辑.env文件,修改需要的配置项# 使用Makefile构建(推荐)
make build
# 或者直接使用Docker命令
DOCKER_BUILDKIT=1 docker build -f docker/Dockerfile -t rag-skill-mcp:latest .现在需要配置Claude Desktop来使用MCP服务器。有两种配置方式:
如果第3步你创建了.env文件,使用此方式:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"rag-skill-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"--network",
"host",
"--env-file",
"/path/to/your/.env",
"rag-skill-mcp:latest"
]
}
}
}适合生产环境或不想使用.env文件的情况:
{
"mcpServers": {
"rag-skill-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"--network",
"host",
"-e",
"LLM_API_KEY=your_deepseek_api_key_here",
"-e",
"LLM_BASE_URL=https://api.deepseek.com/v1",
"-e",
"LLM_MODEL=deepseek-chat",
"-e",
"LLM_PROVIDER=deepseek",
"-e",
"MEM0_QDRANT_HOST=localhost",
"-e",
"MEM0_QDRANT_PORT=6333",
"-e",
"MEM0_EMBEDDER_MODEL=nomic-embed-text",
"-e",
"MEM0_EMBEDDING_DIMS=768",
"rag-skill-mcp:latest"
]
}
}
}配置完成后重启Claude Desktop,你应该能在Claude中看到新的MCP工具可用。
如果你需要修改代码进行开发:
# 安装开发依赖
pip install uv
uv sync
# 运行开发服务器
make dev
# 或者:PYTHONPATH=src uv run python src/main.py复制并编辑环境变量文件:
cp .env.example .env
# 编辑.env文件,填入以下必需配置:# LLM API配置(必需)
LLM_API_KEY=your_deepseek_api_key_here
LLM_BASE_URL=https://api.deepseek.com/v1
LLM_MODEL=deepseek-chat
LLM_PROVIDER=deepseek
# Mem0 Qdrant配置(必需,与你部署的Qdrant一致)
MEM0_QDRANT_HOST=localhost
MEM0_QDRANT_PORT=6333
# Mem0 Embedder配置(必需,与你部署的Ollama模型一致)
MEM0_EMBEDDER_MODEL=nomic-embed-text
MEM0_EMBEDDING_DIMS=768
# Mem0 LLM配置(可选,默认使用主LLM配置)
MEM0_LLM_MODEL=deepseek-chat
# MCP服务器配置(可选)
MCP_SERVER_HOST=0.0.0.0
MCP_SERVER_PORT=3000
# 应用配置(可选)
LOG_LEVEL=INFO
SKILLS_CONFIG_PATH=config/skills.yaml配置完成后,可以通过命令行测试MCP服务器:
# 方法1:使用.env文件
docker run --rm -i --network host --env-file .env rag-skill-mcp:latest
# 方法2:手动指定环境变量(安全性更高)
LLM_API_KEY=your_key LLM_BASE_URL=https://api.deepseek.com/v1 LLM_MODEL=deepseek-chat LLM_PROVIDER=deepseek MEM0_QDRANT_HOST=localhost MEM0_QDRANT_PORT=6333 MEM0_EMBEDDER_MODEL=nomic-embed-text MEM0_EMBEDDING_DIMS=768 docker run --rm -i --network host rag-skill-mcp:latest我们欢迎贡献!请遵循以下步骤:
- Fork项目
- 创建您的特性分支(
git checkout -b feature/AmazingFeature) - 提交您的更改(
git commit -m 'Add some AmazingFeature') - 推送到分支(
git push origin feature/AmazingFeature) - 打开一个Pull Request
- 使用black进行代码格式化
- 使用flake8进行代码检查
- 使用mypy进行类型检查
- 确保所有测试通过
请使用清晰、描述性的提交消息,遵循Conventional Commits规范。
本项目采用MIT许可证 - 详情请参阅LICENSE文件。
如果您有任何问题或建议,请通过以下方式联系我们:
- 问题跟踪:GitHub Issues
- 电子邮件:alex.tech.lab@outlook.com
感谢您使用RAG技能管理系统!我们希望这个系统能帮助您更有效地管理和使用技能知识。