vortex / src /modules /mcp /index.ts
anujjoshi3105's picture
first commit
3d23b0f
import { FastifyPluginAsync } from 'fastify';
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { streamableHttp, Sessions } from "fastify-mcp";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { registerAllTools } from "./tools";
import { registerAllPrompts } from "./prompts";
import { registerAllResources } from "./resources";
function createMcpServer(): Server {
const mcp = new McpServer({
name: "vortex",
version: "1.0.0",
});
registerAllTools(mcp);
registerAllPrompts(mcp);
registerAllResources(mcp);
console.log("[MCP] Server initialized with tools, prompts and resources");
return mcp.server;
}
export const mcpPlugin: FastifyPluginAsync = async (fastify) => {
fastify.addHook('onRoute', (routeOptions) => {
if (routeOptions.url.startsWith('/mcp')) {
routeOptions.schema = {
...routeOptions.schema,
tags: ['MCP'],
};
}
});
fastify.register(streamableHttp, {
stateful: true,
mcpEndpoint: "/mcp",
sessions: new Sessions<StreamableHTTPServerTransport>(),
createServer: createMcpServer,
});
};