fix: add missing MCP protocol handlers to prevent Claude Desktop crashes

- Add ListResourcesRequestSchema and ListPromptsRequestSchema imports
- Implement required resources and prompts capabilities in server setup
- Add empty handlers for list_resources and list_prompts requests
- Fixes Claude Desktop Electron crash on startup when MCP server lacks
  required protocol handlers

Resolves issue where Claude Desktop would crash with 'dialog module can
only be used after app is ready' error when connecting to MCP servers
that don't implement the full MCP protocol specification.
This commit is contained in:
Stuart Fenton
2025-07-23 23:28:35 +01:00
parent 78e5c16a87
commit e05c25b603
@@ -6,6 +6,8 @@ import {
CallToolRequestSchema,
CallToolResult,
ListToolsRequestSchema,
ListResourcesRequestSchema,
ListPromptsRequestSchema,
} from '@modelcontextprotocol/sdk/types.js';
import { TOOL_SCHEMAS } from 'chrome-mcp-shared';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
@@ -40,6 +42,8 @@ export const getStdioMcpServer = () => {
{
capabilities: {
tools: {},
resources: {},
prompts: {},
},
},
);
@@ -77,6 +81,12 @@ export const setupTools = (server: Server) => {
server.setRequestHandler(CallToolRequestSchema, async (request) =>
handleToolCall(request.params.name, request.params.arguments || {}),
);
// List resources handler - REQUIRED BY MCP PROTOCOL
server.setRequestHandler(ListResourcesRequestSchema, async () => ({ resources: [] }));
// List prompts handler - REQUIRED BY MCP PROTOCOL
server.setRequestHandler(ListPromptsRequestSchema, async () => ({ prompts: [] }));
};
const handleToolCall = async (name: string, args: any): Promise<CallToolResult> => {