使用说明
MCP服务器
用于多客户端访问的集中式基于Docker的MCP(模型上下文协议)服务器。每个MCP工具都在自己的容器化环境中运行,共享Docker网络上的任何消费者(OpenWebUI、Claude Code、OpenCode等)都可以通过HTTP访问。
目录结构
mcp-servers/
├── docker-compose.yml ← Global orchestration (paper-search)
├── paper-search/ ← Paper search MCP tool
│ ├── Dockerfile
│ └── start.sh
├── playwright/ ← Browser automation MCP tool
│ ├── docker-compose.yml
│ └── mcpo-config.json
└── (future-tools)/ ← Add new MCPs here
├── Dockerfile
└── start.sh
快速开始
先决条件
- Docker和Docker Compose(v2:
docker compose) - 已命名的现有Docker网络
shared-network:docker network create shared-network
启动特定MCP
# Start only paper-search
docker compose --profile paper-search up -d
# View status
docker compose ps
启动所有MCP
docker compose --profile all up -d
停止
docker compose down
查看日志
docker compose logs -f paper-search-mcpo
可用MCP
论文搜索(paper-search-mcpo)
HTTP API,用于搜索和下载ArXiv、PubMed、bioRxiv、medRxiv,Google Scholar、Semantic Scholar,CrossRef和IACR的学术论文。
- 港口: 8765
- API文件:
http://localhost:8765/openapi.json - 网络名称:
paper-search-mcpo(Docker网络内) - 外部链接:
http://localhost:8765(来自主持人) - 简介:
paper-search或all
使用OpenWebUI(在共享网络上):
http://paper-search-mcpo:8765
主机使用情况:
curl http://localhost:8765/openapi.json
剧作家浏览器自动化(playwright-mcpo)
通过Playwright MCP实现无头Chromium浏览器自动化,并带有反检测隐形补丁。浏览网站,填写表单,点击元素,从JS密集的页面中提取数据。
备注:官方的Docker镜像只捆绑了Chromium。Firefox/WebKit需要自定义图像。
隐形配置 (stealth-init.js):
-
兽皮
navigator.webdriver旗帜 -
覆盖WebGL供应商/渲染器(Mac上的Intel Iris)
-
集合
navigator.platform到MacIntel -
补丁
HeadlessChrome在用户代理字符串中 -
使用模拟Mac Safari用户代理
en-GB区域设置 -
内部端口:8765(mcpo代理)
-
主机端口: 8767
-
剧作家MCP端口:8931(直接,用于OpenCode)
-
API文件:
http://localhost:8767/playwright/openapi.json -
网络名称:
playwright-mcpo(Docker网络内)
开始:
cd playwright && docker compose up -d --pull always
更新至最新Playwright MCP镜像:
cd playwright && docker compose up -d --pull always
使用OpenWebUI(在共享网络上):
http://playwright-mcpo:8765/playwright
主机使用情况:
curl http://localhost:8767/playwright/openapi.json
添加新的MCP工具
-
创建新的子目录:
mkdir mcp-servers/my-tool -
添加
Dockerfile和start.sh:Dockerfile:构建MCP服务器start.sh:启动服务器的入口点命令
-
更新
docker-compose.yml:services: my-tool: build: context: ./my-tool dockerfile: Dockerfile container_name: my-tool profiles: - my-tool - all ports: - "8766:8765" # Adjust port (avoid conflicts) networks: - shared-network restart: unless-stopped -
开始吧:
docker compose --profile my-tool up -d
网络详细信息
所有MCP容器都在 shared-network Docker网络,允许它们使用容器主机名相互通信以及与其他服务(OpenWebUI、OpenCode等)通信。
- 网络名称:
shared-network(必须在外部创建) - 检查:
docker network inspect shared-network
故障排除
容器无法启动
docker compose logs paper-search-mcpo
未找到网络
docker network create shared-network
端口已在使用中
在中修改端口映射 docker-compose.yml 并重新启动。
权限问题
确保您的用户可以访问Docker:
docker ps
建筑
论文搜索 (内置mcpo):
MCP Server (uv run)
↓
mcpo (HTTP wrapper, same container)
↓
HTTP API (port 8765)
↓
shared-network
剧作家 (单独的容器):
mcr.microsoft.com/playwright/mcp (official image, port 8931)
↓
mcpo proxy (separate container)
↓
HTTP API (port 8765)
↓
shared-network
这两种模式都公开了OpenWebUI、OpenCode、Claude Code等可使用的OpenAPI端点。