啊哈,MCP!从 VSCode 到 Notion:一次 Agent 工具链的探索过程
1. 从 VSCode 里的一次「啊哈」说起MCP 到底能做什么如果你最近在 VSCode 里用 GitHub Copilot 的 Agent 模式可能会注意到一个细节它不再只是补全代码而是能主动去读你的项目文件、调用外部服务、甚至帮你把一条记录写进 Notion。这背后串起来的东西就是 MCPModel Context Protocol模型上下文协议。简单说它是一套让大模型和外部工具、数据源之间用统一方式对话的协议。以前你要让 AI 操作 Notion得自己写一堆 API 封装现在只要有一个符合 MCP 规范的 ServerAgent 就能按需调用。这篇内容适合两类人一是已经在 VSCode 里用 Agent 但还没碰过 MCP 的开发者二是想把 Notion、Docker 这类工具接进自己工作流却不知道从哪下手的同学。我会按「本地 VSCode 客户端 → TaoToken 统一通道 → Notion MCP Server → Docker 隔离运行」这条链路把配置骨架和验证动作一步步写清楚。你不需要先成为 MCP 专家跟着配一遍就能看到 Agent 真正去操作远程服务的结果。我试过把这条链路跑通之后最大的感受是MCP 不是让模型「无中生有」造工具而是把已有工具用标准接口暴露出来让 Agent 调度。这一点想明白后面的配置就顺了。2. 前置准备TaoToken 统一 Key 与 API 通道接入点在动手配 MCP 之前先解决模型调用通道的问题。VSCode 里的 Agent 要能稳定调用大模型需要一个兼容 OpenAI 风格接口的入口。TaoToken 提供的就是这样一个统一通道你可以在官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 了解整体能力API 接入点是 https://taotoken.net/api这个地址不加 UTM 参数直接用于配置。具体操作上先去控制台创建一个 API Key。打开 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 登录后进入 API Keys 页面点新建复制生成的 Key。这个 Key 后面会同时用在 VSCode 的模型配置和 MCP 客户端的通道配置里。如果你还没决定用哪个模型可以先到模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 试几条请求确认通道通不通。这里有个容易踩的坑很多人把 Key 直接写进代码文件里然后提交到 Git。正确做法是放进环境变量MCP 客户端配置里用${env:TAOTOKEN_API_KEY}这种引用方式。TaoToken 的接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有各语言的最小请求示例配之前扫一眼能省不少调试时间。如果你后续要长期跑编码类 Agent 任务可以关注 Coding Plan 页面 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 它针对持续性的代码生成和工具调用场景做了额度与通道优化。这一步不是必须但如果你发现自己一天要触发几十次 Agent 调用提前了解会省心。3. 可复制的 MCP 客户端配置骨架VSCode Notion Docker现在进入核心配置。VSCode 里 MCP 客户端的配置通常放在工作区的.vscode/mcp.json或者用户级的 settings 里。下面这份骨架你可以直接复制改掉三个占位符即可TAOTOKEN_API_KEY、NOTION_TOKEN、NOTION_DATABASE_ID。{ mcpServers: { taotoken-channel: { command: npx, args: [ -y, taotoken/mcp-bridgelatest ], env: { TAOTOKEN_API_KEY: ${env:TAOTOKEN_API_KEY}, TAOTOKEN_BASE_URL: https://taotoken.net/api } }, notion: { command: docker, args: [ run, -i, --rm, -e, NOTION_TOKEN${env:NOTION_TOKEN}, -e, NOTION_DATABASE_ID${env:NOTION_DATABASE_ID}, mcp/notion:latest ] } } }这份配置里有两个 Server。第一个taotoken-channel负责把模型请求统一走 TaoToken 的 API 通道TAOTOKEN_BASE_URL固定指向https://taotoken.net/api。第二个notion用 Docker 拉起官方 Notion MCP 镜像通过环境变量传入 Token 和 Database ID。用 Docker 的好处是隔离Agent 只能通过这个容器暴露的接口访问 Notion不会直接碰到你本机的文件系统。关于 Notion 侧的准备工作你需要做三件事。第一在 Notion 的集成页面创建一个 Internal Integration拿到NOTION_TOKEN。第二把你想要操作的那个 Database 或 Page 共享给这个 Integration否则会报 404。第三从 Database 的 URL 里提取NOTION_DATABASE_ID通常是 32 位字符串。这三步做完把值写进系统环境变量别写死在 JSON 里。如果你用的是 Claude Code 这类命令行 Agent配置思路一样只是文件位置换成对应的 MCP 配置文件。ClaudeCodeAnthropic 的接入说明在 https://taotoken.net/doc/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecode_anthropicutm_campaignrewrite 里面给了环境变量和 base_url 的写法和上面骨架是同一套逻辑。4. 逐步验证从本地工具调用到远程服务写入配置写完不代表通了得一步步验证。我建议按「先通道、再 Server、最后端到端」的顺序来。第一步验证 TaoToken 通道。在终端里执行一条最小请求curl -s https://taotoken.net/api/v1/models \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ | head -c 300如果返回模型列表的 JSON 片段说明 Key 和通道都正常。如果返回 401检查 Key 是否复制完整返回 404检查 base_url 有没有多写斜杠。第二步单独验证 Notion MCP Server 能不能起来。在终端里手动跑一次 Docker 命令docker run -i --rm \ -e NOTION_TOKEN$NOTION_TOKEN \ -e NOTION_DATABASE_ID$NOTION_DATABASE_ID \ mcp/notion:latest如果容器能启动并保持运行说明镜像拉取成功、环境变量传入正确。按 CtrlC 退出即可。这一步常见问题是镜像拉不下来检查 Docker Desktop 是否在运行以及网络是否能访问镜像仓库。第三步回到 VSCode打开 Copilot Chat切到 Agent 模式。在对话框里输入类似「帮我在 Notion 数据库里创建一条记录标题是 MCP 测试状态为进行中」的指令。Agent 会先请求授权访问工作区你点允许。然后它会调用notion这个 MCP Server 的工具。如果一切正常你会看到它返回创建成功的页面 ID去 Notion 里刷新就能看到新记录。这里有个细节首次调用时 Agent 可能会读取你项目里的.env文件来获取变量。这也是为什么前面强调用环境变量而不是硬编码。如果它读不到检查.env是否在项目根目录以及 VSCode 的工作区是否打开了正确的文件夹。5. 本篇常见错排查参数错误、404 与权限拒绝跑这条链路我踩过的坑集中在三个地方你大概率也会遇到。第一个是 Notion 创建记录时报「参数信息错误」。原因通常是字段名和数据库实际属性不匹配。比如你的数据库里属性叫Name但请求里写成了Title或者多传了一个数据库里不存在的字段。解决办法是先去 Notion 数据库页面点开属性设置确认每个字段的准确名称和类型。我当时的做法是先把请求体里不确定的字段注释掉跑通最小集再逐个加回来。第二个是 404。Notion 的 404 基本只有一个原因Integration 没有被共享到目标页面或数据库。回到 Notion打开那个 Database点右上角「...」找到「连接」或「Connections」把你的 Integration 加进去。加完之后再试通常就好了。第三个是 Docker 容器启动后立刻退出。这多半是环境变量没传进去或者NOTION_TOKEN格式不对。可以在docker run后面加--entrypoint sh进去手动 echo 一下变量确认值存在。另外注意Docker 里的-e传参不会自动读取你 shell 的变量必须写成-e NOTION_TOKEN$NOTION_TOKEN这种显式形式。还有一个容易被忽略的点VSCode 的 MCP 配置修改后需要重启窗口或者重新加载工作区才会生效。如果你改了mcp.json但 Agent 还是报「找不到工具」先按CtrlShiftP执行「Developer: Reload Window」。6. 把通道和工具串起来下一步怎么走链路跑通之后你会发现 MCP 真正的价值在于「一次配置多处调用」。同一个 Notion MCP Server你可以在 VSCode 的 Agent 里用也可以在命令行 Agent 里用甚至可以在自己写的脚本里通过 MCP 客户端调用。TaoToken 在这里扮演的是统一通道的角色不管上层是哪个 Agent 框架模型请求都走同一个入口Key 和额度也统一管理。如果你接下来想深入我建议先把手头的 Notion 场景做扎实比如让 Agent 自动读取数据库里的待办、更新状态、生成周报。这些动作跑顺了再考虑接入更多 MCP Server比如文件系统、Git、数据库查询。每接一个都按「通道验证 → Server 单独启动 → Agent 端到端调用」这三步走出错时定位会快很多。需要再确认接入细节的话API Keys 页面在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。把这两个页面存进书签配新 Server 的时候对照着看比到处搜教程靠谱。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →