#!/usr/bin/env node
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { ElmapiClient } from "./client.js";
import { registerProjectTools } from "./tools/project.js";
import { registerCollectionTools } from "./tools/collections.js";
import { registerFieldTools } from "./tools/fields.js";
import { registerContentTools } from "./tools/content.js";
import { registerAssetTools } from "./tools/assets.js";
import { registerResources } from "./resources.js";
// ── Read configuration from environment ─────────────────────────────
const ELMAPI_API_URL = process.env.ELMAPI_API_URL;
const ELMAPI_API_KEY = process.env.ELMAPI_API_KEY;
const ELMAPI_PROJECT_ID = process.env.ELMAPI_PROJECT_ID;
if (!ELMAPI_API_URL || !ELMAPI_API_KEY || !ELMAPI_PROJECT_ID) {
console.error(
"Missing required environment variables: ELMAPI_API_URL, ELMAPI_API_KEY, ELMAPI_PROJECT_ID"
);
process.exit(1);
}
// ── Create client and server ────────────────────────────────────────
const client = new ElmapiClient(ELMAPI_API_URL, ELMAPI_API_KEY, ELMAPI_PROJECT_ID);
const server = new McpServer({
name: "elmapicms",
version: "1.0.0",
});
// ── Register resources and tools ────────────────────────────────────
registerResources(server);
registerProjectTools(server, client);
registerCollectionTools(server, client);
registerFieldTools(server, client);
registerContentTools(server, client);
registerAssetTools(server, client);
// ── Start stdio transport ───────────────────────────────────────────
const transport = new StdioServerTransport();
await server.connect(transport);