使用说明
RAG MCP服务器
MCP服务器,具有本地LLM和LANGGRAPH for RAG(retrieval-augmented generation)功能。
机会
- 文件索引 -支持
.md,.txt,.rst,.py,.js,.ts,.json,.yaml,.yml - 向量搜索 通过Chromadb进行语义搜索
- RAG管道 -带有正确RAG的Langgraph(重新提出请求、相关性评估、幻觉检查)
- 本地LLM -使用OLLAMA,无需付费API
快速启动
Docker Compose
重要的是: Ollama不是Docker的一部分,必须在本地单独运行。
# 1. Запустить Ollama локально (отдельным терминалом)
ollama serve
ollama pull phi3:mini
# 2. Запустить Docker контейнер
docker compose up
局部起动
# Установка зависимостей
pip install -e ".[dev]"
# Запуск Ollama (отдельным терминалом)
ollama serve
ollama pull phi3:mini
# Запуск MCP сервера
python -m src.server
使用
启动Docker
# Сборка и запуск (Ollama должен быть запущен локально)
docker compose up --build
# Проверить статус
docker compose ps
要求: 在启动Docker之前,请确保Ollama在本地运行:
ollama serve
IDE连接(本地Python)
{
"mcpServers": {
"rag-mcp": {
"command": "python",
"args": ["-m", "src.server"]
}
}
}
连接到IDE(Docker容器)
{
"mcpServers": {
"rag-mcp": {
"command": "docker",
"args": ["exec", "-i", "rag-mcp-server", "python", "-m", "src.server"]
}
}
}
或者,使用 npx сMCP检查员:
# Подключение к работающему контейнеру
docker exec -it rag-mcp-server python -m src.server
可用工具
- 索引文件夹 -索引文档文件夹
index_folder("./sample_docs")
- ask_问题 -问个问题
ask_question("Как оформлять docstrings в Python?")
- find_relevant_docs -查找相关文件
find_relevant_docs("Python docstrings", top_k=5)
- summarize_文件 -创建Sammari文档
summarize_document("./sample_docs/api_reference.md")
- 索引状态 -获取索引统计
index_status()
测试
# Запуск всех тестов
pytest
# Запуск с покрытием
pytest --cov=src
项目结构
rag-mcp/
├── src/
│ ├── config.py # Конфигурация
│ ├── server.py # MCP сервер
│ ├── indexer/ # Индексация документов
│ ├── rag/ # RAG движок (LangGraph)
│ └── utils/ # Утилиты
├── sample_docs/ # Демо-документы
├── tests/ # Тесты
├── docker-compose.yml # Docker Compose
└── Dockerfile
配置
参数在 src/config.py:
CHUNK_SIZE-常量大小(默认为1000)CHUNK_OVERLAP-覆盖通道(默认为200)OLLAMA_BASE_URLURL ollama(默认)http://localhost:11434)LLM_MODEL-生成模型(默认为PHI3:mini)DEFAULT_TOP_K-搜索结果数(默认为5)
要求
- Python 3.11+
- Ollama(本地或Docker)
- Docker和Docker Compose(用于容器化)
