概述
MCP 服务器是 Model Context Protocol (MCP) 架构中的基础组件,向客户端提供工具、资源和功能。它实现了协议的服务器端部分,负责:- 暴露客户端可以发现和执行的工具
- 使用基于 URI 的访问模式管理资源
- 提供提示模板并处理提示请求
- 支持与客户端的功能协商
- 实现服务器端协议操作
- 管理并发客户端连接
- 提供结构化日志和通知
核心
io.modelcontextprotocol.sdk:mcp
模块提供了 STDIO 和 SSE 服务器传输实现,无需外部 Web 框架。对于 Spring Framework 用户,Spring 特定的传输实现作为可选依赖 io.modelcontextprotocol.sdk:mcp-spring-webflux
和 io.modelcontextprotocol.sdk:mcp-spring-webmvc
提供。- 同步 API
- 异步 API
服务器传输提供者
MCP SDK 中的传输层负责处理客户端和服务器之间的通信。它提供了不同的实现以支持各种通信协议和模式。SDK 包括几个内置的传输提供者实现:- STDIO
- SSE (WebFlux)
- SSE (WebMvc)
- SSE (Servlet)
创建基于进程内的传输:通过标准输入/输出流提供双向 JSON-RPC 消息处理,支持非阻塞消息处理、序列化/反序列化和优雅关闭。关键功能:
- 通过 stdin/stdout 进行双向通信
- 支持基于进程的集成
- 简单设置和配置
- 轻量级实现
服务器功能
服务器可以配置各种功能:日志支持
服务器提供结构化日志功能,允许以不同严重级别向客户端发送日志消息:mcpClient.setLoggingLevel(level)
请求控制他们接收的最低日志级别。低于设置级别的消息将被过滤掉。
支持的日志级别(按严重性递增顺序):DEBUG (0), INFO (1), NOTICE (2), WARNING (3), ERROR (4), CRITICAL (5), ALERT (6), EMERGENCY (7)
工具规范
Model Context Protocol 允许服务器 暴露工具,这些工具可以被语言模型调用。Java SDK 允许实现工具规范及其处理函数。工具使 AI 模型能够执行计算、访问外部 API、查询数据库和操作文件:- 同步
- 异步
name
、description
和 parameter schema
,后跟实现工具逻辑的调用处理程序。函数的第一个参数是 McpAsyncServerExchange
,用于客户端交互,第二个参数是工具参数的映射。
资源规范
资源及其处理函数的规范。资源通过暴露数据为 AI 模型提供上下文,例如:文件内容、数据库记录、API 响应、系统信息、应用程序状态。示例资源规范:- 同步
- 异步
name
、description
和 MIME type
。处理资源读取请求的函数的第一个参数是 McpAsyncServerExchange
,服务器可以通过它与连接的客户端交互。第二个参数是 McpSchema.ReadResourceRequest
。
提示规范
作为 提示功能 的一部分,MCP 为服务器提供了一种标准化的方式来向客户端暴露提示模板。提示规范是用于 AI 模型交互的结构化模板,支持一致的消息格式化、参数替换、上下文注入、响应格式化和指令模板化。- 同步
- 异步
McpAsyncServerExchange
,用于客户端交互,第二个参数是 GetPromptRequest
实例。
从服务器使用采样
要使用 采样功能,请连接到支持采样的客户端。无需特殊的服务器配置,但在发出请求前请验证客户端的采样支持。了解 客户端采样支持。 一旦连接到兼容的客户端,服务器可以请求语言模型生成:- 同步 API
- 异步 API
CreateMessageRequest
对象允许您指定:Content
- 模型的输入文本或图像,Model Preferences
- 模型选择的提示和优先级,System Prompt
- 模型行为的指令和 Max Tokens
- 生成响应的最大长度。