Skip to main content
Glama
server.ts3.62 kB
#!/usr/bin/env node // Use ESM imports for MCP SDK subpaths (package exports only expose subpaths) import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js"; import { initGhostApi } from './ghostApi.js'; import { initGhostContentApi } from './ghostContentApi.js'; import { handleUserResource, handleMemberResource, handleTierResource, handleOfferResource, handleNewsletterResource, handlePostResource, handleBlogInfoResource } from './resources.js'; import { configSchema, ConfigType } from './configSchema.js'; import { registerPostTools } from "./tools/posts.js"; import { registerMemberTools } from "./tools/members.js"; import { registerUserTools } from "./tools/users.js"; import { registerTagTools } from "./tools/tags.js"; import { registerTierTools } from "./tools/tiers.js"; import { registerOfferTools } from "./tools/offers.js"; import { registerNewsletterTools } from "./tools/newsletters.js"; import { registerInviteTools } from "./tools/invites.js"; import { registerRoleTools } from "./tools/roles.js"; import { registerWebhookTools } from "./tools/webhooks.js"; import { registerPrompts } from "./prompts.js"; import { registerDebugTools } from "./tools/debug.js"; // Export the configuration schema for Smithery export { configSchema }; /** * Create and configure the MCP server with HTTP transport * This is the main entry point for Smithery */ export default function createServer({ config }: { config: ConfigType }) { // Initialize Ghost API client with Smithery-provided runtime config initGhostApi({ url: config.GHOST_API_URL, key: config.GHOST_ADMIN_API_KEY, version: config.GHOST_API_VERSION, }); initGhostContentApi({ url: config.GHOST_API_URL, key: config.GHOST_CONTENT_API_KEY, version: config.GHOST_API_VERSION, }); // Create an MCP server instance const server = new McpServer({ name: "ghost-mcp-ts", version: "0.1.0", capabilities: { resources: {}, // Capabilities will be enabled as handlers are registered tools: {}, prompts: {}, logging: {} } }); // Register resources 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", new ResourceTemplate("blog-info://{blog_id}", { list: undefined }), handleBlogInfoResource); // Register tools registerPostTools(server); registerMemberTools(server); registerUserTools(server); registerTagTools(server); registerTierTools(server); registerOfferTools(server); registerNewsletterTools(server); registerInviteTools(server); registerRoleTools(server); registerWebhookTools(server); registerPrompts(server); registerDebugTools(server); // Return the server instance for Smithery to handle // Smithery will create the HTTP transport and connect it return server.server; }

Latest Blog Posts

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/hithereiamaliff/mcp-ghostcms'

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