多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

【MCP】服务端搭建(python和uv环境搭建、nodejs安装、pycharm安装)——把 MCP Server 的 endpoint 改到 TaoToken

【MCP】服务端搭建(python和uv环境搭建、nodejs安装、pycharm安装)——把 MCP Server 的 endpoint 改到 TaoToken 1. 从零搭一个 MCP Server为什么环境这一步最容易卡住MCP 是 Model Context Protocol 的缩写你可以把它理解成「让大模型调用外部工具和数据的一套标准接口」。MCP Server 就是这套接口的服务端它对外暴露一组工具tools、资源resources和提示模板prompts客户端比如 Claude Code、Cline、Codex 这类编码助手连上来之后就能按协议去调用这些能力。适合谁适合第一次接触 MCP、想自己写一个本地服务端跑起来、并且希望把请求统一走一个 Key/API 通道的开发者。我见过太多人卡在第一步Python 版本混乱、uv 装不上、Node.js 和 npx 分不清、PyCharm 解释器选错导致ModuleNotFoundError。这篇就按「Python uv 环境 → Node.js 安装 → PyCharm 配置 → 改 endpoint 到 TaoToken → 启动验证」这条完整链路走一遍每一步都给可复制的命令和配置。你跟着敲最后能拿到一个真实启动成功、并且能连通性验证的 MCP Server。先说清楚整体结构避免你中途迷路。MCP Server 通常有两种写法Python 版用官方mcp包配合uv管理依赖和 Node.js 版用modelcontextprotocol/sdk通过npx或node启动。客户端配置里一般会写command、args、env三块。我们要做的「改 endpoint 到 TaoToken」本质是把服务端或客户端里请求大模型的那段 Base URL 和 Key指向 TaoToken 的统一通道这样你本地调试、切换模型、管理额度都在一个地方。环境这块我建议一次装齐Python 用 miniconda 打底uv 做包和虚拟环境管理Node.js 装 LTS 版IDE 用 PyCharm 社区版。下面逐个来。2. Python uv 环境搭建miniconda 打底uv 管依赖2.1 安装 miniconda 并验证 Python如果你电脑上已经有可用的 Python 3.10这步可以跳过。没有的话去 miniconda 官方下载页拿最新安装包https://repo.anaconda.com/miniconda/选对应系统的版本。安装过程中有两个勾选项要留意一个是「Add Miniconda3 to my PATH environment variable」另一个是把它注册为默认 Python。勾上之后命令行里能直接调用python和conda省得后面手动配环境变量。装完打开一个新的 cmd或 PowerShell、终端输入python -V注意是大写V。能打印出类似Python 3.12.x就说明 Python 环境就绪。如果提示「不是内部或外部命令」八成是 PATH 没生效关掉终端重开一次或者手动把 miniconda 的Scripts和根目录加进系统环境变量。2.2 用 pip 安装 uvuv 是 Rust 写的 Python 包与项目管理器速度比 pip 快很多而且能直接创建虚拟环境、锁定依赖。安装就一行pip install uv装完验证uv -V同样是大写V输出uv 0.x.x即可。如果pip本身也提示找不到先执行python -m ensurepip --upgrade把 pip 补上再装 uv。2.3 用 uv 初始化一个 MCP Server 项目找个空目录比如D:\mcp-demo进去之后uv init mcp-server-demo cd mcp-server-demo uv add mcpuv init会生成pyproject.toml和基础结构uv add mcp会把官方 MCP SDK 加进依赖并写入锁文件。这一步很关键它保证了依赖是可复现的换台机器uv sync就能还原。接着写一个最小可运行的 MCP Server。新建server.pyfrom mcp.server.fastmcp import FastMCP mcp FastMCP(demo-server) mcp.tool() def add(a: int, b: int) - int: 两数相加 return a b if __name__ __main__: mcp.run()FastMCP是官方提供的高层封装mcp.tool()装饰的函数会自动注册成一个工具客户端连上后就能调用add。mcp.run()默认走 stdio 传输也就是通过标准输入输出和客户端通信这是本地 MCP Server 最常见的模式。用 uv 跑起来uv run server.py如果没有任何报错、进程挂起等待输入说明服务端已经起来了。按CtrlC退出即可。这一步能跑通Python 侧就算过关。3. Node.js 安装与 PyCharm 配置解释器别选错3.1 安装 Node.js很多 MCP Server尤其是社区现成的那些是 Node.js 写的客户端配置里常见npx -y xxx/mcp-server这种写法所以 Node.js 基本是必备。去 Node.js 官网https://nodejs.org/zh-cn下载 LTS 版本安装一路下一步即可。装完验证node -v npm -v两个都能打印版本号就 OK。npx会随 npm 一起装上不用单独装。这里有个常见误区npx第一次运行某个包时会临时下载网络慢的时候会卡很久别以为是卡死了等它下完就行。3.2 PyCharm 安装与中文设置PyCharm 社区版免费够用。去 JetBrains 官网下载页https://www.jetbrains.com.cn/pycharm/download/?sectionwindows拿社区版安装时建议把「创建桌面快捷方式」「添加到 PATH」「关联 .py 文件」都勾上。想要中文界面的话打开 PyCharm进Settings → Plugins搜索「Chinese」安装中文语言包重启后生效。如果重启还是英文点左下角设置按钮在语言选项里手动切到简体中文。3.3 把 uv 虚拟环境挂到 PyCharm这是最容易出问题的一步。用 PyCharm 打开刚才的mcp-server-demo目录然后进Settings → Project → Python Interpreter点右上角齿轮选Add Interpreter → Add Local Interpreter。关键点不要选「New environment using Virtualenv」自己新建而是选「Existing」然后指向 uv 创建的那个虚拟环境。uv 默认把虚拟环境放在项目下的.venv目录解释器路径大概是D:\mcp-demo\mcp-server-demo\.venv\Scripts\python.exe选中之后PyCharm 就能识别到mcp这个包server.py里的from mcp.server.fastmcp import FastMCP不会再飘红。如果你在 PyCharm 里直接点运行记得把运行配置的脚本指向server.py工作目录设为项目根目录。3.4 在 PyCharm 里配置运行参数点右上角运行配置下拉框 →Edit Configurations→ 新增一个 Python 配置Script path: D:\mcp-demo\mcp-server-demo\server.py Python interpreter: Project Default (.venv) Working directory: D:\mcp-demo\mcp-server-demo保存后点运行控制台没有报错、进程保持运行就说明 PyCharm 这条链路也通了。到这里Python、uv、Node.js、PyCharm 四件套全部就位。4. 把 MCP Server 的 endpoint 改到 TaoToken 统一通道前面搭的是「本地工具服务端」它本身不一定要调大模型。但很多 MCP 场景里服务端或配套客户端需要请求模型能力这时候就要配 Base URL 和 Key。TaoToken 提供统一的 API 通道官网是https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentAPI 地址是https://taotoken.net/api这个不加 UTM。4.1 先拿 Key登录后进控制台在 API Keys 页面创建一个 Key。地址是https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite。创建完复制出来形如sk-xxxx只显示一次存好。4.2 客户端配置三件套Base URL Key Model ID如果你用的是 Claude Code、Cline 或 Codex 这类客户端配置里必须同时写全三样缺一个都会连不上。以 Claude Code 的 settings 为例配置文件通常放在用户目录下的.claude/settings.json{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的Key, ANTHROPIC_MODEL: claude-sonnet-4-20250514 } }注意ANTHROPIC_BASE_URL填的是https://taotoken.net/api不要多加/v1之类的后缀具体以接入文档为准。Model ID 要和你账号里可用的模型对上写错了会报模型不存在。如果你用的是 Cline 的 MCP 配置或者 Codex 的auth.json逻辑一样Base URL 指向 TaoTokenKey 填进去Model ID 写清楚。Codex 的auth.json大概长这样{ OPENAI_BASE_URL: https://taotoken.net/api, OPENAI_API_KEY: sk-你的Key, OPENAI_MODEL: gpt-4o }4.3 在 MCP Server 里读取环境变量回到我们的 Python 服务端如果它需要调模型建议把配置走环境变量别硬编码。改一下server.pyimport os from mcp.server.fastmcp import FastMCP BASE_URL os.environ.get(TAOTOKEN_BASE_URL, https://taotoken.net/api) API_KEY os.environ.get(TAOTOKEN_API_KEY, ) mcp FastMCP(demo-server) mcp.tool() def show_config() - str: 返回当前 endpoint 配置 return fbase_url{BASE_URL}, key_set{bool(API_KEY)} if __name__ __main__: mcp.run()然后在 PyCharm 运行配置里加环境变量或者直接在终端里导出set TAOTOKEN_BASE_URLhttps://taotoken.net/api set TAOTOKEN_API_KEYsk-你的Key uv run server.pyWindows 用setmacOS/Linux 用export。这样服务端读到的就是 TaoToken 的通道换 Key 或换模型不用改代码。5. 启动验证与常见报错排查5.1 一次完整的连通性验证服务端起在 stdio 模式下最直接的验证方式是写个客户端脚本连它。新建client_test.pyimport asyncio from mcp import ClientSession, StdioServerParameters from mcp.client.stdio import stdio_client async def main(): params StdioServerParameters( commanduv, args[run, server.py], ) async with stdio_client(params) as (read, write): async with ClientSession(read, write) as session: await session.initialize() tools await session.list_tools() print(可用工具:, [t.name for t in tools.tools]) result await session.call_tool(show_config, {}) print(配置返回:, result.content) asyncio.run(main())跑uv run client_test.py如果打印出工具列表和base_urlhttps://taotoken.net/api说明服务端启动、工具注册、endpoint 配置全部正确。这一步跑通你的 MCP Server 就是真的能用了。5.2 常见报错对照报错一401 Unauthorized或invalid api key。这是 Key 没配对。检查三件事Key 是否复制完整有没有漏字符、ANTHROPIC_AUTH_TOKEN或OPENAI_API_KEY字段名是否写对、Base URL 是不是https://taotoken.net/api。字段名写错是最常见的比如把AUTH_TOKEN写成API_KEY。报错二local proxy failed或连接被拒绝。一般是 Base URL 写错或者本地网络到不了目标地址。先确认 URL 没有多余路径再用curl https://taotoken.net/api测一下通不通。如果服务端读的是环境变量确认变量真的传进去了PyCharm 里改完运行配置要重新运行才生效。报错三Error reading choices或返回结构解析失败。这通常是 Model ID 写错或者请求发到了不兼容的接口。检查ANTHROPIC_MODEL/OPENAI_MODEL是否是你账号里真实可用的模型名别照抄网上的示例。报错四OAuth 相关报错比如OAuth token expired。如果你用的是需要 OAuth 的客户端先重新走一遍授权流程确认授权账号和 Key 是同一个。OAuth 和 API Key 是两套东西别混用。报错五ModuleNotFoundError: No module named mcp。PyCharm 解释器选错了没指向.venv。回到第 3.3 节把解释器改成项目下的.venv\Scripts\python.exe或者终端里先uv sync再跑。报错六npx卡住不动。第一次运行 Node.js 版 MCP Server 时在下载包耐心等或者先手动npm install -g装好再跑。6. 后续怎么用把通道固定下来环境搭好之后日常开发其实就三件事改工具逻辑、调 endpoint 配置、重启验证。我的习惯是把 Base URL 和 Key 都放环境变量代码里只读不写死这样换模型、换额度、临时切通道都不用动代码。如果你要长期跑编码类 Agent或者想让多个 MCP Server 共用一个通道可以了解下 Coding Plan地址是https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite。想先在网页上验证模型通不通用模型对话页面最快https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite。接入细节和字段说明以文档为准https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite。最后留一个我踩过的坑PyCharm 里改完环境变量一定要点「Apply」再重新运行光保存配置不重启进程读到的还是旧值。这个坑不显眼但排查起来能耗掉半小时。
返回列表