MCP 服务器启动器

模型上下文协议 (MCP) 服务器 是通过标准化协议接口向 AI 应用程序公开特定功能的程序。每个服务器都为特定领域提供专注的功能。

Spring AI MCP 服务器启动器为在 Spring Boot 应用程序中设置 MCP 服务器 提供自动配置。它们实现了 MCP 服务器功能与 Spring Boot 自动配置系统的无缝集成。

MCP 服务器启动器提供:

  • MCP 服务器组件的自动配置,包括工具、资源和提示

  • 支持不同的 MCP 协议版本,包括 STDIO、SSE、可流式 HTTP 和无状态服务器

  • 支持同步和异步操作模式

  • 多种传输层选项

  • 灵活的工具、资源和提示规范

  • 变更通知功能

  • 基于注解的服务器开发,具有自动 Bean 扫描和注册功能

MCP 服务器启动器

MCP 服务器支持多种协议和传输机制。使用专用的启动器和正确的 spring.ai.mcp.server.protocol 属性来配置您的服务器

STDIO

服务器类型 依赖项 财产

标准输入/输出 (STDIO)

spring-ai-starter-mcp-server

spring.ai.mcp.server.stdio=true

WebMVC

服务器类型

依赖项

财产

SSE WebMVC

spring-ai-starter-mcp-server-webmvc

spring.ai.mcp.server.protocol=SSE 或空

可流式 HTTP WebMVC

spring-ai-starter-mcp-server-webmvc

spring.ai.mcp.server.protocol=STREAMABLE

无状态 WebMVC

spring-ai-starter-mcp-server-webmvc

spring.ai.mcp.server.protocol=STATELESS

WebMVC (响应式)

服务器类型

依赖项

财产

SSE WebFlux

spring-ai-starter-mcp-server-webflux

spring.ai.mcp.server.protocol=SSE 或空

可流式 HTTP WebFlux

spring-ai-starter-mcp-server-webflux

spring.ai.mcp.server.protocol=STREAMABLE

无状态 WebFlux

spring-ai-starter-mcp-server-webflux

spring.ai.mcp.server.protocol=STATELESS

服务器功能

根据服务器和传输类型,MCP 服务器可以支持各种功能,例如

  • 工具 - 允许服务器公开可由语言模型调用的工具

  • 资源 - 提供服务器向客户端公开资源的标准化方式

  • 提示 - 提供服务器向客户端公开提示模板的标准化方式

  • 实用程序/自动完成 - 提供服务器为提示和资源 URI 提供参数自动完成建议的标准化方式

  • 实用程序/日志记录 - 提供服务器向客户端发送结构化日志消息的标准化方式

  • 实用程序/进度 - 通过通知消息对长时间运行的操作进行可选的进度跟踪

  • 实用程序/Ping - 服务器报告其状态的可选健康检查机制

所有功能默认启用。禁用某个功能将阻止服务器注册并向客户端公开相应的功能。

服务器协议

MCP 提供多种协议类型,包括

  • STDIO - 进程内(例如服务器在主机应用程序内部运行)协议。通信通过标准输入和标准输出进行。要启用 STDIO,请设置 spring.ai.mcp.server.stdio=true

  • SSE - 用于实时更新的服务器发送事件协议。服务器作为独立进程运行,可以处理多个客户端连接。

  • 可流式 HTTP - 可流式 HTTP 传输 允许 MCP 服务器作为独立进程运行,使用 HTTP POST 和 GET 请求处理多个客户端连接,并可选地使用服务器发送事件 (SSE) 流式传输多个服务器消息。它取代了 SSE 传输。要启用 STREAMABLE 协议,请设置 spring.ai.mcp.server.protocol=STREAMABLE

  • 无状态 - 无状态 MCP 服务器设计用于简化部署,其中请求之间不维护会话状态。它们是微服务架构和云原生部署的理想选择。要启用 STATELESS 协议,请设置 spring.ai.mcp.server.protocol=STATELESS

同步/异步服务器 API 选项

MCP 服务器 API 支持命令式(即同步)和响应式(例如异步)编程模型。

  • 同步服务器 - 使用 McpSyncServer 实现的默认服务器类型。它专为应用程序中直接的请求-响应模式而设计。要启用此服务器类型,请在配置中设置 spring.ai.mcp.server.type=SYNC。激活后,它会自动处理同步工具规范的配置。

注意: SYNC 服务器将只注册同步 MCP 注解方法。异步方法将被忽略。

  • 异步服务器 - 异步服务器实现使用 McpAsyncServer,并针对非阻塞操作进行了优化。要启用此服务器类型,请使用 spring.ai.mcp.server.type=ASYNC 配置您的应用程序。此服务器类型会自动设置带有内置 Project Reactor 支持的异步工具规范。

注意: ASYNC 服务器将只注册异步 MCP 注解方法。同步方法将被忽略。

MCP 服务器注解

MCP 服务器启动器为基于注解的服务器开发提供全面支持,允许您使用声明性 Java 注解而不是手动配置来创建 MCP 服务器。

关键注解

  • @McpTool - 使用自动 JSON 模式生成将方法标记为 MCP 工具

  • @McpResource - 通过 URI 模板提供对资源的访问

  • @McpPrompt - 为 AI 交互生成提示消息

  • @McpComplete - 为提示提供自动完成功能

特殊参数

注解系统支持提供额外上下文的特殊参数类型

  • McpMeta - 访问 MCP 请求中的元数据

  • @McpProgressToken - 接收长时间运行操作的进度令牌

  • McpSyncServerExchange/McpAsyncServerExchange - 用于高级操作的完整服务器上下文

  • McpTransportContext - 用于无状态操作的轻量级上下文

  • CallToolRequest - 用于灵活工具的动态模式支持

简单示例

@Component
public class CalculatorTools {

    @McpTool(name = "add", description = "Add two numbers together")
    public int add(
            @McpToolParam(description = "First number", required = true) int a,
            @McpToolParam(description = "Second number", required = true) int b) {
        return a + b;
    }

    @McpResource(uri = "config://{key}", name = "Configuration")
    public String getConfig(String key) {
        return configData.get(key);
    }
}

自动配置

通过 Spring Boot 自动配置,注解的 Bean 会自动检测并注册

@SpringBootApplication
public class McpServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(McpServerApplication.class, args);
    }
}

自动配置将

  1. 扫描带有 MCP 注解的 Bean

  2. 创建适当的规范

  3. 将它们注册到 MCP 服务器

  4. 根据配置处理同步和异步实现

配置属性

配置服务器注解扫描器

spring:
  ai:
    mcp:
      server:
        type: SYNC  # or ASYNC
        annotation-scanner:
          enabled: true

其他资源

示例应用程序

其他资源

© . This site is unofficial and not affiliated with VMware.