MCP 服务器启动启动程序

模型上下文协议(MCP)服务器是通过标准化协议接口向人工智能应用展示特定能力的程序。每个服务器为特定领域提供专注的功能。spring-doc.cadn.net.cn

Spring AI MCP 服务器启动启动工具为 Spring Boot 应用中的 MCP 服务器设置提供了自动配置。它们使 MCP 服务器功能能够无缝集成于 Spring Boot 的自动配置系统。spring-doc.cadn.net.cn

MCP 服务器启动启动工具提供:spring-doc.cadn.net.cn

MCP 服务器启动Starters

MCP 服务器支持多种协议和传输机制。使用专用的Starters和正确的spring.ai.mcp.server.protocol配置服务器的属性:spring-doc.cadn.net.cn

STDIO

服务器类型 Dependency 属性

标准输入输出(STDIO)spring-doc.cadn.net.cn

Spring-AI-starter-mcp-serverspring-doc.cadn.net.cn

spring.ai.mcp.server.stdio=truespring-doc.cadn.net.cn

WebMVC

服务器类型spring-doc.cadn.net.cn

Dependencyspring-doc.cadn.net.cn

属性spring-doc.cadn.net.cn

SSE WebMVCspring-doc.cadn.net.cn

Spring-AI-starter-MCP-Server-webmvcspring-doc.cadn.net.cn

spring.ai.mcp.server.protocol=SSE或者空的spring-doc.cadn.net.cn

Streamable-HTTP WebMVCspring-doc.cadn.net.cn

Spring-AI-starter-MCP-Server-webmvcspring-doc.cadn.net.cn

spring.ai.mcp.server.protocol=STREAMABLEspring-doc.cadn.net.cn

无状态WebMVCspring-doc.cadn.net.cn

Spring-AI-starter-MCP-Server-webmvcspring-doc.cadn.net.cn

spring.ai.mcp.server.protocol=STATELESSspring-doc.cadn.net.cn

WebMVC(响应式)

服务器类型spring-doc.cadn.net.cn

Dependencyspring-doc.cadn.net.cn

属性spring-doc.cadn.net.cn

SSE WebFluxspring-doc.cadn.net.cn

Spring-AI-starter-mcp-server-webfluxspring-doc.cadn.net.cn

spring.ai.mcp.server.protocol=SSE或者空的spring-doc.cadn.net.cn

Streamable-HTTP WebFluxspring-doc.cadn.net.cn

Spring-AI-starter-mcp-server-webfluxspring-doc.cadn.net.cn

spring.ai.mcp.server.protocol=STREAMABLEspring-doc.cadn.net.cn

无状态WebFluxspring-doc.cadn.net.cn

Spring-AI-starter-mcp-server-webfluxspring-doc.cadn.net.cn

spring.ai.mcp.server.protocol=STATELESSspring-doc.cadn.net.cn

服务器功能

根据服务器和传输类型,MCP 服务器可以支持多种功能,例如:spring-doc.cadn.net.cn

所有功能默认都是启用的。禁用某个功能会阻止服务器注册并向客户端展示相应的功能。spring-doc.cadn.net.cn

服务器协议

MCP提供多种协议类型,包括:spring-doc.cadn.net.cn

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

  • SSE - 服务器发送的实时事件协议。服务器作为独立进程运行,可以处理多个客户端连接。spring-doc.cadn.net.cn

  • 可流式HTTP——可流式HTTP传输允许MCP服务器作为独立进程运行,能够通过HTTP POST和GET请求处理多个客户端连接,并可选地支持多服务器消息的服务器发送事件(SSE)流式传输。它取代了SSE传输。启用可流媒体协议,设定spring.ai.mcp.server.protocol=STREAMABLE.spring-doc.cadn.net.cn

  • 无状态——无状态MCP服务器设计用于简化部署,即请求间不保持会话状态。 它们非常适合微服务架构和云原生部署。以实现无 国籍协议,设定spring.ai.mcp.server.protocol=STATELESS.spring-doc.cadn.net.cn

同步/异步服务器API选项

MCP 服务器 API 支持命令式(即同步)和响应式(例如异步)编程模型。spring-doc.cadn.net.cn

  • 同步服务器——默认服务器类型,采用以下方式实现McpSyncServer. 它旨在实现应用程序中的直接请求-响应模式。 要启用这种服务器类型,设spring.ai.mcp.server.type=SYNC在你的配置中。 激活后,它会自动处理同步工具规格的配置。spring-doc.cadn.net.cn

注意:SYNC服务器只会注册同步MCP注释的方法。异步方法将被忽略。spring-doc.cadn.net.cn

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

注意:非同步服务器只会注册异步MCP注释方法。同步方法将被忽略。spring-doc.cadn.net.cn

MCP 服务器注释

MCP 服务器启动Starters为基于注释的服务器开发提供了全面支持,允许您使用声明式 Java 注释创建 MCP 服务器,而无需手动配置。spring-doc.cadn.net.cn

关键注释

特殊参数

注释系统支持特殊参数类型,提供额外的上下文:spring-doc.cadn.net.cn

简单示例

@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 自动配置,带注释的豆子会自动检测并注册:spring-doc.cadn.net.cn

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

自动配置将:spring-doc.cadn.net.cn

  1. 扫描带有MCP注释的豆子spring-doc.cadn.net.cn

  2. 制定合适的规范spring-doc.cadn.net.cn

  3. 向MCP服务器注册spring-doc.cadn.net.cn

  4. 根据配置处理同步和异步实现spring-doc.cadn.net.cn

配置属性

配置服务器注释扫描器:spring-doc.cadn.net.cn

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

附加资源

应用示例