ARTICLE DETAIL

资讯详情

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

MCP Server 启动和应用:从 streamableHttp 到 Cherry Studio 接入 TaoToken 实战

MCP Server 启动和应用:从 streamableHttp 到 Cherry Studio 接入 TaoToken 实战 1. 为什么 streamableHttp 才是 MCP Server 的正确打开方式MCPModel Context Protocol模型上下文协议说白了就是给大模型装了一根“标准数据线”让模型能按统一格式去调用外部工具和数据源。你不需要为每个模型单独写一套对接逻辑只要工具端实现了 MCP 协议任何支持 MCP 的客户端都能直接挂上去用。这件事对做智能硬件、做本地工具链的人来说意义很大因为工具生态终于不用被某一家模型绑死了。MCP 目前主流有三种传输方式stdio、SSE、streamableHttp。stdio 是本地进程管道通信客户端把 Server 当子进程拉起来通过标准输入输出传 JSON-RPC 消息。它写起来最简单但问题也很明显——Server 和客户端必须跑在同一台机器上进程生命周期绑死多客户端并发基本没法搞放到企业级场景里根本撑不住。SSE 是早期远程方案用 HTTP 长连接推事件但它需要维护一个长连接通道断线重连、负载均衡、网关转发都容易出幺蛾子规范里也已经把它标记为被取代。streamableHttp 是现在推荐的远程传输方式。它本质上是把 MCP 的 JSON-RPC 消息走标准 HTTP POST 请求Server 端可以按需返回普通响应或者流式响应客户端不需要维持长连接状态。这意味着你可以把 MCP Server 部署在任何能跑 HTTP 服务的地方前面挂 Nginx、挂网关、做鉴权、做限流都不受影响。对于要把工具能力开放给多个客户端、或者要跟云端模型配合的场景streamableHttp 是唯一合理的选择。这篇要做的实战是拿一个封装了网页播放器 zwplayer 设置功能的 MCP Serverzwplayer_mcp_server当例子把它用 streamableHttp 跑起来然后在 Cherry Studio 里接入模型侧走 TaoToken 统一通道调用 deepseek。整条链路跑通之后你就能在 Cherry Studio 对话框里直接让模型去操作播放器参数而不用手动改配置。下面从环境准备开始一步步给可复制的命令和配置。2. 前置准备zwplayer_mcp_server 环境与 TaoToken 通道先把 MCP Server 这一端跑起来。zwplayer_mcp_server 是一个基于 mcp 组件库写的 Python 服务源码在 GitHub 上可以拿到。我试过用 conda 建独立环境来隔离依赖这样不会污染系统 Python后面排查问题也干净。第一步是拉代码、建环境、装依赖。假设你已经装好 conda 和 git执行下面这几条git clone https://github.com/chendanyu/zwplayer_mcp_server.git cd zwplayer_mcp_server conda create -n qaanthing python3.11 -y conda activate qaanthing pip install -r requirements.txt这里环境名我沿用了qaanthing你可以换成自己习惯的名字但后面启动命令里的环境名要对应改掉。requirements.txt 里主要是 mcp 相关的包装完之后可以用pip list | grep mcp确认一下 mcp 包在不在。第二步是确认 Server 的入口和端口。zwplayer_mcp_server 的启动入口是python -m zwplayer_mcp_server默认监听 8000 端口streamableHttp 的端点是/mcp。也就是说 Server 跑起来之后完整地址是http://127.0.0.1:8000/mcp。如果你 8000 端口被占了可以在启动参数里改端口具体看项目 README 里的参数说明。第三步是准备模型侧的通道。Cherry Studio 里要填的模型服务我们不走各家平台各自的地址而是统一指向 TaoToken 的 API 通道。TaoToken 的 API 地址是https://taotoken.net/api模型对话入口在https://taotoken.net/api/chat/completions这个路径下具体以文档为准。你需要先在 TaoToken 控制台创建一个 API Key控制台地址是https://taotoken.net/consoleKey 管理页面在https://taotoken.net/api-keys。创建好之后把 Key 复制出来后面填到 Cherry Studio 的 API 密钥框里。这里要强调一点MCP Server 和模型服务是两条独立的链路。MCP Server 负责提供工具模型服务负责推理和决定调不调工具。Cherry Studio 作为客户端一边连 MCP Server 拿工具列表一边连模型服务发对话请求。两条链路都通了工具调用才能完整跑起来。所以下面配置的时候MCP 设置和模型设置要分开填别混在一起。TaoToken 在这里的角色是模型侧的统一入口。你不需要在 Cherry Studio 里分别配 deepseek、配其他模型的地址只要 Base URL 指向 TaoToken 的 API 地址Model ID 填deepseek对应的模型标识请求就会走统一通道转发。这样换模型的时候只改 Model ID不用动 Base URL对经常切换模型做对比测试的人很省事。3. 可复制配置MCP Server 启动命令与 Cherry Studio 接入片段这一节给完整的可复制配置。先启动 MCP Server再配 Cherry Studio 的 MCP 设置最后配模型服务。启动 MCP Server 的命令如下在 zwplayer_mcp_server 项目根目录下执行conda activate qaanthing cd /home/data/cdy/zwplayer_mcp_server/src python -m zwplayer_mcp_server启动成功后终端会打印监听地址类似Uvicorn running on http://127.0.0.1:8000。看到这行说明 Server 已经在 8000 端口上跑起来了streamableHttp 端点就是http://127.0.0.1:8000/mcp。注意cd的路径要换成你本机实际的项目路径别直接抄/home/data/cdy/这个示例路径。接下来打开 Cherry Studio点右上角齿轮图标进设置左侧菜单找到“MCP 设置”。新增一个 MCP Server填写内容如下{ name: zwplayer_mcp_server, type: streamableHttp, url: http://127.0.0.1:8000/mcp, enabled: true }名称随便起能认出是 zwplayer 就行。类型一定要选“可流式传输的 HTTPstreamableHttp”不要选 stdio 或 SSE。URL 填http://127.0.0.1:8000/mcp端口和路径跟 Server 启动时保持一致。填完点右上角的启用按钮然后点“工具”标签正常情况下能看到该 Server 对外暴露的工具列表比如设置播放器尺寸、设置自动播放之类的函数。如果工具列表是空的说明客户端没连上 Server回到第 5 节排查。然后是模型服务配置。在 Cherry Studio 设置里选“模型服务”新增一个自定义服务商配置如下{ provider: taotoken, baseUrl: https://taotoken.net/api, apiKey: 你的_TaoToken_API_Key, modelId: deepseek, type: openai-compatible }Base URL 填https://taotoken.net/apiAPI Key 填你在 TaoToken 控制台创建的那串 KeyModel ID 填deepseek。类型选 OpenAI 兼容格式因为 TaoToken 的 API 是 OpenAI 兼容的Cherry Studio 里选这个类型就能直接对接。填完之后把默认的硅基流动模型取消勾选避免请求走错通道。这里有个细节Cherry Studio 里模型服务的 Base URL 和 MCP Server 的 URL 是两个完全不同的东西。前者是模型推理接口后者是工具协议接口。很多人第一次配的时候会把 MCP 的 URL 填到模型服务里结果对话一直报错。记住模型服务走https://taotoken.net/apiMCP 走http://127.0.0.1:8000/mcp两者不要混。配置完成后在对话框里选择要用的 MCP 服务勾选 zwplayer_mcp_server然后输入提示词比如“麻烦你给我介绍一下 zwplayer 播放器的设置项”。模型会先判断是否需要调用工具如果需要它会通过 MCP 协议向 Server 发请求拿到工具返回结果后再组织语言回复你。4. 验证请求从连通性测试到工具调用成功配置填完不代表链路通了得实际发请求验证。验证分两步先验 MCP Server 本身能不能响应再验 Cherry Studio 里模型能不能成功调工具。第一步用 curl 直接打 MCP Server 的 streamableHttp 端点确认 Server 活着。MCP 的 streamableHttp 走 JSON-RPC初始化请求大概长这样curl -X POST http://127.0.0.1:8000/mcp \ -H Content-Type: application/json \ -H Accept: application/json, text/event-stream \ -d { jsonrpc: 2.0, id: 1, method: initialize, params: { protocolVersion: 2024-11-05, capabilities: {}, clientInfo: {name: curl-test, version: 1.0} } }如果 Server 正常你会收到一个 JSON 响应里面包含serverInfo和capabilities字段。如果返回 404说明路径不对检查是不是/mcp如果连接被拒说明 Server 没起来或者端口不对。这一步过了说明 MCP Server 这一端没问题。第二步在 Cherry Studio 里发对话请求。选中 zwplayer_mcp_server 这个 MCP 服务模型选 deepseek走 TaoToken 通道输入提示词。发送之后观察两个地方一是 Cherry Studio 的对话区会不会显示“正在调用工具”之类的状态二是 MCP Server 的终端日志会不会打印收到请求的记录。如果两边都有动静最后模型给出了跟 zwplayer 设置相关的回答说明整条链路通了。成功的结果大概是你在对话框里问“zwplayer 支持哪些设置”模型先调用 MCP 工具拿到工具列表然后基于返回结果告诉你有哪些可配置项。整个过程你不需要手动去查文档模型自己会去问 MCP Server。这就是 MCP 的价值——把工具能力标准化之后模型可以自主发现和调用。如果模型回复里说“我无法调用工具”或者“没有可用工具”但 MCP Server 终端又没收到请求那问题多半在 Cherry Studio 的 MCP 启用状态或者模型服务配置上。回到设置里确认 MCP Server 的启用按钮是打开的模型服务的 Base URL 和 Key 填对了。验证通过之后你可以把提示词写得更具体比如“把 zwplayer 的宽度设成 800”看模型能不能正确解析参数并调用对应的工具函数。这一步能过说明工具调用的参数传递也没问题。5. 常见启动报错排查清单这一节列实际会撞到的报错和对应处理。MCP Server 启动和接入过程中报错基本集中在几类端口占用、依赖缺失、连接失败、鉴权失败、响应解析失败。报错一Address already in use或端口被占。启动 Server 时如果 8000 端口已经被别的进程占了会直接报这个。先用lsof -i :8000或netstat -tlnp | grep 8000看是谁占着要么杀掉那个进程要么给 MCP Server 换端口。换端口之后 Cherry Studio 里的 URL 也要同步改不然连不上。报错二ModuleNotFoundError: No module named mcp。这是依赖没装全或者 conda 环境没激活对。确认conda activate qaanthing执行了然后pip install -r requirements.txt重跑一遍。如果还报错检查 requirements.txt 里 mcp 包的版本跟 Python 版本兼不兼容Python 3.11 一般没问题。报错三Cherry Studio 里 MCP 工具列表为空或者提示local proxy failed。这个通常是 URL 填错或者 Server 没起来。先在浏览器或 curl 里访问http://127.0.0.1:8000/mcp确认 Server 有响应。如果 curl 能通但 Cherry Studio 连不上检查 Cherry Studio 是不是跑在容器或远程环境里导致127.0.0.1指向的不是 Server 所在机器。这种情况要把 URL 换成 Server 的实际 IP。报错四模型请求返回 401。这是 TaoToken 的 API Key 有问题。检查 Key 是不是复制完整了有没有多余空格以及 Key 有没有被禁用或过期。到https://taotoken.net/api-keys重新生成一个再填。401 是鉴权失败跟 MCP 无关别去查 MCP 配置。报错五Error reading choices或响应体解析失败。这个多半是模型服务的 Base URL 填错了或者 Model ID 跟通道不匹配。确认 Base URL 是https://taotoken.net/apiModel ID 是deepseek。如果 Base URL 填成了带/v1或其他路径的地址请求会打到错误的端点返回的内容格式对不上客户端解析就报错。报错六OAuth 相关报错。如果你在 MCP 设置里误开了 OAuth 鉴权但 Server 端没配对应的认证会报 OAuth 失败。zwplayer_mcp_server 这个示例默认不需要 OAuth把 Cherry Studio 里 MCP 设置中的 OAuth 选项关掉即可。如果确实需要鉴权那要在 Server 端加认证中间件这超出本篇范围。排查顺序建议是先 curl 验 Server再验模型服务最后验 Cherry Studio 里的工具调用。哪一步断了就查哪一步不要一上来就怀疑模型。大部分问题都是 URL 填错、端口不对、Key 无效这三类。6. 把 MCP 工具链接入 TaoToken 的后续玩法链路跑通之后你可以把 zwplayer_mcp_server 里的工具函数换成自己业务的功能比如设备控制、数据查询、文件操作只要按 MCP 协议暴露成工具Cherry Studio 这边不用改配置就能直接用。模型侧继续走 TaoToken 统一通道换模型只改 Model IDBase URL 和 Key 都不用动。如果你要长期跑编码类或 Agent 类任务可以考虑 TaoToken 的 Coding Plan入口在https://taotoken.net/coding-plan适合需要稳定调用、频繁切换模型的场景。单纯验证模型对话效果的话用模型对话入口https://taotoken.net/api/chat/completions配合 Cherry Studio 就够了。接入过程中遇到配置问题接入文档在https://taotoken.net/docAPI Key 管理在https://taotoken.net/api-keys控制台总入口是https://taotoken.net/console。一个实用技巧MCP Server 启动之后别急着关终端日志会实时打印收到的工具调用请求排查问题时这是最直接的证据。Cherry Studio 那边如果工具调用没反应先看 Server 终端有没有日志没有日志就是客户端没发出来有日志就是模型没正确解析返回。按这个思路定位比盲目改配置快得多。
返回列表