Guide

Deploy and Hosting MCP Servers Compared (2026): Vercel, Cloudflare, Railway, Cloud Run, Firebase, AWS and Netlify

Which deploy and hosting MCP server should my AI agent use, and how do I set it up safely?

For a front-end or Next.js app, Vercel's hosted MCP server covers the most ground: it can deploy, read build and runtime logs, edit environment variables and DNS records, with OAuth sign-in. For DNS and Workers on Cloudflare, use Cloudflare's API server, which reaches the whole Cloudflare API through two Code Mode tools, search and execute, plus a docs tool. Use Railway for a full-stack app with a database, Cloud Run for containers, Firebase for Firebase projects, and the AWS MCP Server only if you are already on AWS. When you need a read-only setup, the clearest options are Cloud Run's run.readonly OAuth scope and the --read-only flag on the MCP Proxy for AWS.

Compare: the best MCP servers for scraping, search, browsers, databases, hosting, monitoring, payments, auth and design →

Coding agent settings change often

Get one email a week when a setting, flag or permission rule changes, checked against the vendor docs.

Try it

  • Railway: deploy a full-stack app with its database from one project; new accounts get $20 credit

Partner links: AgentAtlas may earn a commission. It does not change what we recommend.

Quick comparison

  • Vercel: deploy, build and runtime logs, environment variables, domains and DNS records. Hosted at https://mcp.vercel.com with OAuth. Platform free tier: Hobby, $0/month, for personal, non-commercial use.
  • Cloudflare: the whole Cloudflare API (including DNS and Workers) through search and execute tools, plus a docs tool. Hosted at https://mcp.cloudflare.com/mcp with OAuth or an API token. Platform free tier: Workers Free, 100,000 requests per day.
  • Railway: list and create projects, redeploy, and a railway-agent tool for log analysis and service configuration. Hosted at mcp.railway.com, or local with railway mcp local. Auth: your railway login, or OAuth. Platform free tier: a 30-day trial with $5 in credits, then the Free plan with $1 of free credit per month.
  • Google Cloud Run: list and inspect services and deploy from an image, an archive or file contents. Hosted at https://run.googleapis.com/mcp with OAuth and IAM; there is also a local npx server that can read service logs. Platform free tier: 2 million requests a month plus CPU and memory allowances (request-based billing).
  • Firebase: firebase_deploy, App Hosting and Cloud Functions logs, and many other Firebase tools. Local only (npx firebase-tools mcp), using your Firebase CLI login. Platform free tier: the Spark plan, with Hosting at 10 GB storage and 360 MB/day transfer.
  • AWS: any AWS API your IAM credentials allow, through aws___run_script, plus AWS docs search. Hosted at regional endpoints such as https://aws-mcp.us-east-1.api.aws/mcp, with OAuth or SigV4. Platform free tier: $100 in credits for new accounts, with up to $100 more.
  • Netlify: create, manage and deploy projects, and manage environment variables and secrets. Hosted at https://netlify-mcp.netlify.app/mcp, or local with @netlify/mcp. Platform free tier: $0 forever, with a 300 credit limit per month.
  • Prices and free tiers were checked on each vendor's pricing or docs page on 2026-10-23 and change often.

Vercel MCP

Vercel MCP is a remote server with OAuth. It is available on all Vercel plans. Vercel says only reviewed and approved AI clients can connect; Claude Code, Cursor, Codex CLI, VS Code with Copilot and Windsurf are on the list. After you add it, you still need to sign in and grant access to each team you want the agent to use.

Claude Code, hosted endpoint with OAuth

claude mcp add --transport http vercel https://mcp.vercel.com
# then type /mcp inside Claude Code to sign in

Any agent (mcpServers JSON, as in Vercel's Cursor example)

{
  "mcpServers": {
    "vercel": {
      "url": "https://mcp.vercel.com"
    }
  }
}
  • Deploy: deploy_to_vercel (small projects from inline files, limit 300 files), create_deployment (from a Git source or files), cancel_deployment.
  • Logs: get_deployment_build_logs (with an errorsOnly option), get_runtime_logs and get_runtime_errors.
  • Environment variables: filter_project_envs, create_project_env, edit_project_env, get_project_env.
  • Domains and DNS: get_records, create_record, update_record, replace_domain_dns_records, get_domain_config.
  • Safety: Vercel says connecting grants the AI the same access as your Vercel user account, and recommends human confirmation in your workflows. There is no read-only switch in the setup docs; limit which teams you grant during OAuth.
  • Gotcha: get_project_env returns the decrypted value of a variable, so secrets can end up in the chat. deploy_to_vercel only takes file contents; Vercel says to prefer the Vercel CLI for local projects.

Cloudflare MCP

Cloudflare now points everyone to one server, the Cloudflare API MCP server, which it calls the only MCP server you need to work with Cloudflare. It uses Code Mode: the agent writes JavaScript that searches the API spec and then calls the API, so the whole API costs about 1,000 tokens of context. The older product servers, including Workers Bindings, Workers Builds, Observability and DNS Analytics, are marked deprecated.

Any agent (mcpServers JSON from the cloudflare/mcp README)

{
  "mcpServers": {
    "cloudflare-api": {
      "type": "http",
      "url": "https://mcp.cloudflare.com/mcp"
    }
  }
}

Claude Code, Cloudflare Skills plugin (bundles the MCP servers)

/plugin marketplace add cloudflare/skills
  • Tools: three in total. search finds endpoints in the API spec, execute calls the API with cloudflare.request(), and docs searches Cloudflare's developer docs.
  • Auth: OAuth by default, where you pick the permissions to grant. For CI, send a Cloudflare API token as a Bearer token. Account tokens need the Account Resources : Read permission. Tokens with Client IP Address Filtering are not supported.
  • Safety: there is no read-only mode in the docs. The server can make changes, so grant only the permissions you need at OAuth time, or use a scoped API token.
  • Option: add ?codemode=false to the URL for one tool per endpoint (about 2,500 tools), at about 244k tokens of context. The docs tool stays available.
  • Other hosted servers: Documentation (https://docs.mcp.cloudflare.com/mcp), Container (https://containers.mcp.cloudflare.com/mcp) and Browser Run (https://browser.mcp.cloudflare.com/mcp).

Railway MCP

Try Railway free →Partner link

Railway's server runs at mcp.railway.com. The railway mcp command connects to it over stdio and reuses your railway login, so Claude Code needs the Railway CLI (version 5.44.0 or later). Editors that support OAuth can connect to https://mcp.railway.com directly. Project tokens are not accepted.

Claude Code, through the Railway CLI

claude mcp add railway railway mcp
# or let the CLI write the config:
railway mcp install --agent claude-code
  • Remote tools: whoami, list-projects, create-project, list-services, redeploy, accept-deploy, railway-agent and feature flag tools.
  • railway-agent handles tasks like log analysis, debugging and service configuration. Railway's example prompts also pull environment variables into a .env file and assign a domain.
  • Local server: railway mcp local runs without reaching mcp.railway.com and has a different tool set, including destructive tools such as remove_service, delete_domain and remove_volume. It returns a preview before it needs confirm: true.
  • Install flags: --agent (pick one tool), --local, --oauth (direct https://mcp.railway.com endpoint) and --remote (already the default).
  • Safety: destructive actions are marked at the protocol level, so clients that respect the hints ask for confirmation. Railway lists no read-only flag and suggests limiting use to non-critical environments where possible.

Google Cloud Run MCP

Google runs a remote Cloud Run MCP server at https://run.googleapis.com/mcp. It is turned on when you enable the Cloud Run Admin API. It uses OAuth 2.0 with IAM and does not accept API keys. To add it to Claude as a custom connector you create your own OAuth client ID and secret in the Google Cloud console. There is also a local server on GitHub that runs with npx and your gcloud login.

Any agent, local server (mcpServers JSON from the GitHub README)

"mcpServers": {
  "cloud-run": {
    "command": "npx",
    "args": ["-y", "@google-cloud/cloud-run-mcp"]
  }
}

Before using the local server

gcloud auth login
gcloud auth application-default login
  • Remote tools: get_service, list_services, deploy_service_from_image, deploy_service_from_archive (up to 250 MiB) and deploy_service_from_file_contents (up to 50 MiB).
  • Local tools: deploy-file-contents, list-services, get-service and get-service-log (logs and error messages), plus deploy-local-folder, list-projects and create-project when run locally.
  • Local env vars: GOOGLE_CLOUD_PROJECT, GOOGLE_CLOUD_REGION, DEFAULT_SERVICE_NAME, SKIP_IAM_CHECK.
  • Safety: the run.readonly OAuth scope (https://www.googleapis.com/auth/run.readonly) only allows reading data; the run scope allows read and write. IAM allow and deny policies can control MCP tool use, and the remote server needs roles such as roles/mcp.toolUser and roles/run.developer.
  • Gotcha: SKIP_IAM_CHECK is true by default, which makes deployed services public. The remote server has no log tool; Google runs a separate Cloud Logging MCP server at https://logging.googleapis.com/mcp.

Firebase MCP

The Firebase MCP server is part of the Firebase CLI and runs locally over stdio. It uses the same credentials as the Firebase CLI: a logged-in user or Application Default Credentials. There is no hosted endpoint for the whole server.

Claude Code

claude mcp add firebase npx -- -y firebase-tools@latest mcp

Any agent (mcpServers JSON)

{
  "mcpServers": {
    "firebase": {
      "command": "npx",
      "args": ["-y", "firebase-tools@latest", "mcp"]
    }
  }
}
  • Deploy: firebase_deploy deploys the services in firebase.json; firebase_deploy_status checks a background deploy; firebase_init sets up services.
  • Logs: apphosting_fetch_logs (App Hosting service or build logs) and functions_get_logs (Cloud Functions logs from Cloud Logging).
  • Flags: --dir sets the folder that holds firebase.json, and --only turns on only the feature groups you list (core tools always load).
  • Safety: there is no read-only mode in the docs. Use --only to load fewer tools.
  • Gotcha: the docs list no tool for environment variables or secrets, and none for DNS.

AWS MCP Server

The AWS MCP Server is a managed remote server. It runs Python scripts with AWS API access using your AWS credentials, so it can do anything your IAM role allows: deploy, read CloudWatch logs, change config or DNS. AWS says the Agent Toolkit for AWS has no additional charge; you pay for the AWS resources it uses.

Claude Code, OAuth

claude mcp add aws-mcp https://aws-mcp.us-east-1.api.aws/mcp --transport http

Claude Code, SigV4 through the MCP Proxy for AWS

claude mcp add-json aws-mcp '{"type":"stdio","command":"uvx","args":["mcp-proxy-for-aws-cli@latest","https://aws-mcp.us-east-1.api.aws/mcp","--metadata","AWS_REGION=us-west-2"],"env":{}}'
  • Main tools: aws___run_script (Python in a sandbox with AWS API access), aws___get_tasks, aws___get_presigned_url, aws___search_documentation, aws___read_documentation, aws___retrieve_skill, aws___list_regions and aws___get_regional_availability.
  • Auth: OAuth needs the AWSMCPSignInOAuthAccessPolicy on your role. SigV4 needs AWS CLI 2.32.0 or later, aws login, and uv (the setup runs uvx mcp-proxy-for-aws-cli).
  • Region: the endpoint region picks the server; AWS_REGION in --metadata sets the default region for operations, otherwise us-east-1.
  • Safety: AWS points to SigV4 if you need read-only mode that hides write tools. The MCP Proxy for AWS has a --read-only flag (off by default) that disables tools which may need write permissions. IAM condition keys can also restrict agent actions.
  • Gotcha: use a role with narrow permissions. Multi-profile switching works only with SigV4.

Netlify MCP

Netlify documents an official MCP server on docs.netlify.com and recommends its remote endpoint, because it always has the newest capabilities. Its README says agents can create, manage and deploy Netlify projects and manage environment variables and secrets. The docs we checked do not list tool names.

Claude Code, remote (recommended)

claude mcp add --transport http netlify https://netlify-mcp.netlify.app/mcp

Claude Code, local fallback

claude mcp add netlify -- npx -y @netlify/mcp
  • Local server needs Node.js 22 or higher.
  • Auth: Claude Code can prompt you to log in, or you can run netlify login. If sign-in fails, the README says you can add a Personal Access Token as NETLIFY_PERSONAL_ACCESS_TOKEN, warns not to commit it, and says to remove it once the problem is fixed.
  • Safety: no read-only mode is documented.

Which one to pick

  • Next.js or front-end apps, and the agent should also fix DNS and env vars: Vercel.
  • DNS, Workers or anything else on Cloudflare: the Cloudflare API server with a scoped token.
  • A full-stack app with a database and little setup: Railway.
  • Containers on Google Cloud, with a read-only option: Cloud Run (remote server with the run.readonly scope).
  • A Firebase app: Firebase MCP with --only to keep the tool list short.
  • Already on AWS: the AWS MCP Server, with SigV4 and --read-only for review-only work.
  • Static sites and simple functions on a free plan: Netlify.
  • Most of these servers can change production. Turn on approval prompts in your agent, and grant the smallest set of teams, scopes or IAM permissions.
  • Details were checked against vendor docs and pricing pages on 2026-10-23.

Get coding agent settings changes by email

When a setting, flag or permission rule in this guide changes, it goes in the weekly AgentAtlas update, checked against the vendor docs. One email a week.

Sources

More guides

Other guides

How to allow Cursor to run all commands: Run Everything, allowlist and sandboxHow to allow Claude Code to run all commands: permission modes, allow rules and skip permissionsClaude Code permissions: allow, ask and deny rules, rule syntax and allowed toolsCodex CLI: approval and sandbox modesGemini CLI: YOLO mode, auto_edit and allowing specific shell commandsCursor Privacy Mode: telemetry, training and data retentionClaude Code telemetry and data retention: what is sent and how to turn it offGemini CLI: turn off usage statistics and telemetryCLAUDE.md: where it goes, how it loads, and how it works with AGENTS.mdClaude Code hooks: all events, exit codes, PreToolUse and PermissionRequest JSON, examplesClaude Code subagents: create one, limit its tools, and call itAdd MCP servers to Cursor with mcp.json: Keep files out of Cursor with .cursorignore: Configure Codex with config.toml: Configure Gemini CLI with settings.json: Add MCP servers to Claude Code (claude mcp add, .mcp.json, scopes): Claude Code custom slash commands and skills (SKILL.md): GitHub Copilot custom instructions: Adding MCP servers to GitHub Copilot: Claude Code settings.json: file locations, precedence, and key settingsClaude Code plugins and marketplaces: install, create, and shareGemini CLI extensions and custom commands: Configuring OpenCode with opencode.json: Cline Rules: workspace, global, and conditional rulesKiro steering files: .kiro/steering, inclusion modes, and AGENTS.mdZed agent: instruction files, MCP servers, tool permissions, and ACP agentsCursor CLI: install, headless mode, permissions and CIAider: CONVENTIONS.md, .aider.conf.yml and API keysJunie guidelines, MCP and the Action Allowlist: Amp AGENTS.md, settings.json and MCP: Configure Goose extensions, hints, recipes and permissions: Customize OpenHands with skills, AGENTS.md, setup.sh and MCP: Configure Factory Droid CLI: AGENTS.md, settings.json, autonomy, custom droids and MCPConfigure Qwen Code: settings.json, providers, QWEN.md, MCP and approval modesCursor hooks: hooks.json, beforeShellExecution, afterFileEdit and exit codesCursor sandbox: sandbox.json, network allowlist and run modesCursor settings: settings.json, Cursor Settings and the ~/.cursor config filesCursor browser agent: @browser, browser automation and approval modesCursor subagents: .cursor/agents, frontmatter, built-in Explore and BrowserCursor telemetry and OpenTelemetry export (Privacy Mode, OTLP, Analytics API): Cursor rules setup: project, user and Team Rules, .mdc frontmatter, globs and AGENTS.mdClaude Code headless mode: claude -p, --output-format json, --bare and CI flagsClaude Code statusline: custom status bar in settings.json with context %, cost and git branchClaude Code /model: switch models, aliasesClaude Code /cost and /usage: check token spend, usage limits and reduce costsClaude Code VS Code extension: install, shortcuts, settings and /ideCodex AGENTS.md: global, project and override instruction files explainedCodex MCP servers: codex mcp add and [mcp_servers] in config.tomlCodex sandbox modes: read-only, workspace-write, danger-full-access and network accesscodex exec: run Codex non-interactively in scripts and CI with JSON outputCodex skills: create SKILL.md, skill folder locations and $skill invocationGEMINI.md in Gemini CLI: context file locations, imports and /memoryGemini CLI MCP servers: gemini mcp add and mcpServers in settings.jsonGemini CLI custom slash commands: TOML files, {{args}}, !{shell} and @{file}Gemini CLI headless mode: gemini -p, JSON output and exit codes for scripts and CIGemini CLI sandbox: enable Docker, Podman, macOS Seatbelt or gVisorcopilot-setup-steps.yml: set up the GitHub Copilot cloudGitHub Copilot CLI permissions: --allow-tool, --deny-tool, --allow-all-tools and trusted directoriesGitHub Copilot custom agents: .github/agents/*.agent.md profiles, tools and frontmatterGitHub Copilot code review settings: automatic PR reviews, rulesets, effort level and approvalsOpenCode MCP Server Setup: Local and Remote Servers in opencode.jsonOpenCode Permissions: Allow, Ask or Deny Bash, Edit and WebfetchOpenCode Custom Agents and Subagents: Markdown Files, Modes and @ MentionsCline MCP Setup: cline_mcp_settings.json for Local and Remote ServersCline Auto Approve and YOLO Mode: Run Commands and Edits Without PromptsCline Skills: SKILL.md Location, Format and Slash Command UseAmp MCP Setup: amp mcp add, amp.mcpServers and Workspace ApprovalAmp AGENTS.md: File Locations, @ Mentions and Glob-Scoped GuidanceAmp Skills: SKILL.md Folders, amp skill add and Search OrderKiro MCP Setup: .kiro/settings/mcp.json, autoApprove and OAuthKiro Hooks: .kiro/hooks JSON, PreToolUse, PostFileSave and StopKiro Permissions: permissions.yaml Allow, Ask and Deny RulesFactory Droid MCP Setup: droid mcp add, mcp.json Locations and /mcpFactory Droid Hooks: hooks.json, PreToolUse Matchers and Exit CodesFactory Droid Custom Droids (Subagents): .factory/droids Markdown FilesJunie MCP Setup: .junie/mcp/mcp.json for CLI and /mcp CommandJunie Brave Mode and Action Allowlist: Auto-Approve Commands in Junie CLIJunie Custom Slash Commands: .junie/commands Markdown Files and Argumentsgoose .goosehints and AGENTS.md: Global and Project Instructionsgoose Permission Modes: GOOSE_MODE auto, approve, smart_approve and chatgoose Recipes: recipe.yaml Format, Parameters and goose run --recipeZed Agent Tool Permissions: Auto-Approve Terminal Commands with tool_permissionsUse Claude, Codex and Gemini CLI in Zed: External Agents and agent_serversZed with Ollama, LM Studio and llama.cpp: Local Model Setup and Context LengthMCP 2026-07-28 Migration Guide: Stateless Protocol, No Sessions, server/discover, MRTR, and SDK v2 UpgradeSubagents and Custom Agents Compared: Claude Code vs Codex vs Cursor vs Gemini CLI vs GitHub CopilotAllow all commands in any AI coding agent: Cursor, Claude Code, Codex, Gemini CLI, Copilot CLI and 7 moreSettings file locations for every AI coding agent: Claude Code, Cursor, Codex, Gemini CLI, OpenCode, Qwen Code, Amp and Factory DroidRules and instruction files in every AI coding agent: .cursor/rules, CLAUDE.md, AGENTS.md, GEMINI.md, Copilot instructions and moreGemini CLI hooks: settings.json, BeforeTool, AfterTool, exit codes and /hooksGitHub Copilot hooks: .github/hooks/*.json for Copilot CLI and the cloud agentHooks in every AI coding agent: Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, Kiro and Factory DroidAgent Skills (SKILL.md) in every AI coding agent: Claude Code, Codex, Cline, Amp and OpenHandsHow to deploy a remote MCP server (Streamable HTTP): Cloudflare Workers, Vercel, Railway and moreHeadless mode in every AI coding agent: claude -p, codex exec, gemini -p, Cursor agent -p and copilot -p for scripts and CIClaude Code sandbox: /sandbox, sandbox.enabled, allowedDomains, excludedCommands and strict modeSandbox modes in every AI coding agent: Claude Code, Cursor, Codex and Gemini CLI comparedCustom slash commands in every AI coding agent: file locations, arguments and examplesMigrate from Gemini CLI to Antigravity CLI (2026): Config, MCP, Skills, FlagsRun GitHub Copilot CLI with copilot -p in scripts and CI (2026): Agent Loops 2026: Ralph Loop, /loop, /goal and Headless Loops for AI Coding AgentsCursor skills and custom slash commands: .cursor/skills SKILL.md, .cursor/commands and /migrate-to-skillsCodex hooks: hooks.json, PreToolUse allow/deny, exit code 2 and config.toml [hooks]GitHub Copilot prompt files in VS Code: .github/prompts/*.prompt.md slash commandsOpenCode custom commands: .opencode/commands, $ARGUMENTS, shell output and subtasksQwen Code custom commands: .qwen/commands Markdown files, {{args}}, !{shell} and @{file}

Reviewed Oct 23, 2026. Settings change often; the linked vendor docs are the source of truth.