带有1C配置结构RAG描述的MCP服务器
在YouTube上演示启动和使用: 
更多文章.
该项目由多个服务组成,用于处理基于1C文档的向量数据库:
- 嵌入服务 -向量表示生成服务
- 获取文本结构配置文件.epf -卸载1C配置结构的处理
- 加载器 -用于将卸载存档从1C下载到QDRANT矢量数据库的web界面
- MCP服务器 -使用RAG回答问题的服务器
新功能
🚀 多向量搜索
MCP服务器现在支持使用RRF(reciprocal rank fusion)进行多向量搜索:
- 二向量表示:
object_name和friendly_name对于每个对象 - RRF 算法:自动合并不同向量的搜索结果
- 改进的精度:更相关的搜索结果
- 向后兼容性:禁用多向量搜索功能
快速起动
启动所有服务
chmod +x start.sh && chmod +x stop.sh
# Запуск всех сервисов
./start.sh
# Или вручную
docker-compose up --build停止服务
# Остановка всех сервисов
./stop.sh
# Или вручную
docker-compose down可用服务
启动后将提供:
- 装载机(流线型): http://localhost:8501-用于下载文件的web界面
- 嵌入服务: http://localhost:5000-用于生成琥珀色的API
- Qdrant: http://localhost:6333/dashboard矢量数据库
- MCP服务器: http://localhost:8000/mcp-问答服务器
- MCP检查员: http://localhost:6274-验证/调试MCP服务器的Web接口
项目结构
mcp-1c-v1/
├── embeddings/ # Сервис генерации эмбеддингов
│ ├── Dockerfile
│ ├── embedding_service.py
│ ├── config.json
│ └── requirements.txt
├── loader/ # Веб-интерфейс для загрузки данных
│ ├── Dockerfile
│ ├── loader.py
│ ├── config.py
│ └── requirements.txt
├── mcp/ # MCP 1С RAG сервер
│ ├── Dockerfile
│ ├── mcp_server.py
│ ├── config.py
│ └── requirements.txt
├── inspector/ # MCP Inspector
│ ├── Dockerfile
│ ├── mcp_server.py
│ ├── config.py
│ └── requirements.txt
├── ПолучитьТекстСтруктурыКонфигурацииФайлами.epf # Обработка для 1С для выгрузки структуры
├── docker-compose.yml # Конфигурация всех сервисов
├── start.sh # Скрипт запуска
└── stop.sh # Скрипт остановки使用
- 启动所有服务:
./start.sh - 从1C下载配置结构描述:
ПолучитьТекстСтруктурыКонфигурацииФайлами.epf - 打开加载程序Web界面:http://youraddress:8501
- 下载带有Markdown文件和objects.csv文件的ZIP档案
- 单击“开始处理”
- 下载后,数据将在QDRANT中可用,以便通过MCP服务器进行搜索。
对于支持现代Streamable HTTP协议的代理(cursor,roocode),请指定:http://youaddress:8000/mcp Vscode Copilot虽然支持Streamable HTTP,但我只能作为SSE工作,所以我指定:http://youraddress:8000/mcp/sse
VSCode副驾驶。../YourProject/.vcode/mcp.json
{
"servers": {
"my-1c-mcp-server": {
"headers": {
"x-collection-name": "my_vector_collection"
},
"url": "http://youraddress:8000/mcp/sse"
}
}
}Для光标。../YourProject/.coursor/mcp.json
{
"servers": {
"my-1c-mcp-server": {
"headers": {
"x-collection-name": "my_vector_collection"
},
"url": "http://youraddress:8000/mcp"
}
}
}通过标题 x-collection-name 您可以在QDRANT中指定集合名而不是默认集合名 1c_ragT.附录您几乎可以在项目级别上指定MCP设置,这允许相同的MCP服务器实例用于具有不同集合的不同项目(对于不同的1C配置)。
环境变量
您可以通过环境变量配置:
EMBEDDING_SERVICE_URL-Embadding服务URL(默认情况下:http://youraddress:5000)QDRANT_HOSTQDRANT主机(默认为localhost)QDRANT_PORTQDRANT端口(默认为6333)COLLECTION_NAME-QDRANT中的集合名称(默认为1Cu RAG),可以覆盖在标题中x-collection-name在MCP服务器连接设置中ROW_BATCH_SIZE-Butch字符串大小(默认为250)EMBEDDING_BATCH_SIZE-Butch Embedding大小(默认为50)
调试
要查看单独服务的日志:
# Логи конкретного сервиса
docker-compose logs -f loader
docker-compose logs -f embedding-service
docker-compose logs -f qdrant
docker-compose logs -f mcp-server
# Логи всех сервисов
docker-compose logs -f