ARTICLE DETAIL

资讯详情

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

想让AI助手安全访问外部工具?模型上下文协议(MCP)从Python环境搭建到CC Switch配置全攻略!

想让AI助手安全访问外部工具?模型上下文协议(MCP)从Python环境搭建到CC Switch配置全攻略! 1. 为什么你的 AI 助手需要一个 MCP Server模型上下文协议MCP说白了就是给 AI 助手装了一双能伸到外部世界的手。平时我们用 VS Code 里的 AI 助手它能读当前文件、能补全代码但一旦你想让它查一下本地 SQLite 里的订单数据、调一下内部接口、或者跑一个自定义脚本它就抓瞎了。MCP 解决的正是这个问题它定义了一套标准协议让 AI 助手通过一个中间层MCP Server去安全地调用外部工具和数据源而不是把数据库密码直接塞进提示词里。这篇聚焦一个很具体的落地场景在 VS Code 里用 UV 搭建一个 Python 版 MCP Server再通过 CC Switch 把 TaoToken 的统一 Key 接进 AI 助手让整个调用链路跑通。适合谁适合已经会用 Python 写点脚本、但还没把 MCP 真正跑起来的人。读完你能拿到可复制的settings.json和config.toml骨架、MCP Server 的启动命令以及一套连通性验证动作。整个过程不需要你懂协议底层照着配就能看到 AI 助手调用外部工具返回结果。我试过把 MCP Server 当成一个翻译官来理解AI 助手说帮我查一下今天新增用户数翻译官把它转成对业务服务的请求拿到结果再翻译回 AI 能读的格式。你只需要保证翻译官本身跑得稳、Key 配得对剩下的交给协议。2. 前置准备UV 与 TaoToken 统一 Key2.1 用 UV 管 Python 环境别再用 pip 硬扛UV 是 Rust 写的 Python 包管理器装依赖的速度比 pip 快一个量级而且它自带虚拟环境管理不用你再手动python -m venv再激活。VS Code 里打开终端先确认 UV 在不在uv --version如果没有用官方脚本装Windows 用 PowerShellmacOS/Linux 用 curl# macOS / Linux curl -LsSf https://astral.sh/uv/install.sh | sh # Windows PowerShell powershell -c irm https://astral.sh/uv/install.ps1 | iex装完重开终端uv --version能打印版本号就成。接着建项目目录并初始化uv init mcp-demo cd mcp-demo uv venvuv venv会在当前目录生成.venvVS Code 右下角选解释器时指向它即可。后面所有依赖都用uv add装它会自动写进pyproject.toml并同步到虚拟环境。2.2 TaoToken 统一 Key 的定位TaoToken 在这里扮演的是统一入口的角色你不需要为每个模型或每个工具单独配一套鉴权而是拿一个 Key 走同一个 API 地址。MCP Server 在调用模型能力时把请求发到 TaoToken 的 API 端点由它统一转发。这样 CC Switch 里配置一次多个 AI 助手都能复用。先去控制台拿 Key地址是https://taotoken.net/api-keysdeep link 带 utmhttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite。拿到形如sk-xxxx的字符串后别直接写进代码用环境变量存# macOS / Linux export TAOTOKEN_API_KEYsk-你的key # Windows PowerShell $env:TAOTOKEN_API_KEYsk-你的key注意环境变量只在当前终端会话有效。要持久化macOS/Linux 写进~/.zshrc或~/.bashrcWindows 用系统环境变量面板添加。3. 可复制配置settings.json 与 config.toml 骨架3.1 MCP Server 的 Python 骨架在项目里建server.py用官方mcp包起一个最小可用的 Server。先装依赖uv add mcp httpx然后写一个带一个工具的 Server工具功能是查询指定城市的天气示例用实际可换成你的业务接口# server.py import os import httpx from mcp.server import Server from mcp.server.stdio import stdio_server from mcp.types import Tool, TextContent app Server(demo-server) app.list_tools() async def list_tools(): return [ Tool( nameget_weather, description查询指定城市的当前天气, inputSchema{ type: object, properties: { city: {type: string, description: 城市名如 Beijing} }, required: [city], }, ) ] app.call_tool() async def call_tool(name: str, arguments: dict): if name ! get_weather: raise ValueError(f未知工具: {name}) city arguments[city] api_key os.environ.get(TAOTOKEN_API_KEY) if not api_key: return [TextContent(typetext, text缺少 TAOTOKEN_API_KEY 环境变量)] # 这里换成你实际要调用的外部接口 async with httpx.AsyncClient(timeout10) as client: resp await client.get( https://taotoken.net/api/v1/models, headers{Authorization: fBearer {api_key}}, ) return [TextContent(typetext, textf{city} 查询完成状态码 {resp.status_code})] async def main(): async with stdio_server() as (read, write): await app.run(read, write, app.create_initialization_options()) if __name__ __main__: import asyncio asyncio.run(main())这段代码的关键点list_tools告诉 AI 助手我有哪些工具可用call_tool负责实际执行。stdio_server表示走标准输入输出通信这是 VS Code 里 MCP 客户端最常用的方式。3.2 VS Code 的 settings.json 配置VS Code 里 MCP 的接入配置写在用户或工作区的settings.json。按CtrlShiftP输入Preferences: Open User Settings (JSON)加入{ mcp.servers: { demo-server: { command: uv, args: [ --directory, ${workspaceFolder}/mcp-demo, run, python, server.py ], env: { TAOTOKEN_API_KEY: ${env:TAOTOKEN_API_KEY} } } } }${workspaceFolder}是 VS Code 的变量指向当前打开的文件夹。${env:TAOTOKEN_API_KEY}会读取你系统里设的环境变量避免把 Key 硬编码进配置文件。如果你用的是工作区级配置把这段放进.vscode/settings.json即可。3.3 CC Switch 的 config.toml 骨架CC Switch 用来在多个 AI 助手之间切换统一 Key。它的配置文件config.toml一般放在用户目录下Windows 是%USERPROFILE%\.cc-switch\config.tomlmacOS/Linux 是~/.cc-switch/config.toml。骨架如下default_provider taotoken [providers.taotoken] name TaoToken api_base https://taotoken.net/api api_key_env TAOTOKEN_API_KEY models [claude-3-5-sonnet, gpt-4o] [mcp_servers.demo-server] command uv args [--directory, ./mcp-demo, run, python, server.py] env { TAOTOKEN_API_KEY ${TAOTOKEN_API_KEY} }api_base指向 TaoToken 的 API 端点api_key_env告诉 CC Switch 从哪个环境变量读 Key。mcp_servers段和 VS Code 的配置是对应的这样切换助手时 MCP Server 的启动方式保持一致。4. 启动与连通性验证4.1 手动启动 MCP Server在配进 VS Code 之前先在终端手动跑一遍确认 Server 本身没问题cd mcp-demo uv run python server.py如果没有任何报错、进程挂起等待输入说明 Server 正常启动了。因为走的是 stdio它不会打印启动成功之类的日志这是正常的。按CtrlC退出。4.2 用 MCP Inspector 验证工具列表官方提供了一个调试工具 MCP Inspector能可视化看到 Server 暴露了哪些工具npx modelcontextprotocol/inspector uv run python server.py它会启动一个本地网页打开后点 Connect再点 List Tools你应该能看到get_weather出现在列表里。这一步能确认list_tools返回的 schema 是合法的。如果列表为空多半是app.list_tools()装饰器没生效或返回值格式不对。4.3 在 VS Code 里触发一次真实调用重启 VS Code打开 Copilot Chat 或你用的 AI 助手面板输入类似用 get_weather 查一下 Beijing 的天气。助手应该会弹出工具调用确认点允许后你会看到它调用了demo-server并返回了结果。如果返回的是缺少 TAOTOKEN_API_KEY说明环境变量没传进去检查settings.json里的env段。4.4 用 curl 直接验证 TaoToken Key想单独确认 Key 有效绕开 MCP 直接打 APIcurl -s https://taotoken.net/api/v1/models \ -H Authorization: Bearer $TAOTOKEN_API_KEY | head -c 300返回 JSON 里带模型列表就说明 Key 没问题。这一步能把Key 失效和MCP 配置错误两类问题分开定位。5. 本篇常见错排查5.1 uv: command not found装完 UV 后没重开终端PATH 没刷新。关掉终端重新打开或者手动source ~/.zshrc。Windows 上如果 PowerShell 执行策略拦了脚本用Set-ExecutionPolicy -Scope CurrentUser RemoteSigned放行。5.2 MCP Server 启动后立刻退出最常见的原因是server.py里asyncio.run(main())写在了if __name__ __main__:外面或者stdio_server的上下文没正确 await。另一个坑是uv run时目录不对--directory参数指向的路径里没有server.py。用绝对路径先排除路径问题。5.3 VS Code 里看不到 MCP 工具先确认 VS Code 版本支持 MCP较新版本才有再检查settings.json的 JSON 语法有没有多余逗号。mcp.servers这个键名在不同版本里可能叫mcpServers以你 VS Code 的文档为准。改完配置要完全重启 VS Code不是重载窗口。5.4 调用返回 401 或 403Key 没传对。检查三处环境变量是否在当前 shell 生效、settings.json里${env:...}拼写是否正确、CC Switch 的api_key_env是否指向同一个变量名。如果 Key 里带了空格或换行用echo $TAOTOKEN_API_KEY | wc -c看长度对不对。5.5 CC Switch 切换后 MCP 失效CC Switch 的config.toml里mcp_servers段的args用了相对路径./mcp-demo但 CC Switch 的工作目录可能不是你的项目根目录。改成绝对路径或者用${workspaceFolder}这类变量取决于 CC Switch 是否支持。6. 把 Key 和工具接进你的日常编码流环境跑通之后真正省事的是把 MCP Server 接进长期编码场景。如果你经常让 AI 助手帮你查数据、跑脚本、调接口建议把 TaoToken 的 Key 配到 Coding Plan 里这样多个助手共用一套鉴权不用每次换工具都重新配。地址是https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite。接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite里面有各语言 SDK 的调用示例。想先验证模型对话是否正常用https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite直接试。API Keys 管理在https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite。最后留一个实用技巧把server.py里的工具函数拆成独立模块每个工具一个文件用importlib动态注册。这样加新工具时不用改主逻辑AI 助手那边刷新一下就能看到新工具。MCP 的 schema 是运行时读取的改完重启 Server 即可生效不用重装依赖。
返回列表