news 2026/9/29 20:50:39

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker部署Ollama+open-webui+MySQL-MCP:TaoToken统一Key接入与配置骨架

1. 本地 Docker 编排 Ollama、open-webui 与 MySQL-MCP 的真实场景

如果你正在折腾本地 AI 工具链,大概率会遇到这样一个局面:Ollama 跑在 11434 端口,open-webui 跑在 3000 端口,MySQL-MCP 又单独占一个 8000 端口,三个容器各自为政,模型调用走一套 Key,MCP 工具调用走另一套配置,最后连自己都记不清哪个服务该填哪个地址。这套 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/v1,Cline 里填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.yml:

services: 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_URL=http://ollama:11434 - OPENAI_API_BASE_URL=https://taotoken.net/api/v1 - OPENAI_API_KEY=sk-你的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 list

ollama list能看到模型名就说明推理服务就绪。接着启动 open-webui 和 mcpo:

docker compose up -d open-webui mcpo docker compose ps

docker 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/v1,Key 已填入。然后在对话界面选一个云端模型发消息,能返回就说明 TaoToken 通道打通了。

最后做一次端到端验证:在 open-webui 对话框里输入「查一下 demo_db 里有哪些表」,如果左下角出现扳手图标且模型调用了 mysql 工具,返回了表列表,整条链路就跑通了。命令行侧可以用 curl 直接测 MCP:

curl -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,报Can't 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 类型要写streamableHttp,URL 用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有对应的额度方案可以参考。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 20:50:11

工业相机镜头选型指南:从焦距计算到接口匹配的完整流程

工业相机镜头选型这件事,说简单也简单,说复杂能让人掉不少头发。我见过太多项目,相机选了高分辨率的,光源也配了进口的,结果成像效果一塌糊涂,最后排查半天发现是镜头拖了后腿。镜头是机器视觉系统的“眼睛…

作者头像 李华
网站建设 2026/9/29 20:49:44

从零搭建AI工程体系:从训练到部署的完整实践指南

1. 这个标题到底在说什么很多人第一次看到"ai-engineering-from-scratch"这个项目名,第一反应是"又要学AI了",然后可能就划走了。但我可以明确告诉你,这个标题真正想表达的,不是让你去啃Transformer源码&…

作者头像 李华
网站建设 2026/9/29 20:49:35

使用 Apache Beam Python SDK 读取 JSON 文件:ReadFromJson 变换实战指南

大数据批处理流处理数据工程 【免费下载链接】beam Apache Beam is a unified programming model for Batch and Streaming data processing. 项目地址: https://gitcode.com/gh_mirrors/beam4/beam 点击查看 免费下载 导读 JSON 是数据工程中最通用的交换格式之一…

作者头像 李华
网站建设 2026/9/29 20:48:48

配电柜温湿度监控为何必须选RJ45以太网传感器

1. 为什么配电柜监控非要选RJ45以太网温湿度传感器——从“能用”到“必须用”的现场逻辑去年夏天,我接手一个老电厂的智能升级项目,目标很朴素:把32台高压配电柜的环境数据实时传回中控室。最初方案是用USB转串口RS485温湿度模块&#xff0c…

作者头像 李华
网站建设 2026/9/29 20:48:46

以太网变送器双协议批量配置实战指南

1. 为什么“双协议批量配置”不是锦上添花,而是大规模环境监测项目的生死线我接手过三个超500个点位的工业级环境监测项目,最深的体会是:设备部署完成≠系统可用。真正卡住交付进度、拖垮运维成本的,从来不是传感器精度或外壳防护…

作者头像 李华