ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Docker部署Ollama+open-webui+MySQL-MCP:TaoToken统一Key接入与配置骨架

Docker部署Ollama+open-webui+MySQL-MCP:TaoToken统一Key接入与配置骨架 1. 本地 Docker 编排 Ollama、open-webui 与 MySQL-MCP 的真实场景如果你正在折腾本地 AI 工具链大概率会遇到这样一个局面Ollama 跑在 11434 端口open-webui 跑在 3000 端口MySQL-MCP 又单独占一个 8000 端口三个容器各自为政模型调用走一套 KeyMCP 工具调用走另一套配置最后连自己都记不清哪个服务该填哪个地址。这套 Docker Compose 编排方案要解决的就是这个问题——把 Ollama、open-webui、MySQL-MCP 三个服务放进同一张网络里再用 TaoToken 的统一 Key 和 API 通道把模型调用与工具调用串起来让本地 AI 工具链真正能跑通「对话→查库→返回结果」的完整链路。这篇文章面向的是已经装好 Docker Desktop、想在本机搭一套可跟做的 AI 工具链的开发者。我会给出可直接复制的config.toml与settings.json骨架、CC Switch 与 Cline 的配置片段以及容器启动后验证 MCP 连通与 Key 生效的具体命令。整套流程实测下来从零到能查库大约 20 分钟前提是镜像拉取顺利。需要提前说明的是Ollama 负责本地模型推理open-webui 负责对话界面MySQL-MCP 负责把自然语言转成 SQL 去操作数据库而 TaoToken 在这里扮演的是统一 API 网关的角色——它不替代任何编辑器也不碰你的生产库只是把模型调用的 Key 和通道收敛到一个地方管理。下面按编排顺序展开。2. TaoToken 前置统一 Key 与 API 通道的准备在写 Compose 文件之前先把 TaoToken 这边的准备工作做完否则后面容器起来了还要回头改配置。TaoToken 的核心作用是提供一个统一的 API 入口让你在 open-webui、Cline、CC Switch 这些工具里填同一个 Key 就能调用模型不用每个工具单独申请。第一步是拿到 API Key。访问控制台地址https://taotoken.net/console登录后在 API Keys 页面创建一个新 Key复制出来备用。这个 Key 后面会填到 open-webui 的 OpenAI 兼容接口配置里也会填到 Cline 的settings.json中。第二步是确认 API 通道地址。TaoToken 的 API 端点是https://taotoken.net/api它兼容 OpenAI 的/v1/chat/completions格式所以任何支持自定义 OpenAI Base URL 的工具都能接。open-webui 里填https://taotoken.net/api/v1Cline 里填https://taotoken.net/api具体路径按工具要求微调。第三步是了解模型对话入口。如果你想先验证 Key 是否生效可以直接打开https://taotoken.net/models在网页里发一条消息能正常返回就说明 Key 和通道都没问题。这一步比在容器里排查快得多建议先做。如果你后续要做长期编码或 Agent 任务可以关注 Coding Plan 页面https://taotoken.net/coding-plan它针对高频调用场景做了额度优化。接入文档在https://taotoken.net/doc里面有各工具的详细配置示例遇到格式问题可以对照。注意TaoToken 的 Key 只用于模型调用通道不要把它写进 MySQL-MCP 的环境变量里MCP 连的是本地数据库两者职责分开。3. 可复制配置docker-compose.yml 与 MCP 骨架这一节给出完整的编排文件。我试过把三个服务放在同一个docker-compose.yml里用自定义网络让它们互相用服务名访问这样 MySQL-MCP 连数据库时直接写mysql:3306就行不用去 Docker Desktop 里 inspect 容器 IP。先建目录结构mkdir -p ~/ai-stack/mcpo-docker cd ~/ai-stack然后写docker-compose.ymlservices: ollama: image: ollama/ollama:latest container_name: ollama ports: - 11434:11434 volumes: - ollama_data:/root/.ollama networks: - ai-net restart: unless-stopped open-webui: image: ghcr.io/open-webui/open-webui:main container_name: open-webui ports: - 3000:8080 environment: - OLLAMA_BASE_URLhttp://ollama:11434 - OPENAI_API_BASE_URLhttps://taotoken.net/api/v1 - OPENAI_API_KEYsk-你的TaoTokenKey volumes: - openwebui_data:/app/backend/data depends_on: - ollama networks: - ai-net restart: unless-stopped mysql: image: mysql:8.4 container_name: mysql environment: MYSQL_ROOT_PASSWORD: root123456 MYSQL_DATABASE: demo_db ports: - 3306:3306 volumes: - mysql_data:/var/lib/mysql networks: - ai-net restart: unless-stopped mcpo: build: ./mcpo-docker container_name: mcpo ports: - 8000:8000 volumes: - ./mcpo-docker/config.json:/app/config.json depends_on: - mysql networks: - ai-net restart: unless-stopped volumes: ollama_data: openwebui_data: mysql_data: networks: ai-net: driver: bridge关键点在于OPENAI_API_BASE_URL和OPENAI_API_KEY这两个环境变量它们让 open-webui 在保留本地 Ollama 模型的同时也能通过 TaoToken 调用云端模型。ai-net网络让 mcpo 能用mysql这个服务名直连数据库。接着准备 mcpo 的config.json这是 MCP 服务器的注册骨架{ mcpServers: { mysql: { command: uvx, args: [ --from, mysql_mcp_server_pro, mysql_mcp_server_pro, --mode, stdio ], env: { MYSQL_HOST: mysql, MYSQL_PORT: 3306, MYSQL_USER: root, MYSQL_PASSWORD: root123456, MYSQL_DATABASE: demo_db, MYSQL_ROLE: admin } } } }MYSQL_HOST填mysql而不是 IP靠的就是 Compose 的服务名解析。MYSQL_ROLE设为admin允许增删改查如果只想查询可以改成readonly。如果你用 Cline 或 CC Switch 做客户端对应的settings.json片段如下{ mcpServers: { mysql: { url: http://localhost:8000/mysql, type: streamableHttp } }, openai: { baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoTokenKey, model: gpt-4o-mini } }Cline 走的是 HTTP 方式连 MCP所以填http://localhost:8000/mysql模型部分走 TaoToken 的 OpenAI 兼容接口。CC Switch 的配置逻辑类似把baseUrl和apiKey换成 TaoToken 的即可。4. 启动与验证MCP 连通与 Key 生效的检查步骤配置写完后按顺序启动并逐项验证。不要一次性up -d然后指望全绿分步排查更省时间。先拉镜像并启动基础服务docker compose up -d ollama mysql docker compose logs -f ollama等 Ollama 日志出现Listening on 127.0.0.1:11434后拉一个模型进去docker exec -it ollama ollama pull qwen2.5:7b docker exec -it ollama ollama listollama list能看到模型名就说明推理服务就绪。接着启动 open-webui 和 mcpodocker compose up -d open-webui mcpo docker compose psdocker compose ps里四个服务都应该是running状态。然后验证 MCP 连通性打开浏览器访问http://localhost:8000/mysql/docs能看到 Swagger 文档页面就说明 mcpo 把 MySQL MCP 挂载成功了。如果 404检查config.json是否挂载正确docker exec -it mcpo cat /app/config.json再验证 Key 是否生效。访问http://localhost:3000注册管理员账号后进入设置在「连接」里应该能看到两个来源本地 Ollama 和 OpenAI 兼容接口。点开 OpenAI 那一项确认 Base URL 是https://taotoken.net/api/v1Key 已填入。然后在对话界面选一个云端模型发消息能返回就说明 TaoToken 通道打通了。最后做一次端到端验证在 open-webui 对话框里输入「查一下 demo_db 里有哪些表」如果左下角出现扳手图标且模型调用了 mysql 工具返回了表列表整条链路就跑通了。命令行侧可以用 curl 直接测 MCPcurl -X POST http://localhost:8000/mysql \ -H Content-Type: application/json \ -d {jsonrpc:2.0,method:tools/list,id:1}返回工具列表 JSON 就说明 MCP 服务正常响应。5. 本篇常见错排查部署过程中最容易卡住的地方集中在网络解析和 Key 格式上下面列几个我踩过的坑。mcpo 连不上 MySQL报Cant connect to MySQL server。九成是MYSQL_HOST填了localhost或127.0.0.1。在容器里localhost指向容器自身不是宿主机也不是 mysql 容器。正确做法是填 Compose 服务名mysql前提是两者在同一个ai-net网络里。用docker exec -it mcpo ping mysql能通就说明网络没问题。open-webui 里云端模型报 401。检查OPENAI_API_KEY是否带了sk-前缀以及 Base URL 是否漏了/v1。TaoToken 的兼容接口路径是https://taotoken.net/api/v1少写/v1会 404。改完环境变量后要docker compose up -d open-webui重建容器才生效光 restart 不会重新读 environment。http://localhost:8000/mysql/docs返回 404。先确认config.json里的 server 名是mysql路径里的/mysql要和它一致。如果 server 名写成mysql-mcp那访问路径就是/mysql-mcp/docs。另外 mcpo 启动时如果 uvx 下载依赖失败日志里会有Failed to start server用docker compose logs mcpo看具体报错。Ollama 模型拉取卡住。大模型文件动辄几个 GB网络波动很正常。可以换小模型先跑通流程比如qwen2.5:3b或deepseek-r1:1.5b验证链路后再换大模型。docker exec -it ollama ollama pull支持断点续传中断后重跑即可。Cline 里 MCP 显示未连接。Cline 的settings.json里 MCP 类型要写streamableHttpURL 用http://localhost:8000/mysql不要加/docs。如果 Cline 跑在另一台机器上localhost要换成宿主机的局域网 IP。6. 语义一致 CTA整套编排跑通后你手里就有了一套本地可用的 AI 工具链Ollama 提供本地推理open-webui 提供对话入口MySQL-MCP 提供数据库操作能力而 TaoToken 把模型调用的 Key 和通道统一收口。后续要扩展其他 MCP 服务只需在config.json里加一段 server 配置重启 mcpo 容器即可。如果你在接入过程中遇到 Key 或通道问题建议先到 API Keys 页面https://taotoken.net/api-keys核对 Key 状态再对照接入文档https://taotoken.net/doc检查 Base URL 格式。想快速验证模型是否可用直接打开模型对话页面https://taotoken.net/models发一条消息最直观。长期做编码或 Agent 任务的话Coding Plan 页面https://taotoken.net/coding-plan有对应的额度方案可以参考。
返回列表