Server

open class Server(serverInfo: Implementation, options: ServerOptions) : Protocol(source)

An MCP server on top of a pluggable transport.

This server automatically responds to the initialization flow as initiated by the client. You can register tools, prompts, and resources using addTool, addPrompt, and addResource. The server will then automatically handle listing and retrieval requests from the client.

Parameters

serverInfo

Information about this server implementation (name, version).

options

Configuration options for the server.

Constructors

Link copied to clipboard
constructor(serverInfo: Implementation, options: ServerOptions)

Properties

Link copied to clipboard

The client's reported capabilities after initialization.

Link copied to clipboard

The client's version information after initialization.

Link copied to clipboard
var fallbackNotificationHandler: suspend (notification: JSONRPCNotification) -> Unit?
Link copied to clipboard
Link copied to clipboard
val notificationHandlers: Map<String, suspend (notification: JSONRPCNotification) -> Unit>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
fun addPrompt(prompt: Prompt, promptProvider: suspend (GetPromptRequest) -> GetPromptResult)

Registers a single prompt. The client can then retrieve the prompt.

fun addPrompt(name: String, description: String? = null, arguments: List<PromptArgument>? = null, promptProvider: suspend (GetPromptRequest) -> GetPromptResult)

Registers a single prompt by constructing a Prompt from given parameters.

Link copied to clipboard
fun addPrompts(promptsToAdd: List<RegisteredPrompt>)

Registers multiple prompts at once.

Link copied to clipboard
fun addResource(uri: String, name: String, description: String, mimeType: String = "text/html", readHandler: suspend (ReadResourceRequest) -> ReadResourceResult)

Registers a single resource. The client can then read the resource content.

Link copied to clipboard
fun addResources(resourcesToAdd: List<RegisteredResource>)

Registers multiple resources at once.

Link copied to clipboard
fun addTool(tool: Tool, handler: suspend (CallToolRequest) -> CallToolResult)
fun addTool(name: String, description: String, inputSchema: Tool.Input = Tool.Input(), title: String? = null, outputSchema: Tool.Output? = null, toolAnnotations: ToolAnnotations? = null, handler: suspend (CallToolRequest) -> CallToolResult)

Registers a single tool. The client can then call this tool.

Link copied to clipboard
fun addTools(toolsToAdd: List<RegisteredTool>)

Registers multiple tools at once.

Link copied to clipboard
open override fun assertRequestHandlerCapability(method: Method)

Asserts that the server can handle the specified request method.

Link copied to clipboard
suspend fun close()
Link copied to clipboard
open suspend fun connect(transport: Transport)
Link copied to clipboard
Link copied to clipboard

Creates a message using the server's sampling capability.

Link copied to clipboard
suspend fun listRoots(params: JsonObject = EmptyJsonObject, options: RequestOptions? = null): ListRootsResult

Lists the available "roots" from the client's perspective (if supported).

Link copied to clipboard
suspend fun notification(notification: Notification)
Link copied to clipboard
open override fun onClose()

Called when the server connection is closing.

fun onClose(block: () -> Unit)

Registers a callback to be invoked when the server connection is closing.

Link copied to clipboard
open fun onError(error: Throwable)
Link copied to clipboard
fun onInitialized(block: () -> Unit)

Registers a callback to be invoked when the server has completed initialization.

Link copied to clipboard
suspend fun ping(): EmptyRequestResult

Sends a ping request to the client to check connectivity.

Link copied to clipboard
Link copied to clipboard

Removes a single prompt by name.

Link copied to clipboard
fun removePrompts(promptNames: List<String>): Int

Removes multiple prompts at once.

Link copied to clipboard
Link copied to clipboard

Removes a single resource by URI.

Link copied to clipboard

Removes multiple resources at once.

Link copied to clipboard

Removes a single tool by name.

Link copied to clipboard
fun removeTools(toolNames: List<String>): Int

Removes multiple tools at once.

Link copied to clipboard
suspend fun <T : RequestResult> request(request: Request, options: RequestOptions?): T
Link copied to clipboard

Sends a logging message notification to the client.

Link copied to clipboard
suspend fun sendPromptListChanged()

Sends a notification to the client indicating that the list of prompts has changed.

Link copied to clipboard

Sends a notification to the client indicating that the list of resources has changed.

Link copied to clipboard

Sends a resource-updated notification to the client, indicating that a specific resource has changed.

Link copied to clipboard
suspend fun sendToolListChanged()

Sends a notification to the client indicating that the list of tools has changed.

Link copied to clipboard
fun <T : Notification> setNotificationHandler(method: Method, handler: (notification: T) -> Deferred<Unit>)
Link copied to clipboard
inline fun <T : Request> setRequestHandler(method: Method, noinline block: suspend (T, RequestHandlerExtra) -> RequestResult?)