@lmquang/mcp-discord-webhook
Version:
MCP server to send messages and embeds to Discord webhooks via stdio.
64 lines (62 loc) • 2.58 kB
JavaScript
// src/server-setup.ts (or directly in server.ts if it's the primary module)
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { handleDiscordSendMessage, handleDiscordSendEmbed } from './tool-handlers.js'; // Note .js
import { SendEmbedParamsSchema, SendMessageParamsSchema } from "./schema.js";
export function registerDiscordWebhookTools(server) {
// Register the discord-send-message tool
server.tool("discord-send-message", SendMessageParamsSchema.shape, async (args, extra) => {
const result = await handleDiscordSendMessage(args, extra);
return {
content: result.content.map(item => ({
...item,
type: item.type
})),
isError: result.isError
};
});
// Register the discord-send-embed tool
server.tool("discord-send-embed", SendEmbedParamsSchema.shape, async (args, extra) => {
const result = await handleDiscordSendEmbed(args, extra);
return {
content: result.content.map(item => ({
...item,
type: item.type
})),
isError: result.isError
};
});
}
// If this file is also your main server.ts for HTTP, you might have:
// import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
// import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
// import express from 'express';
export function createDiscordMcpServerInstance(name, version) {
const server = new McpServer({
name,
version,
description: "MCP server to send messages and embeds to Discord webhooks.",
});
registerDiscordWebhookTools(server);
return server;
}
/*
// Example of how server.ts might use this for an HTTP server
export async function startHttpServer() {
const app = express();
app.use(express.json());
const PORT = process.env.PORT || 3000;
app.post('/mcp', async (req, res) => {
const mcpInstance = createDiscordMcpServerInstance(
"DiscordWebhookServiceHTTP",
process.env.npm_package_version || "1.0.0"
);
const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined });
// ... connect transport and handle request ...
// Remember to clean up transport and mcpInstance on res.close() for stateless
});
app.listen(PORT, () => {
console.log(`HTTP MCP Server listening on port ${PORT}`);
});
}
*/
//# sourceMappingURL=server-setup.js.map