Payload CMS MCP Server

MIT License
5
  • Linux
  • Apple
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Payload CMS MCP SERVER</title> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Poppins:wght@400;500;600;700&display=swap" rel="stylesheet"> <style> :root { --primary-color: #111827; --secondary-color: #4F46E5; --accent-color: #6366F1; --text-color: #374151; --light-text: #F9FAFB; --background-color: #ffffff; --section-bg: #F3F4F6; --card-bg: #ffffff; --border-radius: 10px; --box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); --transition: all 0.3s ease; --gradient: linear-gradient(135deg, #3B82F6 0%, #8B5CF6 100%); --matmax-gradient: linear-gradient(135deg, #3B82F6 0%, #10B981 100%); } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; } body { background-color: var(--background-color); color: var(--text-color); line-height: 1.6; } header { background: var(--gradient); color: var(--light-text); padding: 1.2rem 0; position: sticky; top: 0; z-index: 100; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); } .container { width: 90%; max-width: 1200px; margin: 0 auto; padding: 0 20px; } nav { display: flex; justify-content: space-between; align-items: center; } .logo { font-size: 1.5rem; font-weight: 700; display: flex; align-items: center; gap: 12px; font-family: 'Poppins', sans-serif; } .logo img { height: 40px; border-radius: 8px; } .nav-links { display: flex; gap: 2.5rem; } .nav-links a { color: var(--light-text); text-decoration: none; font-weight: 500; transition: var(--transition); position: relative; padding: 0.5rem 0; } .nav-links a::after { content: ''; position: absolute; bottom: 0; left: 0; width: 0; height: 2px; background-color: var(--light-text); transition: var(--transition); } .nav-links a:hover::after { width: 100%; } .hero { background: var(--gradient); color: var(--light-text); padding: 6rem 0; text-align: center; position: relative; overflow: hidden; } .hero::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: url('data:image/svg+xml;charset=utf8,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 320"%3E%3Cpath fill="%23ffffff" fill-opacity="0.05" d="M0,96L48,112C96,128,192,160,288,186.7C384,213,480,235,576,213.3C672,192,768,128,864,128C960,128,1056,192,1152,208C1248,224,1344,192,1392,176L1440,160L1440,320L1392,320C1344,320,1248,320,1152,320C1056,320,960,320,864,320C768,320,672,320,576,320C480,320,384,320,288,320C192,320,96,320,48,320L0,320Z"%3E%3C/path%3E%3C/svg%3E'); background-size: cover; background-position: center; opacity: 0.1; } .hero h1 { font-size: 3.5rem; margin-bottom: 1.5rem; font-weight: 700; font-family: 'Poppins', sans-serif; text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .hero p { font-size: 1.25rem; max-width: 800px; margin: 0 auto 2.5rem; opacity: 0.9; } .btn { display: inline-block; background-color: var(--light-text); color: var(--secondary-color); padding: 0.9rem 1.8rem; border-radius: 50px; text-decoration: none; font-weight: 600; transition: var(--transition); margin: 0 0.5rem 1rem; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); cursor: pointer; border: 2px solid var(--light-text); position: relative; z-index: 10; } .btn:hover { transform: translateY(-3px); box-shadow: 0 7px 14px rgba(0, 0, 0, 0.1); } .btn:active { transform: translateY(-1px); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.1); } .btn-outline { background-color: transparent; border: 2px solid var(--light-text); color: var(--light-text); } .btn-outline:hover { background-color: var(--light-text); color: var(--secondary-color); } section { padding: 5rem 0; } section h2 { text-align: center; margin-bottom: 3.5rem; font-size: 2.5rem; font-weight: 700; color: var(--primary-color); font-family: 'Poppins', sans-serif; position: relative; padding-bottom: 1rem; } section h2::after { content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 80px; height: 4px; background: var(--gradient); border-radius: 2px; } .features { background-color: var(--section-bg); position: relative; } .features-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2.5rem; } .feature-card { background-color: var(--card-bg); padding: 2.5rem; border-radius: var(--border-radius); box-shadow: var(--box-shadow); transition: var(--transition); position: relative; overflow: hidden; z-index: 1; } .feature-card::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 5px; background: var(--gradient); z-index: -1; } .feature-card:hover { transform: translateY(-10px); box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); } .feature-icon { font-size: 2.5rem; margin-bottom: 1.5rem; display: inline-block; background: var(--gradient); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; } .feature-card h3 { margin-bottom: 1rem; font-size: 1.5rem; font-weight: 600; color: var(--primary-color); font-family: 'Poppins', sans-serif; } .tools { background-color: var(--background-color); } .tools-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: 2.5rem; } .tool-card { background-color: var(--section-bg); padding: 2.5rem; border-radius: var(--border-radius); box-shadow: var(--box-shadow); transition: var(--transition); border-left: 4px solid var(--secondary-color); } .tool-card:hover { transform: translateY(-5px); box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); } .tool-card h3 { margin-bottom: 1.2rem; display: flex; align-items: center; gap: 0.8rem; font-size: 1.4rem; font-weight: 600; color: var(--primary-color); font-family: 'Poppins', sans-serif; } .tool-card p { margin-bottom: 1.2rem; color: var(--text-color); } .tool-card ul { padding-left: 1.5rem; } .tool-card li { margin-bottom: 0.5rem; } .tool-card code { display: inline-block; background-color: var(--primary-color); color: var(--light-text); padding: 0.3rem 0.6rem; border-radius: 4px; font-family: monospace; font-size: 0.9rem; } .setup { background-color: var(--section-bg); position: relative; } .setup-steps { max-width: 850px; margin: 0 auto; } .step { margin-bottom: 2.5rem; padding: 2.5rem; background-color: var(--card-bg); border-radius: var(--border-radius); box-shadow: var(--box-shadow); position: relative; transition: var(--transition); } .step:hover { transform: translateY(-5px); box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); } .step h3 { margin-bottom: 1.2rem; display: flex; align-items: center; gap: 0.8rem; font-size: 1.4rem; font-weight: 600; color: var(--primary-color); font-family: 'Poppins', sans-serif; } .step-number { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; background: var(--gradient); color: white; border-radius: 50%; font-weight: bold; font-size: 1.1rem; } .step code { display: block; background-color: var(--primary-color); color: var(--light-text); padding: 1.2rem; border-radius: 8px; margin: 1.2rem 0; font-family: monospace; overflow-x: auto; font-size: 0.95rem; } .step ol, .step ul { padding-left: 1.5rem; } .step li { margin-bottom: 0.8rem; } footer { background: var(--primary-color); color: var(--light-text); padding: 5rem 0 3rem; text-align: center; position: relative; } .footer-content { display: flex; flex-direction: column; align-items: center; gap: 2.5rem; } .footer-logo { font-size: 1.8rem; font-weight: 700; display: flex; flex-direction: column; align-items: center; gap: 1rem; font-family: 'Poppins', sans-serif; } .footer-logo img { height: 50px; border-radius: 8px; } .matmax-section { max-width: 800px; margin: 0 auto 2rem; padding: 2.5rem; background: rgba(255, 255, 255, 0.08); border-radius: 16px; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1); border: 1px solid rgba(255, 255, 255, 0.1); backdrop-filter: blur(4px); position: relative; overflow: hidden; } .matmax-section::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 5px; background: var(--matmax-gradient); } .matmax-section h3 { font-size: 2rem; margin-bottom: 1.5rem; font-family: 'Poppins', sans-serif; font-weight: 600; background: var(--matmax-gradient); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; display: inline-block; } .matmax-section p { margin-bottom: 1.2rem; line-height: 1.7; opacity: 0.9; font-size: 1.05rem; } .footer-links { display: flex; gap: 2.5rem; flex-wrap: wrap; justify-content: center; margin-bottom: 1.5rem; } .footer-links a { color: var(--light-text); text-decoration: none; transition: var(--transition); opacity: 0.8; } .footer-links a:hover { color: var(--accent-color); opacity: 1; } .social-links { display: flex; gap: 1.5rem; margin-bottom: 2rem; } .social-links a { color: var(--light-text); font-size: 1.8rem; transition: var(--transition); opacity: 0.8; display: flex; align-items: center; gap: 0.5rem; } .social-links a span { font-size: 1rem; } .social-links a:hover { color: var(--accent-color); opacity: 1; transform: translateY(-3px); } .copyright { opacity: 0.7; font-size: 0.95rem; } @media (max-width: 768px) { .nav-links { display: none; } .hero h1 { font-size: 2.5rem; } .features-grid, .tools-grid { grid-template-columns: 1fr; } .step { padding: 1.5rem; } } /* Add a fallback logo style */ .logo-fallback { display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; background: var(--light-text); color: var(--secondary-color); font-weight: bold; border-radius: 8px; font-size: 1.2rem; font-family: 'Poppins', sans-serif; } .footer-logo-fallback { display: flex; align-items: center; justify-content: center; width: 50px; height: 50px; background: var(--light-text); color: var(--secondary-color); font-weight: bold; border-radius: 8px; font-size: 1.5rem; font-family: 'Poppins', sans-serif; } </style> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css"> </head> <body> <header> <div class="container"> <nav> <div class="logo"> <div class="logo-fallback">PL</div> Payload CMS MCP SERVER </div> <div class="nav-links"> <a href="#features">Features</a> <a href="#tools">Tools</a> <a href="#setup">Setup</a> <a href="https://github.com/Matmax-Worldwide/payloadcmsmcp" target="_blank">GitHub</a> </div> </nav> </div> </header> <section class="hero"> <div class="container"> <h1>Payload CMS MCP Server</h1> <p>Enhance your <a href="https://payloadcms.com" target="_blank" style="color: var(--light-text); text-decoration: underline; font-weight: 600;">Payload CMS</a> development experience with natural language commands. Build, deploy, and manage your content infrastructure through conversational AI.</p> <div style="margin-top: 2rem; position: relative; z-index: 10;"> <a href="#setup" class="btn">Get Started</a> <a href="https://github.com/Matmax-Worldwide/payloadcmsmcp" class="btn btn-outline" target="_blank">View on GitHub</a> </div> </div> </section> <section class="features" id="features"> <div class="container"> <h2>Features</h2> <div class="features-grid"> <div class="feature-card"> <div class="feature-icon">βœ…</div> <h3>Payload CMS Project Management</h3> <p>Create, configure, and manage your Payload CMS projects with simple natural language commands.</p> </div> <div class="feature-card"> <div class="feature-icon">πŸš€</div> <h3>Content Modeling</h3> <p>Define collections, fields, and relationships for your Payload CMS content models through conversation.</p> </div> <div class="feature-card"> <div class="feature-icon">πŸ”„</div> <h3>Deployment Automation</h3> <p>Automate Payload CMS deployments, monitor status, and troubleshoot issues with AI assistance.</p> </div> <div class="feature-card"> <div class="feature-icon">πŸ”‘</div> <h3>Authentication & Access Control</h3> <p>Configure users, roles, and permissions for your Payload CMS projects with natural language.</p> </div> <div class="feature-card"> <div class="feature-icon">🌐</div> <h3>API & Integration Management</h3> <p>Set up and manage Payload CMS APIs, webhooks, and third-party integrations effortlessly.</p> </div> <div class="feature-card"> <div class="feature-icon">πŸ’Ύ</div> <h3>Database & Media Management</h3> <p>Configure databases, media storage, and backups for your Payload CMS projects with ease.</p> </div> </div> </div> </section> <section class="tools" id="tools"> <div class="container"> <h2>Available Tools</h2> <div class="tools-grid"> <div class="tool-card"> <h3><i class="fas fa-project-diagram"></i> Project Tools</h3> <p>Manage your Railway projects with these tools:</p> <ul> <li><code>project-list</code> - List all projects</li> <li><code>project-info</code> - Get project details</li> <li><code>project-create</code> - Create a new project</li> <li><code>project-delete</code> - Delete a project</li> <li><code>project-environments</code> - List environments</li> </ul> </div> <div class="tool-card"> <h3><i class="fas fa-server"></i> Service Tools</h3> <p>Deploy and manage services:</p> <ul> <li><code>service-list</code> - List all services</li> <li><code>service-info</code> - Get service details</li> <li><code>service-create-from-repo</code> - Create from GitHub</li> <li><code>service-create-from-image</code> - Create from Docker</li> <li><code>service-delete</code> - Delete a service</li> <li><code>service-restart</code> - Restart a service</li> </ul> </div> <div class="tool-card"> <h3><i class="fas fa-rocket"></i> Deployment Tools</h3> <p>Manage your deployments:</p> <ul> <li><code>deployment-list</code> - List deployments</li> <li><code>deployment-trigger</code> - Trigger a deployment</li> <li><code>deployment-logs</code> - View deployment logs</li> <li><code>deployment-health-check</code> - Check status</li> </ul> </div> <div class="tool-card"> <h3><i class="fas fa-key"></i> Variable Tools</h3> <p>Manage environment variables:</p> <ul> <li><code>variable-list</code> - List variables</li> <li><code>variable-set</code> - Create/update variables</li> <li><code>variable-delete</code> - Delete variables</li> <li><code>variable-bulk-set</code> - Bulk update variables</li> <li><code>variable-copy</code> - Copy between environments</li> </ul> </div> <div class="tool-card"> <h3><i class="fas fa-database"></i> Database Tools</h3> <p>Deploy and manage databases:</p> <ul> <li><code>database-list-types</code> - List available types</li> <li><code>database-deploy</code> - Deploy a new database</li> </ul> </div> <div class="tool-card"> <h3><i class="fas fa-network-wired"></i> Network Tools</h3> <p>Configure networking:</p> <ul> <li><code>domain-list</code> - List domains</li> <li><code>domain-create</code> - Create a domain</li> <li><code>tcp-proxy-list</code> - List TCP proxies</li> <li><code>tcp-proxy-create</code> - Create a TCP proxy</li> </ul> </div> </div> </div> </section> <section class="setup" id="setup"> <div class="container"> <h2>Getting Started</h2> <div class="setup-steps"> <div class="step"> <h3><span class="step-number">1</span> Prerequisites</h3> <p>Before you begin, make sure you have:</p> <ul> <li>Node.js 18+ (for built-in fetch API support)</li> <li>An active Railway account</li> <li>A Railway API token (create one at <a href="https://railway.app/account/tokens" target="_blank">https://railway.app/account/tokens</a>)</li> </ul> </div> <div class="step"> <h3><span class="step-number">2</span> Installation</h3> <p>Install the Railway MCP server globally:</p> <code>npm install -g @jasontanswe/railway-mcp</code> <p>Or use it directly with npx:</p> <code>npx -y @jasontanswe/railway-mcp YOUR_RAILWAY_API_TOKEN</code> </div> <div class="step"> <h3><span class="step-number">3</span> Configure Cursor</h3> <p>To use with Cursor IDE:</p> <ol> <li>Open Cursor Settings</li> <li>Go to MCP Servers section</li> <li>Add a new MCP server</li> <li>Name it "Railway MCP"</li> <li>Set Transport Type to "Command"</li> <li>Set Command to: <code>railway-mcp YOUR_RAILWAY_API_TOKEN</code></li> <li>Save the configuration</li> </ol> </div> <div class="step"> <h3><span class="step-number">4</span> Configure Claude for Desktop</h3> <p>To use with Claude for Desktop:</p> <ol> <li>Edit your Claude for Desktop config file: <ul> <li>macOS: <code>~/Library/Application\ Support/Claude/claude_desktop_config.json</code></li> <li>Windows: <code>%APPDATA%\Claude\claude_desktop_config.json</code></li> </ul> </li> <li>Add this configuration: <code> "mcpServers": { "railway": { "command": "npx", "args": ["-y", "@jasontanswe/railway-mcp"], "env": { "RAILWAY_API_TOKEN": "your-railway-api-token-here" } } } </code> </li> <li>Restart Claude for Desktop</li> </ol> </div> <div class="step"> <h3><span class="step-number">5</span> Start Using</h3> <p>Once configured, you can use natural language to manage your Payload CMS projects:</p> <ul> <li>"Create a new Payload CMS project with MongoDB"</li> <li>"Set up a blog collection with title, content, and author fields"</li> <li>"Configure authentication with email and password"</li> <li>"Deploy my Payload CMS project to Railway"</li> </ul> </div> </div> </div> </section> <footer> <div class="container"> <div class="footer-content"> <div class="footer-logo"> <div class="footer-logo-fallback">PL</div> <span>Payload CMS MCP SERVER</span> </div> <div class="matmax-section"> <h3>MATMAX WORLDWIDE</h3> <p>Creating technology that helps humans be more human. We believe in tech for goodβ€”tools that enhance our lives while respecting our humanity.</p> <p>Join us in building a future where technology serves wellness, connection, and purpose. Together, we can create digital experiences that bring out the best in us all.</p> <p>Our Payload CMS MCP Server bridges the gap between content management and AI, enabling developers to build powerful, flexible applications with natural language commands.</p> </div> <div class="social-links"> <a href="https://github.com/Matmax-Worldwide/payloadcmsmcp" target="_blank"> <i class="fab fa-github"></i> <span>GitHub</span> </a> <a href="https://www.linkedin.com/company/the-wellness-brand" target="_blank"> <i class="fab fa-linkedin"></i> <span>LinkedIn</span> </a> <a href="https://matmax.world" target="_blank"> <i class="fas fa-globe"></i> <span>matmax.world</span> </a> </div> <div class="footer-links"> <a href="#features">Features</a> <a href="#tools">Tools</a> <a href="#setup">Setup</a> <a href="https://github.com/Matmax-Worldwide/payloadcmsmcp" target="_blank">GitHub</a> <a href="https://railway.app" target="_blank">Railway.app</a> <a href="https://modelcontextprotocol.io" target="_blank">Model Context Protocol</a> <a href="https://payloadcms.com" target="_blank">Payload CMS</a> </div> <p class="copyright">Β© 2025 MATMAX WORLDWIDE. Made with ❀️ for humanity.</p> </div> </div> </footer> <script> // Smooth scrolling for anchor links document.querySelectorAll('a[href^="#"]').forEach(anchor => { anchor.addEventListener('click', function (e) { e.preventDefault(); const targetId = this.getAttribute('href'); const targetElement = document.querySelector(targetId); if (targetElement) { window.scrollTo({ top: targetElement.offsetTop - 80, // Offset for header behavior: 'smooth' }); } }); }); </script> </body> </html>