Nodeflare
Deploy, manage, and scale MCP servers with one click. Automatic stdioβSSE conversion.
Ask AI about Nodeflare
Powered by Claude Β· Grounded in docs
I know everything about Nodeflare. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Nodeflare
Deploy, manage, and scale MCP servers β Vercel for MCP.
π Try it now β nodeflare.tech
What is Nodeflare?
Nodeflare is an MCP (Model Context Protocol) hosting platform that lets you deploy any MCP server with just a GitHub URL. It automatically converts stdio-based MCP servers to SSE format, making them accessible from browser-based AI assistants like Claude.
Key Features:
- π One-click deployment β Just paste a GitHub URL
- π Automatic stdioβSSE conversion β Works with any MCP server
- π Built-in authentication β API keys, OAuth 2.0, scoped permissions
- π Access logging β Full audit trail for enterprise compliance
- π Global edge deployment β Powered by Fly.io
Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Nodeflare β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββββββ β
β β Next.js β β API Server β β Proxy Gateway β β
β β Frontend ββββ (Axum) ββββ (Rate Limit, Auth) β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββββββ β
β β β β β
β β β β β
β ββββββββ΄βββββββββββββββββ΄βββββββββββββββββββββββ΄βββββββββββ β
β β PostgreSQL + Redis β β
β β (Neon + Upstash) β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β ββββββββ΄βββββββ β
β β Builder βββββββββββββββββββββββββββββββββββββββββββββββββ€
β β Worker β Build & Deploy β
β βββββββββββββββ β
β β β
β ββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Fly.io Machines (Container Runtime) β β
β β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β β
β β β MCP Srv β β MCP Srv β β MCP Srv β β MCP Srv β β β
β β βββββββββββ βββββββββββ βββββββββββ βββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Tech Stack
- Backend: Rust (Axum, SQLx, Tokio)
- Frontend: Next.js 15, TypeScript, Tailwind CSS
- Database: Neon (Serverless PostgreSQL)
- Cache/Queue: Upstash (Serverless Redis)
- Container Runtime: Fly.io Machines
- Billing: Stripe
Project Structure
nodeflare/
βββ crates/
β βββ api/ # Main API server (Axum)
β βββ auth/ # JWT, OAuth, API keys, encryption
β βββ billing/ # Stripe billing
β βββ builder/ # Build worker (Docker, Fly.io)
β βββ common/ # Shared types, config, errors
β βββ container/ # Container runtime abstraction
β βββ db/ # Database models & repositories
β βββ email/ # Email sending (Resend)
β βββ github/ # GitHub App integration
β βββ mcp-runtime/ # MCP protocol types
β βββ proxy/ # MCP Proxy gateway
β βββ queue/ # Job definitions
βββ apps/
β βββ web/ # Next.js frontend
βββ migrations/ # Database migrations
βββ docker/ # Dockerfiles
Getting Started
Prerequisites
- Rust 1.75+
- Node.js 20+
- Docker & Docker Compose
Local Development
- Clone and setup
git clone https://github.com/nodeflare-dev/nodeflare.git
cd nodeflare
cp .env.example .env
- Setup Neon (PostgreSQL)
- Create an account at neon.tech
- Create a new project
- Copy the connection string to
.env:DATABASE_URL=postgresql://user:pass@ep-xxx.region.aws.neon.tech/dbname?sslmode=require
- Setup Upstash (Redis)
- Create an account at upstash.com
- Create a new Redis database
- Copy the connection string to
.env:REDIS_URL=rediss://default:xxx@xxx.upstash.io:6379
- Configure environment variables
Set GitHub OAuth, Fly.io, and encryption keys in .env (see Configuration section below)
- Run database migrations
cargo install sqlx-cli
sqlx migrate run
- Start backend services
# Terminal 1: API server
cargo run --bin mcp-api
# Terminal 2: Proxy gateway
cargo run --bin mcp-proxy
# Terminal 3: Builder worker
cargo run --bin mcp-builder
- Start frontend
cd apps/web
npm install
npm run dev
- Open in browser
Navigate to http://localhost:3000
Configuration
Required
| Variable | Description |
|---|---|
DATABASE_URL | PostgreSQL connection string |
REDIS_URL | Redis connection string |
JWT_SECRET | JWT signing secret (64+ bytes) |
ENCRYPTION_KEY | AES-256 key for secrets (32 bytes, base64) |
GITHUB_CLIENT_ID | GitHub OAuth App client ID |
GITHUB_CLIENT_SECRET | GitHub OAuth App client secret |
GITHUB_APP_ID | GitHub App ID for repo access |
GITHUB_APP_PRIVATE_KEY | GitHub App private key (PEM) |
FLY_API_TOKEN | Fly.io API token for deployments |
Stripe (Billing)
| Variable | Description |
|---|---|
STRIPE_SECRET_KEY | Stripe API secret key |
STRIPE_WEBHOOK_SECRET | Stripe webhook secret |
APP_URL | App URL for Stripe redirects |
Email (Resend)
| Variable | Description |
|---|---|
RESEND_API_KEY | Resend API key |
EMAIL_FROM | Sender email address |
Generate Keys
# JWT Secret
openssl rand -base64 64
# Encryption Key
openssl rand -base64 32
Deployment
Production (Fly.io)
# API
fly deploy -c fly.api.toml
# Proxy
fly deploy -c fly.proxy.toml
# Web
fly deploy -c fly.web.toml
MCP Proxy
The proxy gateway handles MCP requests via subdomain-based routing:
POST https://{server-slug}.nodeflare.tech/mcp
Authorization: Bearer {access-token}
Example: If server slug is my-notion-mcp:
https://my-notion-mcp.nodeflare.tech/mcp
Features:
- Subdomain-based routing β Clean URLs like Vercel
- Access token / OAuth authentication
- Rate limiting (sliding window)
- Request logging
- Tool-level permissions
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT
