mcp-agent cloud is not limited to full agent workflows—you can deploy any MCP-compliant server (Python, Node, Rust, etc.) and let the platform handle hosting, auth, and observability. This is ideal for tool libraries, data access APIs, or bridge services that you want to publish without maintaining infrastructure.
Why deploy plain MCP servers?
- Standard MCP interface – Serve tools, resources, and prompts that any MCP client can consume.
- Managed runtime – Containers, TLS, load balancing, and scaling handled automatically.
- Security – Secrets vault, per-client API keys, optional unauthenticated mode for public registries.
- Observability – Consistent logging + OTEL pipeline and CLI integration (
mcp-agent cloud logger tail). - Upgrade path – When you are ready for long-running workflows, migrate the project to
MCPAppwithout changing deployment tooling.
Side-by-side capabilities
| Capability | Managed MCP server | Full mcp-agent app |
|---|---|---|
| Tools & resources | ✅ Standard MCP tools/resources | ✅ Same, plus workflow-generated tools |
| Long-running work | ⚠️ Request lifetime only | ✅ Temporal workflows with pause/resume |
| Human input | Manual implementation | ✅ Built-in request_human_input APIs |
| Retry & durability | Manual retries/logging | ✅ Automatic retries, state persistence |
| Observability | ✅ Logs + OTEL forwarding | ✅ All of the left, plus workflow history |
| Client integration | ✅ SSE/HTTP endpoints | ✅ Same endpoints |
FastMCP example
mcp_agent.config.yaml) only needs to reference the entrypoint:
mcp_agent.secrets.yaml remains optional unless your server calls external APIs.
MCPApp-only example (no workflows)
If you prefer to stay inside themcp-agent API surface (to reuse context, logging, etc.) you can create tools with decorators and skip workflow definitions.
Deploy the server
-
Authenticate (once per environment):
-
Deploy from the directory that contains
main.pyandmcp_agent.config.yaml:- Use
--config-dir path/to/serverif deploying from a monorepo. - Add
--no-authto expose a public endpoint (e.g., for ChatGPT Apps). - Use
--non-interactivein CI/CD to reuse stored secrets.
- Use
-
Describe the deployment:
Copy the
Server URLfor client integration.
Configure clients
Use eithermcp-agent install (writes files automatically) or mcp-agent configure --client (prints snippets).
<app_id> is the hostname reported by the CLI (for example, app_abc123xyz.deployments.mcp-agent.com).
For unauthenticated deployments (e.g., ChatGPT Apps), remember to deploy with --no-auth and run:
Operate and monitor
Even though these servers do not use Temporal, you still get the operational surface:mcp-agent cloud servers list– inventory of deployed servers.mcp-agent cloud logger tail utilities-server --follow– live logs.mcp-agent cloud servers delete utilities-server– tear down when finished.mcp-agent cloud configure --id <url>– collect user-specific secrets if needed.
Upgrade path to full agents
Start simple and layer on durability when required:workflows-get_status, pause/resume, etc.).
Checklist for MCP server deployments
- Entrypoint (
main.py) starts the server when executed. -
mcp_agent.config.yamlreferences the command + args. -
requirements.txtorpyproject.tomlincluded. - Secrets captured in
mcp_agent.secrets.yaml(if needed). -
.mcpacignoreexcludes large/unnecessary files. - Deployment tested locally with
uv run main.pyornpx @modelcontextprotocol/inspector. - Documentation for consumers (URL, sample tool calls, auth mode).
Resources
- Example repository:
examples/cloud/mcp - FastMCP documentation: github.com/jlowin/fastmcp
- Deployment quickstart →
- Authentication options →
