public interface McpServer
This class serves as the main entry point for implementing the server-side of the MCP specification. The server's responsibilities include:
Thread Safety: Both synchronous and asynchronous server implementations are thread-safe. The synchronous server processes requests sequentially, while the asynchronous server can handle concurrent requests safely through its reactive programming model.
Error Handling: The server implementations provide robust error handling through the McpError class. Errors are properly propagated to clients while maintaining the server's stability. Server implementations should use appropriate error codes and provide meaningful error messages to help diagnose issues.
The class provides factory methods to create either:
McpAsyncServer for non-blocking operations with reactive responses
McpSyncServer for blocking operations with direct responses
Example of creating a basic synchronous server:
McpServer.sync(transportProvider)
.serverInfo("my-server", "1.0.0")
.tool(new Tool("calculator", "Performs calculations", schema),
(exchange, args) -> new CallToolResult("Result: " + calculate(args)))
.build();
Example of creating a basic asynchronous server:
McpServer.async(transportProvider)
.serverInfo("my-server", "1.0.0")
.tool(new Tool("calculator", "Performs calculations", schema),
(exchange, args) -> Mono.fromSupplier(() -> calculate(args))
.map(result -> new CallToolResult("Result: " + result)))
.build();
Example with comprehensive asynchronous configuration:
McpServer.async(transportProvider)
.serverInfo("advanced-server", "2.0.0")
.capabilities(new ServerCapabilities(...))
// Register tools
.tools(
new McpServerFeatures.AsyncToolSpecification(calculatorTool,
(exchange, args) -> Mono.fromSupplier(() -> calculate(args))
.map(result -> new CallToolResult("Result: " + result))),
new McpServerFeatures.AsyncToolSpecification(weatherTool,
(exchange, args) -> Mono.fromSupplier(() -> getWeather(args))
.map(result -> new CallToolResult("Weather: " + result)))
)
// Register resources
.resources(
new McpServerFeatures.AsyncResourceSpecification(fileResource,
(exchange, req) -> Mono.fromSupplier(() -> readFile(req))
.map(ReadResourceResult::new)),
new McpServerFeatures.AsyncResourceSpecification(dbResource,
(exchange, req) -> Mono.fromSupplier(() -> queryDb(req))
.map(ReadResourceResult::new))
)
// Add resource templates
.resourceTemplates(
new ResourceTemplate("file://{path}", "Access files"),
new ResourceTemplate("db://{table}", "Access database")
)
// Register prompts
.prompts(
new McpServerFeatures.AsyncPromptSpecification(analysisPrompt,
(exchange, req) -> Mono.fromSupplier(() -> generateAnalysisPrompt(req))
.map(GetPromptResult::new)),
new McpServerFeatures.AsyncPromptRegistration(summaryPrompt,
(exchange, req) -> Mono.fromSupplier(() -> generateSummaryPrompt(req))
.map(GetPromptResult::new))
)
.build();
McpAsyncServer,
McpSyncServer,
McpServerTransportProvider| Modifier and Type | Interface and Description |
|---|---|
static class |
McpServer.AsyncSpec
Deprecated.
|
static class |
McpServer.AsyncSpecification
Asynchronous server specification.
|
static class |
McpServer.SyncSpec
Deprecated.
|
static class |
McpServer.SyncSpecification
Synchronous server specification.
|
| Modifier and Type | Method and Description |
|---|---|
static McpServer.AsyncSpecification |
async(McpServerTransportProvider transportProvider)
Starts building an asynchronous MCP server that provides non-blocking operations.
|
static McpServer.AsyncSpec |
async(ServerMcpTransport transport)
Deprecated.
This method will be removed in 0.9.0. Use
async(McpServerTransportProvider) instead. |
static McpServer.SyncSpecification |
sync(McpServerTransportProvider transportProvider)
Starts building a synchronous MCP server that provides blocking operations.
|
static McpServer.SyncSpec |
sync(ServerMcpTransport transport)
Deprecated.
This method will be removed in 0.9.0. Use
sync(McpServerTransportProvider) instead. |
static McpServer.SyncSpecification sync(McpServerTransportProvider transportProvider)
transportProvider - The transport layer implementation for MCP communication.McpServer.SyncSpecification for configuring the server.@Deprecated static McpServer.SyncSpec sync(ServerMcpTransport transport)
sync(McpServerTransportProvider) instead.transport - The transport layer implementation for MCP communicationMcpServer.SyncSpec for configuring the server.static McpServer.AsyncSpecification async(McpServerTransportProvider transportProvider)
transportProvider - The transport layer implementation for MCP communication.McpServer.AsyncSpecification for configuring the server.@Deprecated static McpServer.AsyncSpec async(ServerMcpTransport transport)
async(McpServerTransportProvider) instead.transport - The transport layer implementation for MCP communicationMcpServer.AsyncSpec for configuring the server.Copyright © 2025. All rights reserved.