mcp-gateway:构建灵活的模型上下文协议网关

mcp-gateway:构建灵活的模型上下文协议网关

mcp-gateway A flexible gateway server that bridges Model Context Protocol (MCP) STDIO servers to MCP HTTP+SSE and REST API, enabling multi-instance MCP servers to be exposed over HTTP. mcp-gateway 项目地址: https://gitcode.com/gh_mirrors/mcp/mcp-gateway

项目介绍

mcp-gateway 是一款功能强大的开源网关服务器,它能够将模型上下文协议(MCP)的 STDIO 服务器桥接为 MCP HTTP+SSE 和 REST API。这使得多实例的 MCP 服务器可以通过 HTTP 协议进行暴露,极大地扩展了 MCP 服务器的使用场景和应用范围。

项目技术分析

mcp-gateway 的核心在于提供了一个桥梁,它将传统的 MCP STDIO 服务器与 HTTP+SSE 和 REST API 相连接,这样的设计使得原本仅限于本地执行的 MCP 服务器能够通过 HTTP 协议远程访问。以下是项目的主要技术特点和实现方式:

  • 多实例支持:能够运行多个相同类型的 MCP 服务器实例,同时也支持配置多种不同的 MCP 服务器类型。
  • 网络配置:提供了灵活的网络绑定配置,支持在不同的网络接口和端口上监听。
  • 会话管理:利用会话 ID 实现了服务器实例之间的清晰分离,确保每个会话的资源独立管理。
  • 资源自动清理:当连接关闭时,自动清理服务器资源,保证系统资源的有效利用。
  • YAML 配置:使用 YAML 格式的配置文件,简化了配置过程。
  • 安全性:可选的 Basic 和 Bearer token 认证方式,增强了数据传输的安全性。

项目及技术应用场景

mcp-gateway 的设计解决了许多实际应用场景中的问题,特别是在容器化和分布式部署的环境中。以下是几个典型的应用场景:

  • 容器化部署:在容器化的环境下,如 Docker 或 Kubernetes,mcp-gateway 允许将 MCP 服务器封装在容器中,并通过 HTTP 进行访问。
  • 分布式系统:在分布式系统中,mcp-gateway 可以将不同机器上的 MCP 服务器聚合起来,提供一个统一的访问接口。
  • 远程执行:使得远程机器上的 MCP 服务器能够被本地或远程的 HTTP 客户端访问,扩展了 MCP 服务的可达性。

项目特点

mcp-gateway 项目具有以下显著特点:

  • 高度灵活:支持多种 MCP 服务器类型和实例的配置,适应不同的业务需求。
  • 易于集成:提供了 REST API 接口,便于与各种 HTTP 客户端集成,包括支持 OpenAPI/Swagger 规范的客户端。
  • 安全性:通过 Basic 和 Bearer token 认证,确保数据传输的安全性。
  • 自动资源管理:会话管理机制和资源自动清理功能,减少手动干预,提高系统稳定性。

以下是一个简单的示例,展示了如何通过 mcp-gateway 调用 MCP 服务器上的 directory_tree 工具:

# 获取会话 ID
SESSION_ID=$(curl -s "http://localhost:3000/api/sessionid" | jq -r .sessionId)

# 使用会话 ID 调用工具
curl -X POST "http://localhost:3000/api/filesystem/directory_tree?sessionId=$SESSION_ID" \
  -H "Content-Type: application/json" \
  -d '{"path": "/home/aaron/Clara"}'

mcp-gateway 通过这种桥接方式,极大地提升了 MCP 服务器在分布式系统和容器化环境中的可用性和灵活性,为开发者提供了一个强大的工具。通过其高度可配置和自动化的特性,mcp-gateway 已经成为处理模型上下文协议服务的首选解决方案。

mcp-gateway A flexible gateway server that bridges Model Context Protocol (MCP) STDIO servers to MCP HTTP+SSE and REST API, enabling multi-instance MCP servers to be exposed over HTTP. mcp-gateway 项目地址: https://gitcode.com/gh_mirrors/mcp/mcp-gateway

### Spring AI MCP Java SDK 概述 Spring AI MCP 是一种基于 Model Context Protocol (MCP) 的 Java 实现,旨在简化模型上下文协议的应用开发过程。通过该 SDK,开发者可以轻松构建支持 MCP 协议的服务端和客户端应用程序[^1]。 #### 核心功能 - **多传输选项**:支持多种通信方式,便于灵活集成到不同的技术栈中。 - **三层架构设计**: - **MCP 客户端**:负责向服务端发送请求并处理响应。 - **MCP 服务器**:提供 API 接口供客户端调用,并管理模型上下文数据。 - **工具回调接口(ToolCallbackProvider)**:允许扩展自定义行为以适应特定需求[^2]。 --- ### 使用方法 以下是关于如何使用 Spring AI MCP Java SDK 构建服务端和客户端的具体指导: #### 1. 引入 Maven 依赖 在项目的 `pom.xml` 文件中添加以下依赖项来引入 Spring AI MCP SDK: ```xml <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-mcp</artifactId> <version>1.0.0-M6</version> </dependency> ``` #### 2. 配置 YML 文件 创建或修改项目中的 `application.yml` 或 `application.properties` 文件,设置必要的参数。例如: ```yaml spring: ai: mcp: server-url: http://localhost:8080/mcp-server client-id: my-client-id secret-key: my-secret-key ``` #### 3. 编写服务端代码 服务端需要实现 ToolCallbackProvider 并将其注册到容器中。示例代码如下: ```java import org.springframework.ai.mcp.ToolCallbackProvider; import org.springframework.stereotype.Component; @Component public class MyToolCallbackProvider implements ToolCallbackProvider { @Override public String handleRequest(String requestPayload) { // 自定义逻辑处理接收到的数据 return "Response from tool callback provider"; } } ``` 同时,在控制器类中暴露 RESTful API 来接收来自客户端的请求: ```java import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/mcp-server") public class McpServerController { private final ToolCallbackProvider toolCallbackProvider; public McpServerController(ToolCallbackProvider toolCallbackProvider) { this.toolCallbackProvider = toolCallbackProvider; } @PostMapping("/process") public String process(@RequestBody String payload) { return toolCallbackProvider.handleRequest(payload); } } ``` #### 4. 编写客户端代码 客户端可以通过简单的 HTTP 请求与服务端交互。下面展示了一个基本的 Controller 示例: ```java import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; @RestController @RequestMapping("/mcp-client") public class McpClientController { private final RestTemplate restTemplate; @Value("${spring.ai.mcp.server-url}") private String serverUrl; public McpClientController(RestTemplate restTemplate) { this.restTemplate = restTemplate; } @GetMapping("/send-request") public ResponseEntity<String> sendRequest() { String url = serverUrl + "/process"; String requestBody = "{\"key\":\"value\"}"; return restTemplate.postForEntity(url, requestBody, String.class); } } ``` --- ### 总结 Spring AI MCP 提供了一套完整的解决方案,帮助开发者快速搭建基于 MCP 协议的应用程序。无论是作为服务提供商还是消费者角色,都可以借助其强大的功能模块完成复杂的业务场景需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

褚柯深Archer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值