内容
# MCP RAG 服务器
一个独立的模型上下文协议(MCP)服务器,暴露了一个`search_documents`工具。该服务器连接到PostgreSQL数据库(pgvector)以执行语义检索。它获取相关的文档片段,并直接将原始上下文返回给调用的Agent/LLM(例如OpenWebUI),以便客户端的LLM可以执行最终的合成。
使用Python、FastAPI和官方MCP SDK构建。
## 项目结构
```
mcp-rag/
├── Dockerfile # 基于Alpine的强化Docker镜像
├── README.md
├── requirements.txt # Python依赖项
├── .env.example # 环境变量模板
└── src/
├── config.py # Pydantic设置
├── rag.py # 相似性搜索和检索逻辑
└── server.py # FastAPI MCP服务器定义
```
## 设置与配置
1. 将`.env.example`复制到`.env`并填写PostgreSQL连接详细信息:
```bash
cp .env.example .env
```
2. 确保您的`POSTGRES_HOST`可以从容器访问。
## 使用Docker运行
该项目提供了一个基于Alpine的强化Dockerfile。
1. 构建镜像:
```bash
docker build -t mcp-rag-server .
```
2. 运行容器:
```bash
docker run -d \
--name mcp-rag \
--env-file .env \
-p 8000:8000 \
mcp-rag-server
```
MCP服务器将在`http://localhost:8000/mcp`处可访问。您可以配置兼容MCP的客户端(例如OpenWebUI)通过SSE连接到此端点。
## 可用的MCP工具
- `search_documents(question: str, top_k: int = 5) -> str`
对pgvector存储执行相似性搜索,并返回原始文本片段及其引用。不会原生执行LLM合成。