MCP协议客户端/服务器

ZMCP是一款实现MCP和A2A协议的桌面应用程序,提供服务器和客户端功能,支持工具管理、性能监控和交互会话管理。

  • by mexyusef
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mexyusef/zmcp

使用说明

ZMCP-MCP+A2A客户端/服务器

ZMCP是一个实现模型上下文协议(MCP)和A2A协议的桌面应用程序。 它以现代的模块化界面提供服务器和客户端功能。

特性

服务器功能

  • 灵活的服务器配置:通过可视化配置界面动态加载和配置多个MCP工具提供程序
  • 工具管理:具有易于使用界面的预定义工具
  • 协议支持:完全符合MCP规范,支持工具、资源和提示
  • 性能监控:跟踪服务器活动和性能指标

客户端功能

  • 服务器连接管理:通过安全身份验证连接到多个MCP服务器
  • 工具发现和使用:自动从连接的服务器中发现和使用工具
  • 交互式会话管理:创建、保存和管理交互会话
  • 响应可视化:以富文本格式显示各种内容类型

安装

设置

  1. 克隆存储库:
git clone https://github.com/mexyusef/zmcp.git
cd zmcp
  1. 安装依赖项:
pip install -r requirements.txt

用法

运行应用程序

使用提供的启动脚本运行应用程序:

python run.py

服务器模式

  1. 转到“服务器”选项卡
  2. 配置服务器设置
  3. 添加和配置工具
  4. 点击“启动服务器”开始托管

客户端模式

  1. 转到“客户端”选项卡
  2. 输入服务器URL(例如。,http://localhost:8000)
  3. 点击“连接”连接到服务器
  4. 浏览可用的工具、资源和提示
  5. 使用提供的界面选择和使用工具

预定义工具

ZMCP附带了几个预定义的工具:

  • Web提取:从web URL获取内容
  • 系统信息:获取有关系统的信息
  • 文件管理器:读取、写入和列出文件
  • 流程经理:执行和管理流程
  • 记忆工具:存储和检索记忆

定制

ZMCP可以通过多种方式进行定制:

  • 主题:在浅色和深色主题之间进行选择
  • 布局:调整面板位置和可见性
  • 服务器配置:通过可视化界面配置服务器设置
  • 工具配置:启用/禁用和配置单个工具

桥接模块

ZMCP桥接模块提供了一种连接MCP和A2A协议的方法,允许:

  1. MCP工具作为A2A代理:使用将MCP工具转换为A2A代理 MCPToolToA2AAgent 类。
  2. 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()

许可证

MIT许可证