MCP(模型上下文协议)和A2A(Agent-to-Agent协议)是AI生态中两大核心协议,分别解决工具调用标准化和智能体协作的痛点。本文将从原理、实战到对比,带你彻底掌握这两项技术,并提供开源代码仓库供你动手实操!


一、MCP协议:AI的“万能适配器”

  1. 核心原理
    MCP由Anthropic开源,旨在让AI模型通过标准化接口调用外部工具(如数据库、API)或数据源,无需为每个工具单独开发适配器。其核心组件包括:
  • MCP Server:托管工具或数据源,响应AI请求。
  • MCP Client:集成在AI模型中,发送请求并解析响应。
  • JSON协议:定义请求/响应格式,确保跨平台兼容。
  1. 实战:开发一个天气查询工具
    步骤1:创建MCP Server
from mcp import McpServer, Tool  
import requests  
class WeatherService(McpServer):  
    def __init__(self):  
        self.tools = [  
            Tool(  
                name="get_weather",  
                description="获取指定城市天气",  
                parameters={"city": "string"},  
                function=self.query_weather  
            )  
        ]  
    async def query_weather(self, city):  
        url = f"https://devapi.某平台.com/v7/weather/now?key=YOUR_KEY&location={city}"  
        try:  
            resp = requests.get(url)  
            return {  
                "temperature": resp.json()["now"]["temp"],  
                "condition": resp.json()["now"]["text"]  
            }  
        except Exception as e:  
            return {"error": str(e)}  
if __name__ == "__main__":  
    server = WeatherService()  
    server.run(port=8080)  

步骤2:调用MCP工具

from mcp import McpClient  
client = McpClient("http://localhost:8080")  
result = client.execute("获取上海的天气")  
print(result)  输出:{"temperature": 25, "condition": "晴"}  

效果:新工具接入效率提升90%,告别重复造轮子!

二、A2A协议:智能体协作的“TCP/IP”

  1. 核心原理
    A2A由谷歌推出,允许不同厂商的AI智能体(Agent)通过标准化流程协作完成复杂任务,支持:
  • 能力发现:通过JSON格式的“Agent Card”声明功能。
  • 任务管理:定义任务生命周期(创建→协商→执行→补偿)。
  • 多模态通信:支持文本、图像、音视频等数据格式。
  1. 实战:跨框架Agent通信
    步骤1:定义Agent Card
{  
  "name": "物流Agent",  
  "capabilities": ["跟踪包裹", "生成物流报告"],  
  "input_formats": ["application/json", "text/csv"],  
  "response_time": {"p50": "15s", "p95": "30s"}  
}  

步骤2:实现任务管理

from a2a import Agent, Task  
class LogisticsAgent(Agent):  
    async def handle_task(self, task: Task):  
        if task.name == "跟踪包裹":  
            调用物流API获取数据  
            data = await self.fetch_tracking_info(task.params["package_id"])  
            task.artifacts.append({"status": data["status"], "location": data["location"]})  
            task.update_status("IN_PROGRESS")  
        elif task.name == "生成报告":  
            生成PDF报告并返回  
            report = await self.generate_report(task.artifacts)  
            task.artifacts.append({"report": report})  
            task.update_status("COMPLETED")  
if __name__ == "__main__":  
    agent = LogisticsAgent()  
    agent.start()  

效果:复杂系统开发周期缩短50%!

三、MCP vs A2A:如何选择与结合

维度 MCP协议 A2A协议
核心目标 AI模型与外部工具/数据源交互标准化 智能体之间的跨平台协作
典型场景 调用数据库、API、本地文件 多Agent协同完成复杂任务(如招聘、旅行规划)
技术栈 JSON-RPC、gRPC HTTP、SSE、JSON-RPC
开源仓库 mcp-in-action a2a-in-action

联合应用案例:

  • 库存预警系统:
    1. MCP调用数据库:实时查询库存数据。
    2. A2A分配任务:触发采购Agent补货,通知客服Agent告知用户。

四、总结与建议

  1. 学习路径:
    • 从MCP入手,掌握工具调用标准化。
    • 进阶学习A2A,理解多Agent协作逻辑。
  2. 实践建议:
  3. 未来方向:
    • 结合MCP与A2A,构建端到端AI自动化系统。
Logo

更多推荐