Agent(智能体):自主决策与执行的主角,它用大模型当“大脑”来规划、推理、调用工具。
Skill(技能):Agent 能用的“能力包”,封装了专业知识、指令、API 或工具。
MCP(Model Context Protocol,模型上下文协议):连接 Agent 和 Skill/工具的标准化协议,让 Agent 能动态发现和调用各种技能。
简单说:Agent 通过 MCP 协议来使用 Skill。MCP 像神经通路,让大脑(Agent)可以指挥手脚(Skill)。
1. 三者关系图解
┌─────────────────────────────────────────┐│ Agent(智能体) ││ ┌─────────────┐ ┌─────────────────┐ ││ │ 大模型 (LLM) │───▶│ MCP 客户端 │ ││ └─────────────┘ └────────┬────────┘ │└──────────────────────────────┼──────────┘│ MCP 协议┌────────────────────┼────────────────────┐▼ ▼ ▼┌───────────────┐ ┌───────────────┐ ┌───────────────┐│ MCP 服务器 A │ │ MCP 服务器 B │ │ MCP 服务器 C ││ (天气查询 Skill)│ │ (数据库 Skill) │ │ (邮件发送 Skill)│└───────────────┘ └───────────────┘ └───────────────┘
一个 Agent 可以同时连接多个 MCP 服务器。
每个 MCP 服务器暴露一个或多个工具(即Skill 的具体实现)。
Skill 本身还可以包含提示词/知识(例如 Claude 的 Skill 文件),直接注入 Agent 的 system prompt,改变其行为。
2. 如何开发
下面以 Anthropic Claude 生态为例,展示一个最小闭环。
2.1 开发一个 Skill / MCP 服务器
用 Python(mcp 库)快速创建一个提供“获取天气”技能的服务器。
# weather_server.pyfrom mcp.server.fastmcp import FastMCPmcp = FastMCP("Weather")async def get_weather(city: str) -> str:"""查询指定城市的实时天气"""# 这里接入真实天气 API,用模拟数据替代return f"{city}:晴,26°C,湿度 60%"if __name__ == "__main__":mcp.run(transport="stdio") # 通过标准输入输出通信
SKILL.md 文件:weather-skill查询全球城市天气的技能。## 指令当用户询问天气时,使用 get_weather 工具。
然后把上面的 weather_server.py 作为该技能的后端工具。这样 Skill 就同时包含了知识指令 + 可执行工具。
2.2 开发一个使用 MCP 的 Agent
Agent 负责调用 LLM,并根据 LLM 的决策去请求 MCP 服务器上的工具。这里用 Python + Claude SDK 示意:
import asyncioimport osfrom anthropic import Anthropicfrom mcp import ClientSession, StdioServerParametersfrom mcp.client.stdio import stdio_clientasync def main():# 1. 启动 MCP 客户端,连接到刚才的天气技能服务器server_params = StdioServerParameters(command="python", args=["weather_server.py"])async with stdio_client(server_params) as (read, write):async with ClientSession(read, write) as session:await session.initialize()# 2. 从 MCP 服务器获取可用工具列表(即 Skill)tools = await session.list_tools()# 3. 创建 Claude 客户端,并带上这些工具定义client = Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])messages = [{"role": "user", "content": "北京今天天气怎么样?"}]response = client.messages.create(model="claude-sonnet-4-20250514",max_tokens=1024,messages=messages,tools=tools, # 告诉模型它可以用的技能)# 4. 如果模型决定调用工具,则执行并返回结果if response.stop_reason == "tool_use":tool_call = response.content[-1]tool_name = tool_call.nametool_args = tool_call.input# 通过 MCP 调用技能result = await session.call_tool(tool_name, tool_args)# 把工具执行结果返回给模型,生成最终回复messages.append({"role": "assistant", "content": response.content})messages.append({"role": "user", "content": [{"type": "tool_result","tool_use_id": tool_call.id,"content": result.content}]})final_response = client.messages.create(model="claude-sonnet-4-20250514",max_tokens=1024,messages=messages,)print(final_response.content[0].text)asyncio.run(main())
2.3 开发流程总结
3. 广义视角(非 Anthropic 生态)
即使在 OpenAI / LangChain / AutoGen 等框架下,三者的本质关系不变:
Skill ≈ 一个函数 / API 调用 / 提示词模板集合
MCP可替换为 函数调用(Function Calling) 或 LangChain 的 Tool 抽象
Agent 依然是那个决策、调用、循环的主体
此时 MCP 的“标准化协议”角色被原生函数调用或框架内置工具取代,但开发模式仍然是把 Skill 封装成工具,然后交给 Agent 去调度。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……




还没有评论,来说两句吧...