About Deploy
Deploy is an MCP server in the Cloud category: medrehab MCP Server.
The repository has 2 stars and 0 forks.
Install
claude mcp add deploy -- npx -y mcp-deploynpx -y mcp-deployThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Deploy
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
MCP Deploy
A Next.js dashboard for deploying and managing MCP (Model Context Protocol) servers on Cloudflare Workers.
Install
Requires Node.js 20+ and a Cloudflare account (free tier works).
git clone https://github.com/upascal/mcp-deploy.git
cd mcp-deploy
npm install
npm link # Makes `mcp-deploy` available as a global command
Then log in to Cloudflare and start the web interface:
mcp-deploy login # Opens browser for Cloudflare OAuth
mcp-deploy gui # Start the web UI at http://localhost:3000
Or use the CLI directly:
mcp-deploy add upascal/paper-search-mcp # Add an MCP from GitHub
mcp-deploy deploy paper-search-mcp # Deploy to Cloudflare Workers
mcp-deploy status paper-search-mcp # Check deployment health
npm package coming soon — Once published,
npm install -g mcp-deploywill replace the clone + link step.
Features
- One-Click Deployment — Deploy MCP servers to Cloudflare Workers with a single click
- Secure Secrets Management — AES-256-GCM encrypted storage for API keys and tokens
- Multiple Auth Modes — Choose between bearer tokens, OAuth, or open access
- GitHub Integration — Fetch MCP servers directly from GitHub releases
- CLI + Web Interface — Use the web dashboard or command-line tools
- No Always-On Server Required — MCPs run on Cloudflare's edge network
- Hot Secret Updates — Change API keys without redeploying
- Health Monitoring — Check deployment status and worker health
What it does
- Add MCP servers from GitHub releases
- Configure secrets (API keys, library IDs, etc.)
- Deploy to Cloudflare Workers with one click
- Choose authentication mode (bearer, OAuth, or open)
- Get connection URLs for Claude Desktop and other MCP clients
- Update secrets without redeploying
- Monitor health of deployed workers
Managed MCPs
- Paper Search MCP — Search academic papers across Semantic Scholar, CrossRef, arXiv, PubMed, bioRxiv, medRxiv
- Zotero Assistant MCP — Manage your Zotero library with 20+ tools
Quick Start
Open http://localhost:3000 after running mcp-deploy gui:
- Add an MCP -- Paste a GitHub repo URL (must have releases with
mcp-deploy.json+worker.mjs) - Configure -- Enter any required secrets (API keys, tokens)
- Deploy -- Click Deploy. You'll get back:
- MCP URL (e.g.,
https://your-mcp.yoursubdomain.workers.dev/mcp) - Bearer Token + MCP URL with Token (if you chose bearer auth)
- OAuth flow (if you chose OAuth auth)
- Open URL (if you chose open / no auth)
- MCP URL (e.g.,
Connecting to Claude Desktop
- Deploy an MCP using the web interface
- In Claude Desktop: Settings > Connectors > Add custom connector
- Paste the URL for the auth mode you chose:
- Bearer: use the MCP URL with Token (e.g.,
https://your-mcp.workers.dev/mcp/t/{token}) - OAuth: use the MCP URL (you'll be prompted to authorize with a password)
- Open: use the MCP URL (no auth)
- Bearer: use the MCP URL with Token (e.g.,
- Click Connect -- done!
OAuth mode
- OAuth runs inside each deployed MCP worker (no always-on mcp-deploy server required).
- If
OAUTH_PASSWORDis set, that value is used during authorization. - If not set, mcp-deploy will generate a password at deploy time and show it in the deploy result.
CLI Usage
All commands (after npm link during install):
mcp-deploy gui [-p PORT] # Start the web interface (default: 3000)
mcp-deploy list # List deployed MCPs
mcp-deploy add <github-repo> # Add an MCP from GitHub
mcp-deploy remove <slug> # Remove an MCP
mcp-deploy deploy <slug> # Deploy an MCP
mcp-deploy status <slug> # Check MCP status
mcp-deploy secrets:list <slug> # List configured secret keys
mcp-deploy secrets:set <slug> <key> # Set a secret (prompts for value)
mcp-deploy secrets:delete <slug> <key> # Delete a secret
mcp-deploy login # Login to Cloudflare via wrangler
Architecture
┌─────────────────────────────────────────────────────────┐
│ MCP-Deploy Dashboard (Next.js) │
│ - React frontend with Tailwind CSS │
│ - API routes for deployment orchestration │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ GitHub Releases │
│ - mcp-deploy.json (metadata) │
│ - worker.mjs (bundle) │
└─────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ Cloudflare Workers (deployed via wrangler) │
│ - Each MCP runs as a Durable Object │
│ - Secrets stored securely on Cloudflare │
└─────────────────────────────────────────────────────────┘
Build vs Deploy
Deploy time (user action via dashboard):
- Fetches
mcp-deploy.json+worker.mjsfrom a GitHub release - Uploads the worker via
npx wrangler deploy - Sets secrets (API keys, bearer token)
Deployment Flow
User clicks Deploy
↓
Load MCP from registry → Resolve GitHub release
↓
Fetch `worker.mjs` from GitHub
↓
Upload to Cloudflare via wrangler CLI
↓
Set secrets (API keys, config, bearer token)
↓
Store deployment record in local SQLite
↓
Return Claude Desktop config snippet
Tech Stack
- Frontend: Next.js 16 App Router + Tailwind CSS
- Backend: Next.js API routes
- Storage: Local SQLite for deployment records + encrypted secrets
- Deployment: Cloudflare Workers via
wranglerCLI - Security: AES-256-GCM encryption for secrets at rest
Project Structure
src/
app/ # Pages + API routes
components/ # React components
lib/
mcp-registry.ts # Registry of managed MCPs
encryption.ts # AES-256-GCM for secrets at rest
db.ts # SQLite setup + migrations
store.ts # SQLite accessors
scripts/
bundle-workers.ts # (unused) local bundling utility
Adding a New MCP
To add an MCP to mcp-deploy's registry:
-
Add to registry — In
src/lib/mcp-registry.ts:{ slug: "my-mcp", githubRepo: "owner/my-mcp", } -
Add test connection (optional) — In
src/app/api/test-connection/route.ts
For MCP authors: If you're building an MCP server and want to make it compatible with mcp-deploy, see the MCP Release Guide for instructions on setting up your GitHub releases.
External Dependencies
The worker bundles come from these repos (via GitHub releases):
| MCP | Source Repo |
|---|---|
| Paper Search | paper-search-mcp |
| Zotero Assistant | zotero-assistant-mcp |
These repos are required at deploy time for their release assets (mcp-deploy.json + worker.mjs).
Contributing
We welcome contributions! Please see CONTRIBUTING.md for:
- Development setup instructions
- How to run tests
- Project structure overview
- Coding standards
- Pull request guidelines
To report bugs or request features, open an issue on GitHub.
For security vulnerabilities, please see SECURITY.md for responsible disclosure instructions.
Roadmap
- V1: Dashboard for managing 2 existing MCPs
- Add more MCPs as they're built
- Auto-analyze arbitrary MCP repos for Cloudflare compatibility
- AI-powered secret discovery from source code + README
- MCP-deploy-MCP (an MCP that helps deploy MCPs)
- Stats on deployed MCPs
Advanced
Development
npm run dev # Start dev server with hot reload (Turbopack)
Unlinking
To remove the global mcp-deploy command:
npm unlink -g mcp-deploy
Running Tests
npx vitest run # Run all tests
npm run lint # Run linter
npm run build # Production build
License
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.