Skip to main content
Glama

Ghost MCP Server

server.ts3 kB
#!/usr/bin/env node import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { ghostApiClient } from './ghostApi'; // Import the initialized Ghost API client import { handleUserResource, handleMemberResource, handleTierResource, handleOfferResource, handleNewsletterResource, handlePostResource, handleBlogInfoResource } from './resources'; // Import resource handlers // Create an MCP server instance const server = new McpServer({ name: "ghost-mcp-ts", version: "1.0.0", // TODO: Get version from package.json capabilities: { resources: {}, // Capabilities will be enabled as handlers are registered tools: {}, prompts: {}, logging: {} // Enable logging capability } }); // Register resource handlers server.resource("user", new ResourceTemplate("user://{user_id}", { list: undefined }), handleUserResource); server.resource("member", new ResourceTemplate("member://{member_id}", { list: undefined }), handleMemberResource); server.resource("tier", new ResourceTemplate("tier://{tier_id}", { list: undefined }), handleTierResource); server.resource("offer", new ResourceTemplate("offer://{offer_id}", { list: undefined }), handleOfferResource); server.resource("newsletter", new ResourceTemplate("newsletter://{newsletter_id}", { list: undefined }), handleNewsletterResource); server.resource("post", new ResourceTemplate("post://{post_id}", { list: undefined }), handlePostResource); server.resource("blog-info", "blog://info", handleBlogInfoResource); // Register tools import { registerPostTools } from "./tools/posts"; import { registerMemberTools } from "./tools/members"; registerPostTools(server); registerMemberTools(server); import { registerUserTools } from "./tools/users"; registerUserTools(server); import { registerTagTools } from "./tools/tags"; registerTagTools(server); import { registerTierTools } from "./tools/tiers"; registerTierTools(server); import { registerOfferTools } from "./tools/offers"; registerOfferTools(server); import { registerNewsletterTools } from "./tools/newsletters"; registerNewsletterTools(server); import { registerInviteTools } from "./tools/invites"; registerInviteTools(server); import { registerRoleTools } from "./tools/roles"; registerRoleTools(server); import { registerWebhookTools } from "./tools/webhooks"; registerWebhookTools(server); import { registerPrompts } from "./prompts"; registerPrompts(server); // Set up and connect to the standard I/O transport async function startServer() { const transport = new StdioServerTransport(); await server.connect(transport); console.error("Ghost MCP TypeScript Server running on stdio"); // Log to stderr } // Start the server startServer().catch((error: any) => { // Add type annotation for error console.error("Fatal error starting server:", error); process.exit(1); });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MFYDev/ghost-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server