mirror of
https://github.com/modelcontextprotocol/servers.git
synced 2026-04-17 23:53:24 +02:00
Add tools that demonstrate bidirectional MCP tasks where the server sends requests to the client for async execution: - trigger-sampling-request-async: Send sampling request with task params, client creates task and executes LLM call in background, server polls for completion and retrieves result - trigger-elicitation-request-async: Same pattern for user input, useful when user may take time to fill out forms Both tools: - Check client capabilities (tasks.requests.sampling/elicitation) - Accept both CreateTaskResult and direct result responses - Poll tasks/get for status updates - Fetch final result via tasks/result Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
54 lines
2.6 KiB
TypeScript
54 lines
2.6 KiB
TypeScript
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
import { registerGetAnnotatedMessageTool } from "./get-annotated-message.js";
|
|
import { registerEchoTool } from "./echo.js";
|
|
import { registerGetEnvTool } from "./get-env.js";
|
|
import { registerGetResourceLinksTool } from "./get-resource-links.js";
|
|
import { registerGetResourceReferenceTool } from "./get-resource-reference.js";
|
|
import { registerGetRootsListTool } from "./get-roots-list.js";
|
|
import { registerGetStructuredContentTool } from "./get-structured-content.js";
|
|
import { registerGetSumTool } from "./get-sum.js";
|
|
import { registerGetTinyImageTool } from "./get-tiny-image.js";
|
|
import { registerGZipFileAsResourceTool } from "./gzip-file-as-resource.js";
|
|
import { registerToggleSimulatedLoggingTool } from "./toggle-simulated-logging.js";
|
|
import { registerToggleSubscriberUpdatesTool } from "./toggle-subscriber-updates.js";
|
|
import { registerTriggerElicitationRequestTool } from "./trigger-elicitation-request.js";
|
|
import { registerTriggerLongRunningOperationTool } from "./trigger-long-running-operation.js";
|
|
import { registerTriggerSamplingRequestTool } from "./trigger-sampling-request.js";
|
|
import { registerTriggerSamplingRequestAsyncTool } from "./trigger-sampling-request-async.js";
|
|
import { registerTriggerElicitationRequestAsyncTool } from "./trigger-elicitation-request-async.js";
|
|
import { registerSimulateResearchQueryTool } from "./simulate-research-query.js";
|
|
|
|
/**
|
|
* Register the tools with the MCP server.
|
|
* @param server
|
|
*/
|
|
export const registerTools = (server: McpServer) => {
|
|
registerEchoTool(server);
|
|
registerGetAnnotatedMessageTool(server);
|
|
registerGetEnvTool(server);
|
|
registerGetResourceLinksTool(server);
|
|
registerGetResourceReferenceTool(server);
|
|
registerGetStructuredContentTool(server);
|
|
registerGetSumTool(server);
|
|
registerGetTinyImageTool(server);
|
|
registerGZipFileAsResourceTool(server);
|
|
registerToggleSimulatedLoggingTool(server);
|
|
registerToggleSubscriberUpdatesTool(server);
|
|
registerTriggerLongRunningOperationTool(server);
|
|
};
|
|
|
|
/**
|
|
* Register the tools that are conditional upon client capabilities.
|
|
* These must be registered conditionally, after initialization.
|
|
*/
|
|
export const registerConditionalTools = (server: McpServer) => {
|
|
registerGetRootsListTool(server);
|
|
registerTriggerElicitationRequestTool(server);
|
|
registerTriggerSamplingRequestTool(server);
|
|
// Task-based research tool (uses experimental tasks API)
|
|
registerSimulateResearchQueryTool(server);
|
|
// Bidirectional task tools - server sends requests that client executes as tasks
|
|
registerTriggerSamplingRequestAsyncTool(server);
|
|
registerTriggerElicitationRequestAsyncTool(server);
|
|
};
|