客户端接入
蜀农 API 的 MCP 端点兼容支持 Streamable HTTP 传输的标准 MCP 客户端。本节给出常见客户端的配置方式,配置完成后模型即可自主调用天气、知识库、图像识别与时间工具。
开始前请先准备好 API Key,参见 获取 API Key 与 鉴权。
通用配置要素
无论使用哪个客户端,需要填写的都是这三项:
| 配置项 | 值 |
|---|---|
| 传输类型 | Streamable HTTP(部分客户端显示为 http、streamableHttp 或「远程 MCP」) |
| 服务地址 | https://ai.agriwis.com/mcp |
| 请求头 | Authorization: Bearer <你的 API Key> |
不要在浏览器的网页前端里配置这个密钥。API Key 具备账户额度权限,浏览器端配置会把它暴露给任何打开页面的人。客户端配置应写在本地配置文件或服务端环境变量中。
Claude Code
用命令行添加,一条命令完成:
claude mcp add --transport http shunong \
https://ai.agriwis.com/mcp \
--header "Authorization: Bearer sk_xxxxxxxxxxxxxxxx"
添加后确认连接状态:
claude mcp list
在会话中查看已加载的工具:
/mcp
需要跨项目共享时加 --scope user,仅当前项目使用则用默认的 --scope local。
Claude Desktop
在配置文件中添加服务。配置文件位置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"shunong": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://ai.agriwis.com/mcp",
"--header",
"Authorization: Bearer ${SHUNONG_API_KEY}"
],
"env": {
"SHUNONG_API_KEY": "sk_xxxxxxxxxxxxxxxx"
}
}
}
}
保存后完全退出并重启 Claude Desktop,工具图标出现在输入框附近即表示加载成功。
较新版本的 Claude Desktop 支持在「设置 → 连接器」中直接添加远程 MCP,填入服务地址与 Authorization 请求头即可,无需借助 mcp-remote。如果你的版本有该入口,优先使用它,配置更简单。
Cursor
在项目根目录创建 .cursor/mcp.json(仅该项目生效),或编辑全局配置 ~/.cursor/mcp.json:
{
"mcpServers": {
"shunong": {
"url": "https://ai.agriwis.com/mcp",
"headers": {
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"
}
}
}
}
修改后在 Cursor 设置的 MCP 面板中确认服务状态为绿色,再在对话中使用 Agent 模式,工具才会被自动调用。
Cline(VS Code 扩展)
点击扩展侧边栏的 MCP Servers 图标 → Configure MCP Servers,在打开的配置文件中添加:
{
"mcpServers": {
"shunong": {
"type": "streamableHttp",
"url": "https://ai.agriwis.com/mcp",
"headers": {
"Authorization": "Bearer sk_xxxxxxxxxxxxxxxx"
},
"disabled": false,
"autoApprove": ["weather_search", "get_current_time", "knowledge_search"]
}
}
}
autoApprove 中列出的工具会被自动执行,不再逐个确认。建议只把只读查询类工具放进去,图像识别涉及外部图片下载,保留人工确认更稳妥。
Cherry Studio
设置 → MCP 服务器 → 添加,类型选择「可流式传输的 HTTP(Streamable HTTP)」,依次填入:
- URL:
https://ai.agriwis.com/mcp - 请求头:键填
Authorization,值填Bearer sk_xxxxxxxxxxxxxxxx
保存后启用开关,服务状态变为已连接即可在对话中调用。
其他客户端
配置项名称因客户端而异,但本质都是「URL + Authorization 请求头」。如果你的客户端配置界面里有以下任一表述,按对应方式填写:
| 客户端界面表述 | 填写方式 |
|---|---|
| 远程 / Remote MCP | 只填 URL 和请求头 |
| Streamable HTTP / HTTP | 同上 |
| SSE / 旧版 HTTP+SSE | 不支持。本端点不接受 GET 建流,请改用 Streamable HTTP |
| stdio / 本地命令 | 用 npx -y mcp-remote https://ai.agriwis.com/mcp --header "Authorization: Bearer sk_xxx" 做协议转换 |
验证与调试
配置不生效时,先用 curl 排除客户端因素,确认端点本身可用:
# 1. 初始化,取出响应头里的 mcp-session-id
curl -s -D headers.txt -X POST https://ai.agriwis.com/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer $SHUNONG_API_KEY" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"debug","version":"1.0.0"}}}'
SID=$(grep -i '^mcp-session-id:' headers.txt | tr -d '\r' | awk '{print $2}')
echo "session: $SID"
# 2. 完成握手(返回 202)
curl -s -o /dev/null -w "initialized: %{http_code}\n" \
-X POST https://ai.agriwis.com/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer $SHUNONG_API_KEY" \
-H "mcp-session-id: $SID" \
-d '{"jsonrpc":"2.0","method":"notifications/initialized"}'
# 3. 拉工具清单
curl -s -X POST https://ai.agriwis.com/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer $SHUNONG_API_KEY" \
-H "mcp-session-id: $SID" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
# 4. 调用工具
curl -s -X POST https://ai.agriwis.com/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer $SHUNONG_API_KEY" \
-H "mcp-session-id: $SID" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"weather_search","arguments":{"location":"成都","date":"now"}}}'
若第 3 步能返回 4 个工具,说明端点和密钥都正常,问题在客户端配置;此时重点检查请求头是否真的带上、客户端是否以 Agent 模式运行。
常见问题排查
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
401 missing api key |
请求头没带上,或客户端不支持自定义请求头 | 确认配置项里写的是 Authorization,值为 Bearer 加密钥(Bearer 后有空格) |
401 invalid api key |
密钥错误、已撤销或复制时带了多余空格 | 到控制台重新复制,粘贴后检查首尾空白 |
400 Bad Request |
客户端用 GET 建流、或 Accept 未包含 text/event-stream |
确认客户端使用 Streamable HTTP 传输而非旧版 SSE;Accept 需同时声明 application/json 与 text/event-stream |
400 缺少 Mcp-Session-Id 请求头 |
客户端跳过了 initialize 直接调用 |
先 initialize 拿到 mcp-session-id,之后每个请求都带上 |
404 Session not found |
会话已被服务端回收或重启后失效 | 重新执行 initialize 建会话,再重试一次;不要无限重试 |
| 连接成功但工具不出现 | 客户端未启用 MCP,或当前不是 Agent 模式 | 在客户端的 MCP 面板确认服务已启用;对话切到 Agent / 工具调用模式 |
Unknown tool: invalid_tool_name |
工具名拼错或沿用了过时名称 | 以 tools/list 返回的 name 为准,知识库工具是 knowledge_search |
工具调用返回 isError: true |
工具执行失败,text 是 Error invoking method: xxx 开头的纯文本 |
取 text 第二行的中文原因反馈用户;不要按 JSON 解析 |
knowledge_search 返回"知识库未命中相关片段" |
默认 scoreThreshold 为 0.7,候选被全部过滤 |
换更具体的关键词;确知知识库有覆盖时可显式传更低的 scoreThreshold |
图像识别报 图片下载失败 |
图片地址有重定向、需鉴权,或服务端访问不到该域名 | 换成公网直链,或自行下载图片转 base64 传入 |
| 请求被限流 | 短时间内并发过高 | 指数退避重试,降低并发与调用频率 |
安全建议
- 为每个环境(开发、测试、生产)分别创建 API Key,便于按环境撤销和统计用量。
- 定期检查控制台的用量记录,发现异常增长立即撤销对应密钥。
- 客户端侧对工具参数做二次校验。模型生成的参数不可信,尤其是
imageUrl这类会触发服务端外部请求的字段。 - 日志中不要输出完整 API Key,如需记录请只保留前 6 位与后 4 位。
- 面向最终用户的产品,建议由你的后端代理 MCP 请求,在代理层做用户鉴权、限流与额度控制。