diff --git a/README.md b/README.md index 48929e319a..ac3f2686f2 100644 --- a/README.md +++ b/README.md @@ -150,6 +150,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[Markdownify](https://github.com/zcaceres/mcp-markdownify-server)** - MCP to convert almost anything to Markdown (PPTX, HTML, PDF, Youtube Transcripts and more) - **[Minima](https://github.com/dmayboroda/minima)** - MCP server for RAG on local files - **[MongoDB](https://github.com/kiliczsh/mcp-mongo-server)** - A Model Context Protocol Server for MongoDB. +- **[Monday.com](https://github.com/sakce/mcp-server-monday)** - MCP Server to interact with Monday.com boards and items. - **[MySQL](https://github.com/benborla/mcp-server-mysql)** (by benborla) - MySQL database integration in NodeJS with configurable access controls and schema inspection - **[MySQL](https://github.com/designcomputer/mysql_mcp_server)** (by DesignComputer) - MySQL database integration in Python with configurable access controls and schema inspection - **[NS Travel Information](https://github.com/r-huijts/ns-mcp-server)** - Access Dutch Railways (NS) real-time train travel information and disruptions through the official NS API. diff --git a/src/everything/README.md b/src/everything/README.md index c4255f6fd7..f80848ee2c 100644 --- a/src/everything/README.md +++ b/src/everything/README.md @@ -45,6 +45,24 @@ This MCP server attempts to exercise all the features of the MCP protocol. It is - No inputs required - Returns: JSON string of all environment variables +7. `annotatedMessage` + - Demonstrates how annotations can be used to provide metadata about content + - Inputs: + - `messageType` (enum: "error" | "success" | "debug"): Type of message to demonstrate different annotation patterns + - `includeImage` (boolean, default: false): Whether to include an example image + - Returns: Content with varying annotations: + - Error messages: High priority (1.0), visible to both user and assistant + - Success messages: Medium priority (0.7), user-focused + - Debug messages: Low priority (0.3), assistant-focused + - Optional image: Medium priority (0.5), user-focused + - Example annotations: + ```json + { + "priority": 1.0, + "audience": ["user", "assistant"] + } + ``` + ### Resources The server provides 100 test resources in two formats: diff --git a/src/everything/everything.ts b/src/everything/everything.ts index 84beb942aa..c0553693fa 100644 --- a/src/everything/everything.ts +++ b/src/everything/everything.ts @@ -60,6 +60,13 @@ const EXAMPLE_COMPLETIONS = { const GetTinyImageSchema = z.object({}); +const AnnotatedMessageSchema = z.object({ + messageType: z.enum(["error", "success", "debug"]) + .describe("Type of message to demonstrate different annotation patterns"), + includeImage: z.boolean().default(false) + .describe("Whether to include an example image") +}); + enum ToolName { ECHO = "echo", ADD = "add", @@ -67,6 +74,7 @@ enum ToolName { PRINT_ENV = "printEnv", SAMPLE_LLM = "sampleLLM", GET_TINY_IMAGE = "getTinyImage", + ANNOTATED_MESSAGE = "annotatedMessage", } enum PromptName { @@ -329,6 +337,11 @@ export const createServer = () => { description: "Returns the MCP_TINY_IMAGE", inputSchema: zodToJsonSchema(GetTinyImageSchema) as ToolInput, }, + { + name: ToolName.ANNOTATED_MESSAGE, + description: "Demonstrates how annotations can be used to provide metadata about content", + inputSchema: zodToJsonSchema(AnnotatedMessageSchema) as ToolInput, + }, ]; return { tools }; @@ -436,6 +449,57 @@ export const createServer = () => { }; } + if (name === ToolName.ANNOTATED_MESSAGE) { + const { messageType, includeImage } = AnnotatedMessageSchema.parse(args); + + const content = []; + + // Main message with different priorities/audiences based on type + if (messageType === "error") { + content.push({ + type: "text", + text: "Error: Operation failed", + annotations: { + priority: 1.0, // Errors are highest priority + audience: ["user", "assistant"] // Both need to know about errors + } + }); + } else if (messageType === "success") { + content.push({ + type: "text", + text: "Operation completed successfully", + annotations: { + priority: 0.7, // Success messages are important but not critical + audience: ["user"] // Success mainly for user consumption + } + }); + } else if (messageType === "debug") { + content.push({ + type: "text", + text: "Debug: Cache hit ratio 0.95, latency 150ms", + annotations: { + priority: 0.3, // Debug info is low priority + audience: ["assistant"] // Technical details for assistant + } + }); + } + + // Optional image with its own annotations + if (includeImage) { + content.push({ + type: "image", + data: MCP_TINY_IMAGE, + mimeType: "image/png", + annotations: { + priority: 0.5, + audience: ["user"] // Images primarily for user visualization + } + }); + } + + return { content }; + } + throw new Error(`Unknown tool: ${name}`); });