
告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度1. 为什么选 time MCP 当第一个 MCP 练手Claude Code 装好之后很多人卡在「第一个 MCP 到底配什么」。文件系统 MCP 权限太大数据库 MCP 要连生产库浏览器 MCP 依赖一堆环境。time MCP 是少数几个零副作用、零外部依赖、结果可肉眼验证的服务器它只回答时间答错了立刻能发现答对了也能立刻确认。拿它当第一个 MCP能把「配置链路是否通」和「模型会不会调用工具」这两件事分开排查。这篇要做的任务很具体让 Claude Code 通过 mcp-server-time 查询 UTC 和 Asia/Shanghai 的当前时间然后在同一轮会话里继续追问两地时差。模型供应商走 TaoTokenKey 和 Base URL 写进 Claude Code 的 settings。整条链路涉及三个配置文件和一个环境变量任何一处写错都会表现为「工具没被调用」或者「401」。我按自己实际跑通的顺序写配置片段可以直接复制。先说清楚 TaoToken 在这篇里的角色它是模型供应商提供兼容 Anthropic 协议的 Base URL 和 Key。Claude Code 本身、mcp-server-time 本身都不属于 TaoToken也不在本文的评测范围内。你要复现的话先去 TaoToken 拿一把 Key后面所有配置都围绕这把 Key 展开。MCP 的配置在 Claude Code 里有两种写法项目级的.mcp.json和用户级的~/.claude.json。项目级的好处是跟着仓库走团队里其他人 clone 下来就能用用户级的好处是全局生效换项目不用重配。time MCP 这种通用工具我建议放用户级但本文为了让你能直接复制先给项目级片段再说明怎么挪到用户级。2. 把 TaoToken 的 Key 和 Base URL 写进 Claude CodeClaude Code 读模型供应商配置有两个位置环境变量和~/.claude/settings.json的env字段。环境变量适合临时切换settings.json 适合长期固定。两者同时存在时环境变量优先级更高这点在排障时很关键——你改了 settings.json 却没生效先检查 shell 里是不是还留着旧的ANTHROPIC_BASE_URL。2.1 settings.json 的 env 写法打开~/.claude/settings.json没有就新建。写入下面这段{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: 以模型广场为准 } }三个字段逐个说。ANTHROPIC_BASE_URL填https://taotoken.net/api注意末尾不带/v1Claude Code 会自己拼路径你多写一段反而会 404。ANTHROPIC_AUTH_TOKEN填你从控制台创建的 Key占位符YOUR_API_KEY替换掉。ANTHROPIC_MODEL填模型 ID具体写哪个以模型广场展示为准不要凭记忆填一个不存在的 ID否则表现是请求发出去了但返回模型不存在。这里有个容易混的点Anthropic 官方 SDK 用的是ANTHROPIC_API_KEY而 Claude Code 在走第三方兼容通道时更常用ANTHROPIC_AUTH_TOKEN。两个都写不会报错但只写ANTHROPIC_API_KEY有可能被 Claude Code 忽略。我自己的做法是只写ANTHROPIC_AUTH_TOKEN避免歧义。2.2 用环境变量临时覆盖如果你只是想在某个终端里试一次不想动 settings.json可以这样export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_AUTH_TOKENYOUR_API_KEY export ANTHROPIC_MODEL以模型广场为准注意ANTHROPIC_BASE_URL后面同样不带/v1。这三行只在当前 shell 生效关掉终端就没了。好处是排查「到底是配置问题还是 Key 问题」时可以快速切换。2.3 验证配置是否被读到Claude Code 启动后在对话里问一句「你现在用的是哪个模型」。如果它答出的模型 ID 和你填的一致说明配置读到了。如果它答的是默认模型说明 settings.json 没被解析或者环境变量把它覆盖了。这一步不用 MCP纯粹验证模型通道。配置写完后先别急着配 MCP。用一句普通对话确认模型能回话再往下走。模型通道不通的情况下配 MCP你会分不清是 MCP 没加载还是模型没响应。3. mcp-server-time 的 mcp.json 配置片段time MCP 的官方包是mcp-server-time通过uvx拉起。Claude Code 的 MCP 配置格式和通用 MCP 客户端一致核心是command、args两个字段。3.1 项目级 .mcp.json在项目根目录建.mcp.json{ mcpServers: { time: { command: uvx, args: [mcp-server-time, --local-timezoneAsia/Shanghai] } } }--local-timezoneAsia/Shanghai这个参数决定了服务器把哪个时区当作「本地时间」。不传的话默认取系统时区容器里通常是 UTC会导致你问「现在几点」拿到的是 UTC 而不是北京时间。显式传进去后面追问时差时结果更稳定。3.2 用户级配置想让所有项目都能用把同样的mcpServers块挪到~/.claude.json里。注意用户级配置里如果已经有其他 MCP是合并而不是覆盖别把原来的删了。合并时 key 名不能重复两个都叫time会冲突后加载的覆盖先加载的。3.3 uvx 没装怎么办uvx来自 uv 工具链。如果启动 Claude Code 后提示找不到uvx先确认它在 PATH 里which uvx没有输出就装一个 uv或者把command改成uvx的绝对路径。这是最常见的「MCP 没加载」原因比配置写错还常见。Claude Code 不会把「命令找不到」翻译成人话它只会告诉你这个 MCP 不可用。3.4 确认 MCP 被加载Claude Code 里有个/mcp命令能列出当前加载的 MCP 服务器和它们暴露的工具。配好.mcp.json后重启 Claude Code敲/mcp应该能看到time下面挂着get_current_time和convert_time两个工具。看不到就说明配置没被解析检查 JSON 有没有多余逗号、文件是不是放在项目根目录。这一步是整个流程的分水岭/mcp能看到工具说明 MCP 链路通了剩下的只是模型会不会调用看不到工具后面怎么问都是白问。4. 一次完整会话查 UTC、查上海、追问时差配置都通了之后实际对话是这样的。我按真实顺序记录包括模型的调用行为和返回。4.1 第一轮查 UTC 当前时间我输入的是「用 time 工具查一下现在 UTC 几点」。模型识别到需要调用工具发起get_current_time参数timezone为UTC。返回类似{ timezone: UTC, datetime: 2025-01-15T08:42:1700:00, day_of_week: Wednesday }模型把结果转述成一句自然语言。这里的关键是它没有自己编一个时间而是真的调了工具。如果模型直接回你一个时间而没走工具说明它没把 MCP 工具当可用工具通常是 MCP 没加载或者模型不支持工具调用。4.2 第二轮查 Asia/Shanghai接着输入「再查一下 Asia/Shanghai 的时间」。模型再次调用get_current_time这次timezone为Asia/Shanghai返回{ timezone: Asia/Shanghai, datetime: 2025-01-15T16:42:1908:00, day_of_week: Wednesday }两轮之间模型保留了上下文知道「再查一下」指的是同一个工具换时区。这就是多轮对话里 MCP 的价值工具调用结果进入上下文后续追问基于真实数据而不是模型记忆。4.3 第三轮追问时差第三轮我输入「这两个时区差几个小时」。模型没有重新调工具而是基于前两轮的结果做减法16:42 减 08:42 等于 8 小时。它回答「Asia/Shanghai 比 UTC 快 8 小时」。这一轮值得注意模型可以选择重新调convert_time来算也可以直接用上下文里的两个时间戳做差。两种都对但行为不同。如果它重新调工具说明它更倾向用工具验证如果它直接算说明上下文里的数据够用。我这次跑下来是直接算的省了一次工具调用。4.4 一次会话的 token 数三轮对话跑完Claude Code 会显示本次会话的 token 消耗。我这次跑下来输入加输出合计在几千 token 量级具体数字随模型和上下文长度浮动。MCP 工具的定义本身也占 token——每个工具的名称、描述、参数 schema 都会进系统提示time MCP 两个工具加起来占的不多但如果你装了十几个 MCP光工具定义就能吃掉可观的上下文预算。这也是为什么建议第一个 MCP 选 time它工具少、schema 简单对上下文的挤占最小能把「MCP 机制本身」看清楚而不是一上来就被 token 消耗吓到。5. 排障本篇配置会踩的几个坑下面这几个错都是我在这条链路上实际遇到或者差点遇到的按出现频率排。5.1 Base URL 多写了 /v1ANTHROPIC_BASE_URL填成https://taotoken.net/api/v1是最常见的 404 来源。Claude Code 内部会拼/v1/messages之类的路径你多写一段就变成/api/v1/v1/messages。记住 Base URL 就是https://taotoken.net/api末尾不带斜杠也不带版本号。5.2 模型 ID 填了不存在的值ANTHROPIC_MODEL填了一个模型广场上没有的 ID表现是请求能发出去但返回错误。这类错误不会告诉你「模型不存在」只会给一个笼统的失败。排查方法去模型广场确认 ID 拼写或者先用一个确定存在的 ID 跑通再换。5.3 uvx 不在 PATH前面说过command写uvx但系统找不到MCP 直接不加载。/mcp里看不到 time先查which uvx。用绝对路径能绕过 PATH 问题但换机器要改长期还是把 uv 装好。5.4 环境变量覆盖了 settings.json改了 settings.json 但行为没变八成是 shell 里还 export 着旧的ANTHROPIC_BASE_URL。用env | grep ANTHROPIC看一眼有残留就 unset 掉。这个坑隐蔽在于你以为改的是配置文件实际生效的是环境变量。5.5 MCP 加载了但模型不调用/mcp能看到 time 工具但模型回答时间时自己编。这种情况通常是模型对工具调用的支持问题或者系统提示里工具描述没被正确注入。换个模型 ID 试试能快速区分是模型问题还是配置问题。6. 用同一把 Key 复现与对账整条链路跑通后建议做两件事确认这次调用在控制台有记录以及把配置固化成可复用的模板。先打开 模型对话 确认你用的模型 ID 和广场展示一致避免 settings.json 里填的是旧 ID。然后去控制台看这次会话的调用记录确认 token 数和请求次数对得上——MCP 场景下一次用户输入可能触发多次模型请求对账时看的是请求次数而不是对话轮数。长期开发的话Coding Plan 比按量更适合高频调用 MCP 的场景。Key 在 控制台 创建Claude Code 的三件套配置对照 接入文档 更稳妥。复现清单一把 Key、https://taotoken.net/api作为 Base URL、~/.claude/settings.json里三个 env 字段、项目根目录.mcp.json里 time 服务器、uvx在 PATH。五样齐了10 分钟能跑通缺一样/mcp那一步就会卡住。 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度