// Single registry for all /guides/* articles. The guides index, sitemap and // RSS feed all render from this list, so adding an article here is the only // bookkeeping step a new guide page needs besides its own directory. export interface Article { slug: string; title: string; description: string; /** Short badge shown on the index card, e.g. "Guide", "Comparison". */ tag: string; /** ISO date the article first shipped. */ datePublished: string; /** ISO date of last substantive edit. Defaults to datePublished. */ dateModified?: string; } export const ARTICLES: Article[] = [ { slug: 'create-mcp-server-without-code', title: 'How to create an MCP server without writing code (2026)', description: 'Turn a plain-language description into a hosted, OAuth-protected MCP server — no SDK, no Docker, no TypeScript. What works, what the limits are, and when you still need code.', tag: 'Guide', datePublished: '2026-07-08', }, { slug: 'claude-desktop-mcp-setup', title: 'Connect a custom MCP server to Claude Desktop (step by step)', description: 'How to add a remote MCP server to Claude Desktop: the config snippet, the OAuth flow on first use, and a troubleshooting table for 401s, missing servers and invisible tools.', tag: 'Setup', datePublished: '2026-07-08', }, { slug: 'chatgpt-mcp-connector', title: 'Add a custom MCP connector to ChatGPT (2026 guide)', description: 'How to connect a custom MCP server to ChatGPT: setup flow, the HTTPS and OAuth requirements, and the plan limits nobody mentions — write-capable connectors need a Business, Enterprise or Edu workspace.', tag: 'Setup', datePublished: '2026-07-08', }, { slug: 'rest-api-to-mcp-server', title: 'Wrap any REST API as an MCP server', description: 'How to turn a REST API into an MCP server your AI clients can use: designing the tool surface (fewer, better tools beat 1:1 endpoint mapping), handling auth headers with encrypted secrets, and respecting upstream rate limits.', tag: 'Guide', datePublished: '2026-07-08', }, { slug: 'mcp-server-hosting-pricing', title: 'MCP server hosting: pricing & options compared (2026)', description: 'What hosting a remote MCP server actually costs in 2026 — Cloudflare Workers, Smithery, Composio, MintMCP and prompt-to-server generation, compared on price, effort and lock-in.', tag: 'Comparison', datePublished: '2026-07-08', }, { slug: 'composio-alternative', title: 'Composio alternative for bespoke MCP tools', description: 'Composio gives agents 1,000+ pre-built SaaS integrations. The gap is everything not in a catalog: your internal API, your database, your workflow. Here is the generate-your-own route — and where Composio clearly wins.', tag: 'Alternative', datePublished: '2026-07-08', }, { slug: 'smithery-alternative', title: 'Smithery alternative: when you need hosting, not a directory', description: 'Smithery is the best-known MCP registry — thousands of servers, CLI install, hosting for listed servers. The gap: it assumes the server exists. Here is the route when it does not, and where Smithery clearly wins.', tag: 'Alternative', datePublished: '2026-07-08', }, { slug: 'mcp-transports-explained', title: 'MCP transports explained: stdio vs SSE vs Streamable HTTP', description: 'What each MCP transport actually is, why the spec deprecated HTTP+SSE in favor of Streamable HTTP, and which transport to pick for local tools, remote servers and serverless deployments.', tag: 'Explainer', datePublished: '2026-07-08', }, { slug: 'mcp-oauth-plain-english', title: 'OAuth 2.1 for MCP servers: PKCE, DCR and RFC 8707 in plain English', description: 'The three RFCs behind MCP authorization — PKCE, Dynamic Client Registration and Resource Indicators — explained without jargon: what each one does, the full flow step by step, and what breaks when you skip one.', tag: 'Explainer', datePublished: '2026-07-08', }, { slug: 'mcp-server-security-checklist', title: 'MCP server security checklist: secrets, isolation, auth', description: 'A practical security checklist for production MCP servers: transport auth, secret storage and injection, container isolation, least-privilege tool design, safe logging, and the prompt-injection surface of tool descriptions.', tag: 'Checklist', datePublished: '2026-07-08', }, { slug: 'mcp-server-ohne-code-erstellen', title: 'MCP Server ohne Code erstellen und hosten (2026)', description: 'Wie Sie ohne Programmierkenntnisse einen eigenen MCP Server erstellen und hosten: Tool auf Deutsch oder Englisch beschreiben, generierten TypeScript-Server mit OAuth 2.1 deployen, Install-Snippet in Claude, Cursor oder ChatGPT einfügen.', tag: 'Anleitung', datePublished: '2026-07-08', }, { slug: 'host-mcp-server-with-oauth', title: 'How to host a remote MCP server with OAuth (2026)', description: 'Streamable HTTP, OAuth 2.1, PKCE and Resource Indicators — what it actually takes to put a remote MCP server in production, and the shortcuts.', tag: 'Guide', datePublished: '2026-05-31', }, { slug: 'hosted-mcp-platforms-compared', title: 'Hosted MCP platforms compared: Cloudflare, Smithery, Composio & generating your own', description: 'The MCP hosting landscape splits into four categories. Which one fits depends on whether you have a server already, need a catalog, or need bespoke logic.', tag: 'Comparison', datePublished: '2026-05-31', }, { slug: 'mintmcp-alternative', title: 'MintMCP alternative: generate and host a custom MCP server', description: 'MintMCP wraps an existing STDIO server into a remote one. If you do not have a server yet, here is the generate-from-a-prompt route — and where MintMCP still wins.', tag: 'Alternative', datePublished: '2026-05-31', }, ]; export function articleBySlug(slug: string): Article | undefined { return ARTICLES.find((a) => a.slug === slug); } /** Articles newest-first, for the index page and the RSS feed. */ export function articlesNewestFirst(): Article[] { return [...ARTICLES].sort((a, b) => (b.dateModified ?? b.datePublished).localeCompare(a.dateModified ?? a.datePublished), ); }