#!/usr/bin/env node
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
import { setupResourceHandlers } from "./resources.js";
import { setupPromptHandlers } from "./prompts.js";
import { setupToolHandlers, toolDefinitions } from "./tools.js";
async function main() {
const server = new Server(
{
name: "glif-server",
version: "0.1.0",
},
{
capabilities: {
tools: {},
resources: {},
prompts: {},
},
}
);
// Set up handlers from modular components
setupResourceHandlers(server);
setupPromptHandlers(server);
setupToolHandlers(server);
// Register tool definitions
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: toolDefinitions,
}));
server.onerror = (error) => console.error("[MCP Error]", error);
process.on("SIGINT", async () => {
await server.close();
process.exit(0);
});
const transport = new StdioServerTransport();
await server.connect(transport);
console.error("Glif MCP server running on stdio");
}
main().catch(console.error);