使用说明
1C UPP-MCP配置文档服务器
搜索配置描述1c UPP:QDRANT中的Ingestion(两个命名向量),FASTMCP上的MCP服务器,多向量搜索(RRF)。
快速启动(启动并按地址连接)
- 安装 (一次):
cd D:\1C_mcp python -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -r requirements.txt - Qdrant (必须启动):
docker compose up -d - 数据 (ZIP出现后一次):
python -m ingest "D:\1C_mcp\data\ОписаниеКонфигурации.zip" - 启动服务器 (一个项目根命令):
- PowerShell (从
D:\1C_mcp):.\run_server.ps1 - 命令提示符 或双击:
run_server.bat(或).\run_server.bat) - 从任何文件夹:脚本的完整路径,例如
& "D:\1C_mcp\run_server.ps1"PowerShell或D:\1C_mcp\run_server.bat在CMD。
- PowerShell (从
- 连接到Cursor:这个项目已经有了一个框架。 .cursor/mcp.json -打开文件夹时,1C-UPP-DOCS服务器将被捕获。手动:Settings→MCP→添加类型服务器
streamableHttpс网址http://127.0.0.1:8000/mcp更改配置后,重新启动Cursor。
设置(qdrant URL,端口,路径)在文件中指定 .env 在项目的根。
第8000章忙吗? (错误10048)-关闭旧进程或更换端口 .env (MCP_PORT=8001).找出谁占领了港口,并完成:
netstat -ano | findstr :8000
taskkill /PID <номер_из_колонки_PID> /F
要求
- Python 3.10+
- Docker(用于QDRANT)或外部QDRANT
安装
cd D:\1C_mcp
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
启动QDRANT
docker compose up -d
检查: http://localhost:6333/dashboard.
如果图像不下载 (错误) 127.0.0.1:10801 或Registry:Docker使用未运行的代理。在Docker Desktop(settings→resources→proxies)中禁用代理或删除变量 HTTP_PROXY/HTTPS_PROXY,然后重新启动Docker并再次运行 docker compose up -d.
Docker和Dokploy(从任何地方访问MCP)
堆栈可以在Docker中完全运行:上升 Qdrant 和 MCP服务器在卸载到服务器(包括Dokploy)后,可以从任何计算机上的Cursor或其他客户端通过URL连接到MCP。
本地(Docker Compose)
从项目的根:
docker compose up -d
- Qdrant: http://localhost:6333
- 主控程序: http://localhost:8000/mcp
连接到cursor:url http://localhost:8000/mcp (类型) streamableHttp).
QDRANT:ZIP存储库中的数据(data/ОписаниеКонфигурации.zip)在Docker Ingestion中,当MCP第一次启动时,它会自动启动。本地: python -m ingest "data/ОписаниеКонфигурации.zip".
在Dokploy
-
存储库/文件
将项目放入Git或下载到Dokploy,以便从根本上Dockerfile,docker-compose.yml,requirements.txt,config.py,embedding.py,qdrant_ops.py,mcp_server.py. -
创建应用程序
在Dokploy: Docker Compose →创建应用程序→指定存储库或下载文件,根目录docker-compose.yml. -
通过域访问MCP(Traefik)
Вdocker-compose.yml在服务中mcp解码带有traefik和网络标签的块(文件末尾):- 替换
mcp.your-domain.com你的域名(例如,mcp.example.com). - 取消评论
networks:和dokploy-network(外部)。 - 在服务
mcp取消评论networks: default, dokploy-network.
或者通过Dokploy UI设置域:在应用程序→ 领域 →为MCP服务添加域(容器8000端口,路径)
/mcp在URL中)。 - 替换
-
环境变量
在Dokploy中,您可以在应用程序设置中指定(如果需要):COLLECTION_NAME,EMBED_MODEL.QDRANT_URLCompose已指定为http://qdrant:6333. -
装配和启动
运行deploy。启动后,MCP将通过以下地址提供:- 按域名 :
https://mcp.your-domain.com/mcp - 或者通过IP和端口,如果端口8000已在主机上尝试:
http://<IP-сервера>:8000/mcp
- 按域名 :
-
摄入
档案data/ОписаниеКонфигурации.zip它包含在存储库中,并在构建时复制到Docker映像中。
在第一次启动时,MCP Entrypoint会自动将数据加载到QDRANT(10-30分钟,请参阅MCP日志)。
重新加载:docker compose --profile ingest run --rm ingest -
从任何地方连接到Cursor
Settings→MCP→添加类型服务器 流式Http с网址:https://mcp.your-domain.com/mcp(如果设置了域和HTTPS)- 或
http://<IP-сервера>:8000/mcp(如果使用IP和端口)
保存后重新启动cursor。
简短
连接的MCP URL在哪里
|--------------|--------------------------|
Docker Compose(本地) http://localhost:8000/mcp |
IP服务器,端口8000打开。 http://<IP>:8000/mcp |
–Dokploy+域(Traefik)→ https://mcp.your-domain.com/mcp |
配置(.env)
文件 .env 在项目根中指定所有参数。实例已创建;如有必要,请编辑:
ÐÐÐÐÐÐÐÐÐÐÐÐÐ
|------------------|-----------------------------------|----------------------|
| QDRANT_URL |URL Qdrant| http://localhost:6333 |
| COLLECTION_NAME收藏名称 1c_upp_docs |
| EMBED_MODEL Sentence-Transformers模型 paraphrase-multilingual-MiniLM-L12-v2 |
| MCP_TRANSPORT 运输: http (URL连接)或 stdio | http |
| MCP_HOST ÐHTTP主机(若要从其他PC访问,请指定) 0.0.0.0) | 127.0.0.1 |
| MCP_PORT HTTP端口 8000 |
| MCP_PATH HTTP的路径 /mcp |
摄入
准备带有配置说明的zip:
- ZIP根:文件 objects.csv (分隔符)
;UTF-8编码)。 - CSV列: 对象名称, 对象类型, 同义词, 文件 (有关存档根的MD路径)。
- 在存档中,Markdown是“文件”列中路径上的文件。
启动下载(从项目文件夹;env将自动):
python -m ingest "D:\1C_mcp\data\ОписаниеКонфигурации.zip"
边界案例处理:
- BOM 为 CSV阅读
utf-8-sig标题正常化。 - 西里尔字母:到处都是UTF-8;模型
paraphrase-multilingual-MiniLM-L12-v2支持俄语。 - 缺少MD文件:不跳过payload字段中的条目
doc它将是空的,并在日志中写入警告。 - 无效/不存在的集合在搜索和
get_1c_object_doc返回“找不到集合”的明显错误。首先运行Ingestion。»
MCP服务器
默认情况下 .env 设置模式 超文本传输协议:启动服务器并连接到客户端搜索栏中的地址。
- 发射:一个来自项目根的命令--
.\run_server.ps1(PowerShell)或.\run_server.bat(cmd/双击)或者python mcp_server.py已激活的VEV。 - 连接地址:
http://localhost:8000/mcp(另一台PC)http://<IP>:8000/mcp)
对于模式 标准 (客户端启动进程)在.env中设置 MCP_TRANSPORT=stdio 并将客户端配置为命令 python mcp_server.py.
工具(tools)
-
search1c-docs
search_1c_docs(query, object_type=None, limit=10, use_multivector=True)
搜索文档。在use_multivector=True使用RRF向量object_name和friendly_name. -
get_1c_object_doc
get_1c_object_doc(object_name)
从payload对象名称检索:object_name,object_type,synonym,file_name,doc. -
健康检查
检查集合的可用性和可用性(方便使用,而不是单独的HTTP)/health).
项目结构
D:\1C_mcp\
data/ # ОписаниеКонфигурации.zip (~2 МБ), копируется в образ при сборке
config.py # загрузка .env и конфиг
embedding.py # sentence-transformers
qdrant_ops.py # коллекция, named vectors, поиск (single + RRF)
ingest.py # pipeline: ZIP → CSV → MD → Qdrant
mcp_server.py # FastMCP: search_1c_docs, get_1c_object_doc, health_check
run_server.bat # запуск MCP-сервера (CMD / двойной клик)
run_server.ps1 # запуск одной командой из корня: .\run_server.ps1
requirements.txt
docker-compose.yml
Dockerfile
.dockerignore
README.md
健康终点
HTTP Endpoint /health 它不会上升。使用工具检查状态 健康检查 或MCP的可用性(例如, fastmcp list 服务器URL)。如果需要,可以添加带有路由的单独应用程序(Fastapi/Starlette) GET /health.