使用说明
项目简介
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 服务器的工具能力,统一暴露给客户端。
安装步骤
- Prerequisites:
- 安装 Java 17 或更高版本。
- 安装 Maven 3.6 或更高版本。
- (如果使用 Spring Boot 集成) 安装 Spring Boot 3.2.2 或更高版本。
- Clone Repository: 从 GitHub 克隆 'mcp_mediator' 仓库到本地:
git clone https://github.com/makbn/mcp_mediator.git cd mcp_mediator - Build Project: 使用 Maven 构建项目。在仓库根目录下运行以下命令:
构建成功后,JAR 文件将生成在各个模块的 'target' 目录下,例如 'mcp-mediator-example/target/mcp-mediator-example.jar'。mvn clean install - 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 服务器的配置也需要根据实际情况进行调整。
基本使用方法
- 启动 MCP Mediator 服务器: 根据选择的模式(Default 或 Proxy),运行相应的示例代码,例如 'DefaultMcpMediatorStdioExample' 或 'ProxyMcpMediatorStdioExample'。
- 配置 MCP 客户端: 在 MCP 客户端中,配置连接到 MCP Mediator 服务器所需的服务器信息,包括 'serverName','command' 和 'args' 等。 使用上述提供的 JSON 配置示例,并根据实际的文件路径和远程服务器配置进行修改。
- 客户端发送请求: 使用 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)的交互。
信息
分类
开发者工具