fix: Fix MCP protocol compatibility by adding ping and tools/call method handlers
This commit is contained in:
parent
982be7ae06
commit
73eee8a5cf
|
@ -5,7 +5,7 @@ export const toolList = [
|
||||||
inputSchema: {
|
inputSchema: {
|
||||||
type: "object",
|
type: "object",
|
||||||
properties: {
|
properties: {
|
||||||
random_string: { type: "string" }
|
token: { type: "string" }
|
||||||
},
|
},
|
||||||
required: []
|
required: []
|
||||||
}
|
}
|
||||||
|
|
100
src/transport.ts
100
src/transport.ts
|
@ -247,6 +247,106 @@ export class StreamableHttpTransport implements MCPTransport {
|
||||||
result = await deleteWebhookHandler(params, this.toolContext!);
|
result = await deleteWebhookHandler(params, this.toolContext!);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'ping':
|
||||||
|
// Add support for heartbeat ping
|
||||||
|
result = { pong: true };
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'tools/call':
|
||||||
|
// Handle new tools/call method format
|
||||||
|
const toolName = params.name;
|
||||||
|
const toolArgs = params.arguments || {};
|
||||||
|
|
||||||
|
// Call the appropriate handler based on tool name
|
||||||
|
switch (toolName) {
|
||||||
|
case 'discord_login':
|
||||||
|
result = await loginHandler(toolArgs, this.toolContext!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'discord_send':
|
||||||
|
result = await sendMessageHandler(toolArgs, this.toolContext!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'discord_get_forum_channels':
|
||||||
|
result = await getForumChannelsHandler(toolArgs, this.toolContext!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'discord_create_forum_post':
|
||||||
|
result = await createForumPostHandler(toolArgs, this.toolContext!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'discord_get_forum_post':
|
||||||
|
result = await getForumPostHandler(toolArgs, this.toolContext!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'discord_reply_to_forum':
|
||||||
|
result = await replyToForumHandler(toolArgs, this.toolContext!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'discord_delete_forum_post':
|
||||||
|
result = await deleteForumPostHandler(toolArgs, this.toolContext!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'discord_create_text_channel':
|
||||||
|
result = await createTextChannelHandler(toolArgs, this.toolContext!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'discord_delete_channel':
|
||||||
|
result = await deleteChannelHandler(toolArgs, this.toolContext!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'discord_read_messages':
|
||||||
|
result = await readMessagesHandler(toolArgs, this.toolContext!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'discord_get_server_info':
|
||||||
|
result = await getServerInfoHandler(toolArgs, this.toolContext!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'discord_add_reaction':
|
||||||
|
result = await addReactionHandler(toolArgs, this.toolContext!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'discord_add_multiple_reactions':
|
||||||
|
result = await addMultipleReactionsHandler(toolArgs, this.toolContext!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'discord_remove_reaction':
|
||||||
|
result = await removeReactionHandler(toolArgs, this.toolContext!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'discord_delete_message':
|
||||||
|
result = await deleteMessageHandler(toolArgs, this.toolContext!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'discord_create_webhook':
|
||||||
|
result = await createWebhookHandler(toolArgs, this.toolContext!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'discord_send_webhook_message':
|
||||||
|
result = await sendWebhookMessageHandler(toolArgs, this.toolContext!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'discord_edit_webhook':
|
||||||
|
result = await editWebhookHandler(toolArgs, this.toolContext!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'discord_delete_webhook':
|
||||||
|
result = await deleteWebhookHandler(toolArgs, this.toolContext!);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return res.status(400).json({
|
||||||
|
jsonrpc: '2.0',
|
||||||
|
error: {
|
||||||
|
code: -32601,
|
||||||
|
message: `Unknown tool: ${toolName}`,
|
||||||
|
},
|
||||||
|
id: req.body?.id || null,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return res.status(400).json({
|
return res.status(400).json({
|
||||||
jsonrpc: '2.0',
|
jsonrpc: '2.0',
|
||||||
|
|
Loading…
Reference in New Issue