Documentation Index
Fetch the complete documentation index at: https://docs.mcp-agent.com/llms.txt
Use this file to discover all available pages before exploring further.
What is MCP-Cloud?
MCP-Cloud (mcp-c) is a fully managed cloud platform for hosting mcp-agents, apps, and mcp servers.
Key Benefits
- One runtime for any MCP application – deploy durable
mcp-agent workflows, FastMCP servers, or ChatGPT App backends. Everything is exposed as an MCP server at https://<unique_id>.deployments.mcp-agent.com (Cloud overview).
- Temporal-backed execution – long-running tools and workflows run on Temporal with retries, pause/resume, and human input support (Long-running tools).
- Managed secrets & authentication – manage secrets for both you, as the developer, and your users. Allow users to specify their own keys, and choose bearer or unauthenticated access today (OAuth coming soon) (Manage secrets and Deployment auth).
- Observability built in – stream logs, forward traces, and inspect workflow history directly from the CLI (Observability).
- Easy client install – use
mcp-agent install or mcp-agent cloud configure to wire the deployed server into Claude Desktop, Cursor, VS Code, or ChatGPT Apps (Use a deployed server).
With that context, the steps below show exactly how to deploy.
1. Authenticate
The CLI opens the Cloud dashboard so you can generate an API token. Credentials are stored under ~/.mcp-agent/.
2. Deploy
From the directory containing your mcp_agent.config.yaml (or pass --config-dir):
uvx mcp-agent deploy my-agent
During deployment you’ll classify secrets as deployment (stored securely) or user (provided later via mcp-agent cloud configure).
directory/
├── main.py
├── mcp_agent.config.yaml
└── mcp_agent.secrets.yaml
After a successful deploy you’ll receive an endpoint like:
https://<unique_id>.deployments.mcp-agent.com
3. Connect from clients
Your cloud deployment is a standard MCP server. Use any MCP client:
uvx mcp-agent install https://<unique_id>.deployments.mcp-agent.com \
--client claude_desktop \
--name research-buddy
Replace claude_desktop with vscode, cursor, chatgpt, claude_code to install in those clients instead.
-
Add the cloud server to your config so the registry knows how to connect:
mcp:
servers:
my_agent_cloud:
transport: sse
url: "https://<unique_id>.deployments.mcp-agent.com/sse"
headers:
Authorization: "Bearer ${MCP_API_KEY}"
-
Connect via the shared registry:
import asyncio
from mcp_agent.config import get_settings
from mcp_agent.mcp.mcp_server_registry import ServerRegistry
from mcp_agent.mcp.gen_client import gen_client
async def use_agent():
registry = ServerRegistry(config=get_settings())
async with gen_client("my_agent_cloud", server_registry=registry) as client:
result = await client.call_tool("my_tool", {"param": "value"})
print(result)
asyncio.run(use_agent())
Monitor & manage
uvx mcp-agent cloud logger tail my-agent --follow
uvx mcp-agent cloud logger tail my-agent --grep "ERROR" --since 5m
uvx mcp-agent cloud servers list
uvx mcp-agent cloud servers describe my-agent
uvx mcp-agent cloud workflows list
uvx mcp-agent cloud workflows describe my-agent run_123
Example: 👋 Hello World agent
import asyncio
from typing import Optional
from mcp_agent.app import MCPApp
from mcp_agent.agents.agent import Agent
from mcp_agent.core.context import Context as AppContext
from mcp_agent.workflows.llm.augmented_llm_openai import OpenAIAugmentedLLM
# Create the MCPApp, the root of mcp-agent.
app = MCPApp(name="hello_world", description="Hello world mcp-agent application")
# Hello world agent: an Agent using MCP servers + LLM
@app.tool()
async def finder_agent(request: str, app_ctx: Optional[AppContext] = None) -> str:
"""
Run an Agent with access to MCP servers (fetch + filesystem) to handle
the input request.
"""
agent = Agent(
name="finder",
instruction=(
"""You are a helpful assistant. Use MCP servers to fetch and read
files, then answer the request concisely."""
),
server_names=["fetch", "filesystem"],
context=app_ctx,
)
async with agent:
llm = await agent.attach_llm(OpenAIAugmentedLLM)
result = await llm.generate_str(message=request)
return result
async def main():
async with app.run() as agent_app:
# Run the agent
readme_summary = await finder_agent(
request="Please summarize the README.md file in this directory.",
app_ctx=agent_app.context,
)
print(readme_summary)
if __name__ == "__main__":
asyncio.run(main())
Deploy with:
uvx mcp-agent deploy hello-world
Learn more