ARTICLE DETAIL

资讯详情

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

Loki MCP Server 连接失败?TaoToken 这样填模型 Base URL

Loki MCP Server 连接失败?TaoToken 这样填模型 Base URL Loki MCP Server 连接失败TaoToken 这样填模型 Base URL。很多人第一次在 Claude Code 里看到claude mcp get loki返回 failed或者/mcp面板一闪而过会下意识去查 Loki 地址、网络连通性、Docker 端口。但实际踩下来更常见的根因是 Claude Code 自己的模型 API 地址没配对导致整个对话链路先断了MCP 工具自然也没机会被调用。本文围绕 Loki、MCP、Claude Desktop、Claude Code、Cursor 这几个高频场景把 TaoToken 的 Base URL 填法、三端配置、验证命令和报错排查一次讲清。你不需要先理解 MCP 协议细节只要按步骤把模型链路和 MCP Server 两条线分别打通就能让自然语言查日志真正跑起来。1. Loki MCP Server 连接失败的现场claude mcp get loki 显示 failed 时先看模型链路典型现场是这样的你在 Claude Code 里输入claude mcp get loki返回里写着 Type: http、URL: http://localhost:8080/stream但 Status 是 failed 或 disconnected。接着你去看 Loki 容器curl http://localhost:3100/ready又是 ready。于是问题变得很迷惑Loki 活着MCP Server 也活着为什么 Claude Code 说连不上这里要先分清两条链路。第一条是 Claude Code 到模型 API 的链路负责把自然语言变成工具调用第二条是 Claude Code 到 Loki MCP Server 的链路负责真正执行loki_query、loki_label_names、loki_label_values。如果第一条链路因为 Base URL 填错、Key 无效、多了/v1而失败Claude Code 可能连工具列表都拉不全表现就像 MCP 连接失败。所以排障顺序应该是先确认模型 API 能通再确认 MCP Server 能通。症状容易误判的原因优先验证claude mcp get loki显示 failed以为 Loki 挂了先看 Claude Code 模型 API 配置/mcp面板打开后没有 loki 工具以为 MCP 没注册检查~/.claude/settings.json的 env能聊天但调用 loki 时报错以为工具实现有问题检查 MCP URL 和 transport查询报 invalid start time以为 LogQL 写错检查时间格式是否带负号或 RFC3339返回结果超 token 限制以为 Loki 数据太多加 limit、缩小时间范围、加过滤条件我试过在同一个终端里先export ANTHROPIC_BASE_URLhttps://taotoken.net/api再启动 Claude Codeclaude mcp get loki立刻从 failed 变成 connected。这个现象说明MCP 的失败不一定是 MCP 本身模型 API 的 Base URL 才是整条链路的入口。入口没对后面都白搭。1.1 为什么 Base URL 不要加 /v1Claude Code 使用的是 Anthropic 兼容协议。TaoToken 的模型 Base URL 应该填https://taotoken.net/api不要写成https://taotoken.net/api/v1也不要写成https://taotoken.net/v1。多写/v1后客户端会在后面再拼一次版本路径最终请求地址会变成类似/api/v1/v1/messages服务端返回 404 或 401Claude Code 侧往往只显示一个笼统的连接失败。你可以把 Base URL 理解成“小区大门地址”/v1是“几单元几零几”。客户端自己知道要进哪个单元你只需要给到小区大门。给多了快递员反而找不到。这个规则在 Claude Code、Claude Desktop 的 API 配置、Cursor 的模型配置里都适用。2. 先给 Claude Code 接上 TaoToken创建 Key 与 Base URL 规则在折腾 Loki MCP Server 之前先把模型链路打通。打开 TaoToken 官网https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content进入控制台后创建 API Key。建议单独建一个 Key 给 Claude Code 用名字写成claude-code-loki-mcp方便以后按用途禁用或轮换。创建入口在https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewriteKey 管理页在https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite。拿到 Key 后先不要急着配 Loki。先用模型对话页验证这个 Key 能不能正常调用模型入口是https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite。在对话页里发一句“你好回复 OK”如果能正常返回说明 Key 和账户状态没问题。这一步能帮你排除掉后面一半的玄学问题。然后确认两个地址用途地址备注官网入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content注册、看文档、进控制台模型 API Base URLhttps://taotoken.net/api不要加/v1API 文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite看 Anthropic 兼容说明Claude Code 专用说明https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaude_code_anthropicutm_campaignrewrite配置姿势和常见问题如果你准备长期在 Claude Code 里跑 Loki 查询、日志分析、Agent 工作流可以顺手看一下 Coding Plan入口是https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite。它更适合高频编码和长上下文场景和按量 Key 是两条不同的使用路径。3. 可复制配置Claude Code、Claude Desktop、Cursor 三端各填哪里配置的核心就一句话模型 Base URL 填https://taotoken.net/apiMCP Server 地址填你实际部署的 Loki MCP 地址。下面三端配置可以直接复制把 Key 和 URL 换成你自己的。3.1 Claude Codesettings.json 与 mcp addClaude Code 推荐把模型配置写进~/.claude/settings.json这样每个终端窗口都能生效不用每次 export。文件内容如下{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你的TaoTokenKey } }保存后重新打开终端或者执行source ~/.zshrc如果你用的是 shell 方式。接着添加 Loki MCP Server。本地 Docker 跑起来的 Loki MCP推荐用 Streamable HTTPclaude mcp add --transport http --scope user loki http://localhost:8080/stream如果你用的是 SSE 旧协议可以改成claude mcp add --transport sse --scope user loki http://localhost:8080/sse添加完成后检查claude mcp get loki期望看到Status: connected、Type: http、URL: http://localhost:8080/stream。如果这里显示 failed先回到第 2 节确认模型 Key 和 Base URL再看第 5 节的排查表。3.2 Claude Desktopclaude_desktop_config.json 里放 MCP ServerClaude Desktop 的 MCP 配置在claude_desktop_config.json。macOS 通常在~/Library/Application Support/Claude/claude_desktop_config.jsonWindows 在%APPDATA%\Claude\claude_desktop_config.json。如果你用 Docker 跑 Loki MCP Server配置如下{ mcpServers: { loki: { command: docker, args: [ run, --rm, -i, -e, LOKI_URLhttp://host.docker.internal:3100, loki-mcp-server:latest ] } } }注意host.docker.internal是 Docker 容器访问宿主机服务的地址。macOS 和 Windows 的 Docker Desktop 支持这个域名Linux 上需要额外加--add-hosthost.docker.internal:host-gateway或者直接写宿主机的局域网 IP。Claude Desktop 的模型 API 配置不在这个文件里如果你在 Claude Desktop 里也接了自定义 API记得同样把 Base URL 填成https://taotoken.net/api不要加/v1。3.3 Cursormcp.json 与模型 Base URL 分开配Cursor 的 MCP 配置通常在~/.cursor/mcp.json格式和 Claude Desktop 类似{ mcpServers: { loki: { command: docker, args: [ run, --rm, -i, -e, LOKI_URLhttp://host.docker.internal:3100, loki-mcp-server:latest ] } } }Cursor 的模型侧如果是通过 Anthropic 兼容方式接入Base URL 同样填https://taotoken.net/api。配置完后重启 Cursor在 MCP 面板里应该能看到loki以及三个工具loki_query、loki_label_names、loki_label_values。如果只看到 server 名字但看不到工具通常是 transport 选错或者 MCP Server 启动后立刻退出去看 Docker 日志里有没有报错。3.4 Loki MCP Server 自身的 Docker 环境变量Loki MCP Server 通过环境变量回退来拿 Loki 地址和认证信息优先级是请求参数大于环境变量大于默认值。常用变量如下services: loki-mcp-server: image: loki-mcp-server:latest ports: - 8080:8080 environment: LOKI_URL: http://loki:3100 LOKI_ORG_ID: LOKI_USERNAME: LOKI_PASSWORD: LOKI_TOKEN: PORT: 8080 depends_on: loki: condition: service_healthy如果你在本地直接跑二进制LOKI_URL可以写成http://localhost:3100。如果在 Docker Compose 里跑服务名是loki就写http://loki:3100。这个细节看起来小但很多人把localhost写进容器里结果 MCP Server 一直连不上 Loki表现又是claude mcp get lokifailed很容易绕远路。4. 验证请求从 claude mcp get loki 到真实查日志配置完成后不要直接上复杂 LogQL先用最小请求验证每一层。顺序是模型 API 通、MCP Server 通、Loki 通、工具调用通。第一步确认 Claude Code 模型链路claude -p 回复 OK如果返回OK说明ANTHROPIC_BASE_URL和 Key 没问题。如果这里就报错先不要看 Loki去检查~/.claude/settings.json里的 Base URL 是否多写了/v1Key 是否复制完整。第二步确认 MCP Server 健康检查curl -s http://localhost:8080/healthz期望返回ok。如果没有返回去看容器日志docker logs -f loki-mcp-server第三步确认 Loki 本身可查curl -G http://localhost:3100/loki/api/v1/label/app/values \ --data-urlencode startnow-1h如果返回 JSON 里有status:success和 values 数组说明 Loki 有数据。如果没有数据先跑一下仓库里的./insert-loki-logs.sh插入测试日志再查。第四步回到 Claude Code 里验证 MCP 工具claude mcp get loki期望看到 connected。然后在 Claude Code 对话框里输入loki查看所有可用的标签名成功时Claude Code 会调用loki_label_names返回类似app、env、host、job、namespace、pod、service_name的标签列表。接着你可以继续问查询 apppb-trading-engine envprodjp 近 5 分钟的错误日志帮我分析下这里有个高频坑时间参数不要写5m要写-5m。因为 Loki MCP Server 的parseTime支持now、-5m、RFC3339 和纯日期但不支持不带负号的5m。如果你在 Claude Code 里看到MCP error -32603: invalid start time: unsupported time format: 5m直接把start改成-5m或者写完整 UTC 时间start: 2026-04-08T06:00:00Z end: 2026-04-08T07:10:00Z成功返回后你会看到loki_query的结果。如果日志量很大Claude Code 可能会提示结果超过最大 token 限制并把输出保存到本地文件。这时不要硬读应该缩小时间范围、加limit、加更严格的 LogQL 过滤例如{apppb-trading-engine, envprodjp} |~ (?i)error|exception|fatal|panic | json | line_format {{.message}}5. 常见错排查invalid start time、result exceeds maximum tokens 与 Docker LOKI_URL排障最怕一锅乱炖。下面按报错信息拆开每一条都给出验证命令和修改点。你可以把它当成 Loki MCP Server 连接失败的自查清单。5.1 claude mcp get loki 显示 failed 或 disconnected先看三处模型 Base URL 是否写成https://taotoken.net/api而不是带/v1MCP URL 是否是http://localhost:8080/stream而不是/sse混用MCP Server 是否真的在监听8080。验证命令claude mcp get loki curl -v http://localhost:8080/healthz docker ps | grep loki-mcp如果是 Claude Desktop 或 Cursor重启客户端后再看。JSON 配置文件里多一个逗号、少一个引号客户端可能直接忽略整个 MCP 配置表现就是“没有 loki 工具”。5.2 MCP error -32603: invalid start time: unsupported time format: 5m这是 Loki MCP Server 的时间解析问题。它支持now、-1h、-30m、2026-04-08T06:00:00Z、2026-04-08 06:00:00、2026-04-08。你写5m时解析器以为你要一个未来时间或纯日期直接报 unsupported。改法有三种start: -5m start: now start: 2026-04-08T06:00:00Z如果你在代码里扩展parseTime记得保持“先判断 now、再判断负号相对时间、再尝试 RFC3339、最后尝试纯日期”的顺序避免5m被误判。5.3 result exceeds maximum allowed tokensLoki 返回的日志行可能非常长Claude Code 会把超限结果保存到tool-results目录。解决方向不是换模型而是减少返回量。优先加limit: 50再把时间范围从 1 小时缩到 5 分钟最后用 LogQL 过滤掉 INFO 级别{apppb-trading-engine, envprodjp} |~ (?i)error|exception|fatal|panic如果还是超限可以用loki_label_values先确认标签值避免查了一个不存在的 app结果扫了大量无关数据。5.4 Docker 里 LOKI_URL 填 localhost 导致连不上容器里的localhost指向容器自己不是宿主机。Loki MCP Server 在 Docker 里跑Loki 在宿主机跑应该写LOKI_URL: http://host.docker.internal:3100如果 Loki 也在同一个 Compose 网络里服务名是loki则写LOKI_URL: http://loki:3100改完执行docker compose up -d --force-recreate loki-mcp-server curl -s http://localhost:8080/healthz5.5 时间戳显示 2262 年这是 Loki MCP Server 早期实现里的纳秒 bug。Loki 返回的是纳秒时间戳如果代码写成time.Unix(ts, 0)就会把纳秒当秒处理显示成 2262 年。正确写法是timestamp : time.Unix(0, int64(ns))如果你自己扩展了formatLokiResults记得所有时间戳转换都走这个函数不要在新 Tool 里再写一遍错误逻辑。6. 排障完成后把 TaoToken 的 Coding Plan 用起来Loki MCP Server 连接失败这个问题表面看是 MCP 配置实际排障时最容易被忽略的是模型 API Base URL。记住三个固定值TaoToken 模型 Base URL 是https://taotoken.net/api不要加/v1Loki MCP Server 的 Streamable HTTP 端点是http://localhost:8080/streamclaude mcp get loki看到 connected 才算真正通。如果你是第一次接入先去https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite创建 Key再看https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite里的接入文档。如果你只是想先验证模型是否正常用https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite发一条消息最快。如果你准备长期在 Claude Code、Cursor 里跑日志分析、Agent 工作流直接看https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite把高频查询和长上下文场景交给 Coding Plan 更省心。最后再提醒一句遇到claude mcp get lokifailed 时先跑claude -p 回复 OK模型链路通了MCP 的问题往往就只剩一个 URL 拼写。
返回列表