使用说明
ZMCP-MCP+A2A客户端/服务器
ZMCP是一个实现模型上下文协议(MCP)和A2A协议的桌面应用程序。 它以现代的模块化界面提供服务器和客户端功能。
特性
服务器功能
- 灵活的服务器配置:通过可视化配置界面动态加载和配置多个MCP工具提供程序
- 工具管理:具有易于使用界面的预定义工具
- 协议支持:完全符合MCP规范,支持工具、资源和提示
- 性能监控:跟踪服务器活动和性能指标
客户端功能
- 服务器连接管理:通过安全身份验证连接到多个MCP服务器
- 工具发现和使用:自动从连接的服务器中发现和使用工具
- 交互式会话管理:创建、保存和管理交互会话
- 响应可视化:以富文本格式显示各种内容类型
安装
设置
- 克隆存储库:
git clone https://github.com/mexyusef/zmcp.git
cd zmcp
- 安装依赖项:
pip install -r requirements.txt
用法
运行应用程序
使用提供的启动脚本运行应用程序:
python run.py
服务器模式
- 转到“服务器”选项卡
- 配置服务器设置
- 添加和配置工具
- 点击“启动服务器”开始托管
客户端模式
- 转到“客户端”选项卡
- 输入服务器URL(例如。,http://localhost:8000)
- 点击“连接”连接到服务器
- 浏览可用的工具、资源和提示
- 使用提供的界面选择和使用工具
预定义工具
ZMCP附带了几个预定义的工具:
- Web提取:从web URL获取内容
- 系统信息:获取有关系统的信息
- 文件管理器:读取、写入和列出文件
- 流程经理:执行和管理流程
- 记忆工具:存储和检索记忆
定制
ZMCP可以通过多种方式进行定制:
- 主题:在浅色和深色主题之间进行选择
- 布局:调整面板位置和可见性
- 服务器配置:通过可视化界面配置服务器设置
- 工具配置:启用/禁用和配置单个工具
桥接模块
ZMCP桥接模块提供了一种连接MCP和A2A协议的方法,允许:
- MCP工具作为A2A代理:使用将MCP工具转换为A2A代理
MCPToolToA2AAgent类。 - A2A代理作为MCP工具:使用将A2A代理转换为MCP工具
A2AAgentToMCPTool类。
例子
将MCP工具转换为A2A代理
from zmcp.core.mcp import Tool as MCPTool
from zmcp.bridge.mcp_to_a2a import MCPToolToA2AAgent
# Create an MCP tool
async def handler(**kwargs):
return [{"type": "text", "text": f"Tool response: {kwargs.get('input', '')}"}]
mcp_tool = MCPTool(
name="calculator",
description="A simple calculator tool",
handler=handler,
input_schema={
"type": "object",
"properties": {
"input": {
"type": "string",
"description": "Math expression to calculate"
}
}
}
)
# Convert to A2A agent
bridge = MCPToolToA2AAgent(mcp_tool)
# Create a FastAPI app for the A2A agent
app = bridge.create_app()
# Run the app
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
将A2A代理转换为MCP工具
import httpx
from zmcp.a2a.types import AgentCard
from zmcp.bridge.a2a_to_mcp import A2AAgentToMCPTool
# Create or load an agent card
agent_card = AgentCard(
id="math-agent",
name="Math Agent",
description="An agent that can do math",
skills=[
{
"id": "calculate",
"name": "Calculate",
"description": "Calculate a math expression"
}
]
)
# Create the bridge
bridge = A2AAgentToMCPTool(agent_card)
# Get the MCP tools
tools = bridge.get_tools()
# Use the tools
async def use_tools():
result = await tools[0].handler(text="2 + 2")
print(result)
# Clean up
await bridge.close()
