来源:互联网 更新时间:2026-05-29 07:34
上一篇文章里,我们拆解了一个天气实时预报的MCP Server,相信大家对MCP的基本形态已经有了一些体感。那么这一篇,咱们重点聊聊MCP客户端在实际使用中会遇到的问题和配置方式。如果篇幅允许,还会顺带介绍几个MCP的高级特性。
在正式开始之前,先快速回顾一下此前的系列内容,方便大家保持知识连贯:MCP技术理解系列的前五篇文章,分别从协议基础、工作原理、Server实现等角度做了梳理。这一篇则要深入Client端,解决“怎么调”、“怎么配”这些更落地的问题。
很多人会有一个误区:是不是让LLM直接发出指令,就能调用对应的MCP Server?这个理解其实是不对的。根本原因在于,LLM本身不具备外调能力——它不能直接发起一个HTTP请求或执行一个系统命令。
实际上,调用MCP Server的场景可分为两类。但无论哪种情况,真正的调用方都是AI应用通过MCP Client来完成的,LLM只负责推理输入和输出。弄清楚这两类场景,我们再去拆解MCP Client的配置细节,就会清晰很多。
这里先铺垫两个关键认识:
rm -rf /这样的危险操作,你的Ja va或Go代码完全可以在发送给Server之前检测并拦截这个请求。如果你只是想让Claude Code或Cursor这类现成的AI应用,去调用一个现成的MCP Server(包括你自己编写的),那你根本不需要写任何MCP Client代码,只需要修改配置文件即可。在这种情况下,host就是AI应用本身,它已经内置了写好的MCP Client代码。你配置好MCP Server,它就会自动维护连接、完成后续的一切。
如果你想在自己开发的Ja va、Go或Python程序中调用一个MCP Server——比如构建一个能调用本地工具的AI Agent——那你就需要自己实现一个MCP Client。
以Stdio传输方式为例,核心交互流程可以简化为三步:
npx -y @modelcontextprotocol/server-filesystem这样的命令。initialize请求,协商协议版本和能力。tools/list、tools/call、resources/read等JSON-RPC消息。在这个场景下,你需要自己编写MCP Client代码来处理初始化链接、维护协议和连接、发送消息以及处理响应。
看过上面的流程,可能有人还会疑惑:那LLM在整个过程中到底扮演什么角色?别急,我们上面其实已经说了——AI应用通过MCP Client调用MCP Server,LLM只负责推理输入和输出。下面用一个完整的调用链来演示,看完就清楚了。
先明确各个角色的职责:
下面是完整的交互流程:
fs.read),我会查数据库(db.query)。”user_id=101的订单。”db.query工具能解决这个问题。{ "tool_use": "db.query", "params": { "sql": "SELECT * FROM orders WHERE user_id=101" } }tools/call请求。[Order A, Order B],请生成给用户的最终回复。”相信通过上面的解析,大家对整个调用过程应该比较清晰了。接下来,我们再按场景逐步拆解MCP Client的配置问题。
前面提到,在Claude Code这类现成的AI应用里,我们只需要配置MCP Server即可,不需要编写MCP Client代码。下面以Claude Code为例,具体看看怎么配。
配置信息写在claude_desktop_config.json文件中:
// ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"weather": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/weather", "run", "weather-server"]
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/username/Documents"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
}
}
}
}
可以将每一项配置理解为在终端执行一个长连接的子进程。以下是关键参数的拆解:
mcpServersweather、github)是该Server的唯一标识符,用于在AI界面显示和内部隔离。
command(可执行文件)npx(Node.js)、python、uv(Python包管理器),或者你编译好的Go/Ja va二进制文件。
args(启动参数)command后面,形成完整的shell启动命令。
uv --directory /path/to/weather run weather-server,这告诉uv切换到特定目录并运行该项目。npx -y @modelcontextprotocol/server-filesystem /Users/username/Documents。-y表示自动确认安装,最后一个参数是传给Server程序内部的参数,告知它允许访问哪个文件夹——这是一个白名单机制。env(环境变量)ENV或在本地.env文件中定义变量一样。以GitHub示例为例,GITHUB_PERSONAL_ACCESS_TOKEN会被注入到该进程的上下文中,Server代码可以通过os.Getenv("GITHUB_PERSONAL_ACCESS_TOKEN")(Go)或System.getenv(...)(Ja va)获取。
这就是前面说的场景二——在自己构建的AI应用中,需要使用官方提供的SDK来编写MCP Client代码。
这里补充一个信息:官方提供了多种SDK。其中,后端开发常用的Go SDK由Google和Go官方维护,Ja va SDK由Spring AI官方维护,而Python SDK则由MCP官方维护。
下面是用Python SDK编写MCP Client的示例代码:
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
# 配置服务器参数
server_params = StdioServerParameters(
command="uv",
args=["--directory", "/path/to/weather", "run", "weather-server"],
)
async def main():
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
# 初始化连接
await session.initialize()
# 列出可用工具
tools = await session.list_tools()
print("A vailable tools:", tools)
# 调用工具
result = await session.call_tool(
"get_forecast",
arguments={"latitude": 37.7749, "longitude": -122.4194}
)
print("Forecast:", result)
# 列出资源
resources = await session.list_resources()
print("A vailable resources:", resources)
# 读取资源
config = await session.read_resource("weather://config")
print("Config:", config)
if __name__ == "__main__":
import asyncio
asyncio.run(main())
这一篇主要解答了MCP Client的几个核心问题:Client到底怎么调用Server?在不同场景下,我们该如何配置或编写客户端代码?相信结合前面的系列文章,大家对MCP的整体理解已经比较完整了。下一篇我们会继续深入,聊聊MCP的高级特性以及一些需要特别注意的细节——这些点在实际落地中尤为重要。
《Off Campus》第二季官宣:这对CP还在,但不再是主角
和平精英如何做到压枪稳-和平精英怎样才能压枪稳
客单价碾压宝马奥迪!极氪5月交付新车34377辆:连续4个月双增长
HBO 奇幻剧《龙之家族》第三季定档 6 月 22 日,最终预告片曝光喉道海战
DOTA2 TI时隔七年重返上海!门票6月10日开抢,国服享受优先购买!
网络热词聊污是什么意思
帅气继父网名女生可爱英文(精选100个)
帅到极致的网名女生霸气(精选100个)
蒙古上单是什么梗
抖音最火沙雕男生网名(精选100个)
韦一敏是什么梗
作家助手如何上传自制封面 作家助手如何设置小说的封面
有寓意的易经网名男生(精选100个)
免费看电影的软件推荐
金铲铲之战s17六暗星卡莎阵容玩法构筑指南
因空难被判“过失杀人罪” 空客、法航均被顶格处罚22.5万欧元
SpaceX狂揽AI人才,马斯克亲自面试且不看简历背景
三角洲行动卡战备怎么弄 三角洲行动卡战备攻略
阿里发布Qwen3.7-Max大模型,全球第五、国产第一
网石18禁MMO《RAVEN2:渡鸦》大型更新推出全新职业“军阀”
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc