使用说明

项目简介

MCP Mediator 是一个基于 Java 开发的 Model Context Protocol (MCP) Mediator 实现。它旨在作为 MCP 客户端和 MCP 服务器之间的中间层,简化集成并提供灵活的工具和请求管理。该项目支持标准输入/输出 (STDIO) 和服务器发送事件 (SSE) 传输协议,并可扩展以支持更多协议和功能。

主要功能点

  • MCP 协议支持: 实现了 Model Context Protocol 规范,支持 MCP 客户端和服务器之间的通信。
  • 工具执行管理: 能够注册和执行工具,允许 MCP 客户端调用外部功能,例如 Docker 容器管理和 Dropbox 文件操作 (部分功能仍在开发中)。
  • 多传输协议支持: 支持 STDIO 和 SSE 传输协议,方便在不同环境中使用。
  • 请求处理系统: 提供可扩展的请求处理系统,允许注册自定义请求处理器以扩展服务器功能。
  • 可配置服务器能力: 服务器能力可配置,例如是否启用工具功能。
  • 多工具实现: 支持多种工具实现,可以集成不同的后端服务,如 Docker 和 Dropbox。
  • 多 MCP 服务器代理: 支持作为代理服务器,连接并聚合多个远程 MCP 服务器的工具能力,统一暴露给客户端。

安装步骤

  1. Prerequisites:
  2. Clone Repository: 从 GitHub 克隆 'mcp_mediator' 仓库到本地:
    git clone https://github.com/makbn/mcp_mediator.git
    cd mcp_mediator
  3. Build Project: 使用 Maven 构建项目。在仓库根目录下运行以下命令:
    mvn clean install
    构建成功后,JAR 文件将生成在各个模块的 'target' 目录下,例如 'mcp-mediator-example/target/mcp-mediator-example.jar'。
  4. Run Examples: 示例代码位于 'mcp-mediator-example' 模块下。可以运行 'DefaultMcpMediatorStdioExample' 或 'ProxyMcpMediatorStdioExample' 等示例来启动 MCP Mediator 服务器。

服务器配置 (MCP 客户端配置)

以下是 MCP 客户端连接 MCP Mediator 服务器时需要配置的服务器信息示例。MCP 客户端需要这些信息才能与 MCP Mediator 建立连接并调用其提供的工具。

  • Default MCP Mediator (STDIO 传输):

    {
      "serverName": "my_example_mcp_server_stdio",
      "command": "java",
      "args": [
        "-cp",
        "path/to/mcp-mediator-example.jar",  // **请替换为实际构建生成的 'mcp-mediator-example.jar' 文件路径**
        "io.github.makbn.mcp.mediator.example.DefaultMcpMediatorStdioExample"
      ]
    }
    • 'serverName': MCP 服务器的名称,用于客户端识别。
    • 'command': 启动 MCP 服务器的命令,通常是 Java 运行时环境 'java'。
    • 'args': 传递给 'java' 命令的参数列表:
      • '-cp': 指定类路径,包含 'mcp-mediator-example.jar' 文件及其依赖。
      • '"path/to/mcp-mediator-example.jar"': 请根据实际构建路径替换为 'mcp-mediator-example.jar' 文件的绝对或相对路径。
      • '"io.github.makbn.mcp.mediator.example.DefaultMcpMediatorStdioExample"': 指定运行 'DefaultMcpMediatorStdioExample' 主类,启动默认 MCP Mediator 服务器。
  • Proxy MCP Mediator (STDIO 传输):

    {
      "serverName": "my_example_proxy_mcp_server_stdio",
      "command": "java",
      "args": [
        "-cp",
        "path/to/mcp-mediator-example.jar",  // **请替换为实际构建生成的 'mcp-mediator-example.jar' 文件路径**
        "io.github.makbn.mcp.mediator.example.ProxyMcpMediatorStdioExample",
        "java", // 远程 MCP 服务器的启动命令 (例如,这里假设远程服务器也是一个 Java 程序)
        "-cp",
        "path/to/remote-mcp-server.jar", // **请替换为远程 MCP 服务器的 JAR 文件路径**
        "com.example.RemoteMcpServerMainClass" // 远程 MCP 服务器的主类
      ]
    }
    • 'serverName': MCP 服务器的名称,用于客户端识别,这里是代理服务器的名称。
    • 'command': 启动 MCP 代理服务器的命令,通常是 Java 运行时环境 'java'。
    • 'args': 传递给 'java' 命令的参数列表:
      • '-cp': 指定类路径,包含 'mcp-mediator-example.jar' 文件及其依赖。
      • '"path/to/mcp-mediator-example.jar"': 请根据实际构建路径替换为 'mcp-mediator-example.jar' 文件的绝对或相对路径。
      • '"io.github.makbn.mcp.mediator.example.ProxyMcpMediatorStdioExample"': 指定运行 'ProxyMcpMediatorStdioExample' 主类,启动代理 MCP Mediator 服务器。
      • 接下来配置的是远程 MCP 服务器的信息,例如:
        • '"java"': 远程 MCP 服务器的启动命令,根据远程服务器的实际情况配置。
        • '"-cp"': 指定远程 MCP 服务器的类路径。
        • '"path/to/remote-mcp-server.jar"': 请根据远程 MCP 服务器的实际构建路径替换为 JAR 文件路径。如果远程 MCP 服务器不是 JAR 文件,请根据其启动方式进行调整。
        • '"com.example.RemoteMcpServerMainClass"': 远程 MCP 服务器的主类或启动入口。请替换为远程 MCP 服务器的实际主类名。

注意: 以上配置中的文件路径 'path/to/mcp-mediator-example.jar' 和 'path/to/remote-mcp-server.jar' 均为示例,请务必替换为实际的文件路径。远程 MCP 服务器的配置也需要根据实际情况进行调整。

基本使用方法

  1. 启动 MCP Mediator 服务器: 根据选择的模式(Default 或 Proxy),运行相应的示例代码,例如 'DefaultMcpMediatorStdioExample' 或 'ProxyMcpMediatorStdioExample'。
  2. 配置 MCP 客户端: 在 MCP 客户端中,配置连接到 MCP Mediator 服务器所需的服务器信息,包括 'serverName','command' 和 'args' 等。 使用上述提供的 JSON 配置示例,并根据实际的文件路径和远程服务器配置进行修改。
  3. 客户端发送请求: 使用 MCP 客户端向 MCP Mediator 服务器发送符合 MCP 协议的请求,例如调用已注册的工具。对于 Docker 工具,可以使用 "get_all_containers" 工具获取 Docker 容器列表,或使用 "change_docker_container_status" 工具管理 Docker 容器的生命周期。

示例请求 (获取 Docker 容器列表):

Show all my docker containers

配置客户端连接到 MCP Mediator 后,客户端即可通过自然语言指令或程序化方式调用 MCP Mediator 提供的工具,实现与后端服务(如 Docker 或 Dropbox)的交互。

信息

分类

开发者工具