Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ if __name__ == "__main__":
<p><b>Beta:</b> Deploy agents yourself, or use <b>mcp-c</b> for a managed agent runtime. All apps are deployed as MCP servers.</p>
<p>
<a href="https://www.youtube.com/watch?v=0C4VY-3IVNU">Demo ↗</a> |
<a href="https://docs.mcp-agent.com/get-started/deploy-to-cloud">Cloud Quickstart ↗</a> |
<a href="https://docs.mcp-agent.com/get-started/cloud">Cloud Quickstart ↗</a> |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm shouldn't it point to QuickStart?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess, what's cloud quickstart?

Originally, it was quickstart with install, cloud quickstart, and quickstart, but quickstart covered both install and cloud deploy.

<a href="https://docs.mcp-agent.com/cloud/overview">Docs ↗</a>
</p>
</td>
Expand Down Expand Up @@ -974,7 +974,8 @@ You can use mcp-agent applications in a standalone fashion (i.e. they aren't par

### How do I deploy to Cloud?

Run `uvx mcp-agent deploy <app-name>` after logging in with `uvx mcp-agent login`. The CLI packages your project, provisions secrets, and exposes an MCP endpoint backed by a durable Temporal runtime. See the [Cloud quickstart](https://docs.mcp-agent.com/get-started/deploy-to-cloud) for step-by-step screenshots and CLI output.
Run `uvx mcp-agent deploy <app-name>` after logging in with `uvx mcp-agent login`. The CLI packages your project, provisions secrets, and exposes an MCP endpoint backed by a durable Temporal runtime. See the [Cloud quickstart](https://docs.mcp-agent.com/get-started/
cloud) for step-by-step screenshots and CLI output.
Comment on lines +977 to +978
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The URL for the Cloud quickstart documentation is split across two lines, which will break the link when rendered. The markdown link should be on a single line to function properly:

See the [Cloud quickstart](https://docs.mcp-agent.com/get-started/cloud) for step-by-step screenshots and CLI output.
Suggested change
Run `uvx mcp-agent deploy <app-name>` after logging in with `uvx mcp-agent login`. The CLI packages your project, provisions secrets, and exposes an MCP endpoint backed by a durable Temporal runtime. See the [Cloud quickstart](https://docs.mcp-agent.com/get-started/
cloud) for step-by-step screenshots and CLI output.
Run `uvx mcp-agent deploy <app-name>` after logging in with `uvx mcp-agent login`. The CLI packages your project, provisions secrets, and exposes an MCP endpoint backed by a durable Temporal runtime. See the [Cloud quickstart](https://docs.mcp-agent.com/get-started/cloud) for step-by-step screenshots and CLI output.

Spotted by Graphite Agent

Fix in Graphite


Is this helpful? React 👍 or 👎 to let us know.

Comment on lines +977 to +978
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Wrap the bare URL in proper markdown link format.

The URL spanning lines 977–978 should be wrapped in markdown link syntax. A bare URL violates the markdown linting rules (MD034).

Apply this diff to fix the bare URL formatting:

- See the [Cloud quickstart](https://docs.mcp-agent.com/get-started/
-   cloud) for step-by-step screenshots and CLI output.
+ See the [Cloud quickstart](https://docs.mcp-agent.com/get-started/cloud) for step-by-step screenshots and CLI output.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Run `uvx mcp-agent deploy <app-name>` after logging in with `uvx mcp-agent login`. The CLI packages your project, provisions secrets, and exposes an MCP endpoint backed by a durable Temporal runtime. See the [Cloud quickstart](https://docs.mcp-agent.com/get-started/
cloud) for step-by-step screenshots and CLI output.
Run `uvx mcp-agent deploy <app-name>` after logging in with `uvx mcp-agent login`. The CLI packages your project, provisions secrets, and exposes an MCP endpoint backed by a durable Temporal runtime. See the [Cloud quickstart](https://docs.mcp-agent.com/get-started/cloud) for step-by-step screenshots and CLI output.
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

977-977: Bare URL used

(MD034, no-bare-urls)

🤖 Prompt for AI Agents
In README.md around lines 977 to 978 the bare URL split across lines should be
converted into a proper Markdown link; replace the broken bare URL text with a
single inline link using [Cloud
quickstart](https://docs.mcp-agent.com/get-started/cloud) so the link is not
split across lines and conforms to MD034 linting rules.


### Where is the API reference?

Expand Down
2 changes: 1 addition & 1 deletion docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
"get-started/welcome",
"get-started/quickstart",
"get-started/install",
"get-started/deploy-to-cloud"
"get-started/cloud"
]
},
{
Expand Down
114 changes: 66 additions & 48 deletions docs/get-started/deploy-to-cloud.mdx → docs/get-started/cloud.mdx
Original file line number Diff line number Diff line change
@@ -1,40 +1,38 @@
---
title: Deploy to Cloud
sidebarTitle: "Deploy to Cloud"
description: "Publish your agent to the Cloud with the CLI."
title: "MCP-Cloud (mcp-c)"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe title should be Cloud Deployment (mcpc)?

sidebarTitle: "Cloud"
description: "Deploy and host your mcp-agents and apps on the cloud."
icon: cloud
---

<Info>
`mcp-c` is in open beta, and free to use. Share feedback via [GitHub issues](https://github.com/lastmile-ai/mcp-agent/issues) or [Discord](https://lmai.link/discord/mcp-agent).
</Info>

## What is mcp-c?
## What is MCP-Cloud?

Before diving into the workflow, here is the 30‑second summary. See the dedicated pages under [Deployment](/cloud/overview) for full detail:
MCP-Cloud (mcp-c) is a fully managed cloud platform for hosting mcp-agents, apps, and mcp servers.

- **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://<app_id>.deployments.mcp-agent.com` ([Cloud overview](/cloud/mcp-agent-cloud/overview)).
<iframe
src="https://www.youtube.com/embed/0C4VY-3IVNU"
title="mcp-agent cloud overview"
width="100%"
height="420"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
/>

### 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](/cloud/mcp-agent-cloud/overview)).
- **Temporal-backed execution** – long-running tools and workflows run on Temporal with retries, pause/resume, and human input support ([Long-running tools](/cloud/mcp-agent-cloud/long-running-tools)).
- **Managed secrets & authentication** – classify secrets during deploy, collect user secrets later, and choose bearer or unauthenticated access today (OAuth coming soon) ([Manage secrets](/cloud/mcp-agent-cloud/manage-secrets) and [Deployment auth](/cloud/authentication/deployment-auth)).
- **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](/cloud/mcp-agent-cloud/manage-secrets) and [Deployment auth](/cloud/authentication/deployment-auth)).
- **Observability built in** – stream logs, forward traces, and inspect workflow history directly from the CLI ([Observability](/cloud/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](/cloud/mcp-agent-cloud/use-deployed-server)).

With that context, the steps below show exactly how to deploy.

## TL;DR – three commands

```bash
uvx mcp-agent login
uvx mcp-agent deploy my-agent
uvx mcp-agent cloud servers list
uvx mcp-agent cloud servers describe my-agent
```

1. `login` stores your API token locally.
2. `deploy` packages the current directory and uploads it.
3. `cloud servers list` shows every deployment you have access to.
4. `cloud servers describe` confirms the deployment URL and secret policy.

## 1. Authenticate

```bash
Expand All @@ -51,7 +49,7 @@ From the directory containing your `mcp_agent.config.yaml` (or pass `--config-di
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`). Use `--dry-run` to validate without uploading or `--non-interactive` for CI.
During deployment you'll classify secrets as **deployment** (stored securely) or **user** (provided later via `mcp-agent cloud configure`).

<CodeGroup>
```bash basic
Expand All @@ -61,14 +59,14 @@ directory/
└── mcp_agent.secrets.yaml
```
```bash deploy
uvx mcp-agent deploy my-agent --dry-run
uvx mcp-agent deploy my-agent
```
</CodeGroup>

After a successful deploy you'll receive an endpoint like:

```
https://<app_id>.deployments.mcp-agent.com
https://<unique_id>.deployments.mcp-agent.com
```

## 3. Connect from clients
Expand All @@ -78,13 +76,12 @@ Your cloud deployment is a standard MCP server. Use any MCP client:
<Tabs>
<Tab title="Claude Desktop">
```bash
uvx mcp-agent install https://<app_id>.deployments.mcp-agent.com \
uvx mcp-agent install https://<unique_id>.deployments.mcp-agent.com \
--client claude_desktop \
--name research-buddy \
--dry-run
--name research-buddy
```

Replace `claude_desktop` with `vscode`, `cursor`, `chatgpt` to install in those clients instead.
Replace `claude_desktop` with `vscode`, `cursor`, `chatgpt`, `claude_code` to install in those clients instead.
</Tab>

<Tab title="Python">
Expand All @@ -95,7 +92,7 @@ Your cloud deployment is a standard MCP server. Use any MCP client:
servers:
my_agent_cloud:
transport: sse
url: "https://<app_id>.deployments.mcp-agent.com/sse"
url: "https://<unique_id>.deployments.mcp-agent.com/sse"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why these changes? App id is the correct thing here. Unique id doesn't say much

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's actually not the app_id, it's another unique identifier that isn't used anywhere else.

headers:
Authorization: "Bearer ${MCP_API_KEY}"
```
Expand Down Expand Up @@ -142,39 +139,60 @@ Your cloud deployment is a standard MCP server. Use any MCP client:
</Tab>
</Tabs>

## Example: web summarizer workflow
## Example: 👋 Hello World agent

```python main.py
import asyncio
from typing import Optional

from mcp_agent.app import MCPApp
from mcp_agent.agents.agent import Agent
from mcp_agent.executor.workflow import Workflow, WorkflowResult
from mcp_agent.core.context import Context as AppContext
from mcp_agent.workflows.llm.augmented_llm_openai import OpenAIAugmentedLLM

app = MCPApp(name="web_summarizer")

@app.workflow
class WebSummarizerWorkflow(Workflow[str]):
@app.workflow_run
async def run(self, url: str) -> WorkflowResult[str]:
agent = Agent(
name="summarizer",
instruction="Fetch and summarize web content concisely.",
server_names=["fetch"],
# 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)


async with agent:
llm = await agent.attach_llm(OpenAIAugmentedLLM)
summary = await llm.generate_str(
f"Fetch {url} and provide a 3-sentence summary"
)
return WorkflowResult(value=summary)
if __name__ == "__main__":
asyncio.run(main())
```

Deploy with:

```bash
uvx mcp-agent deploy web-summarizer
uvx mcp-agent deploy hello-world
```

## Learn more
Expand Down
2 changes: 1 addition & 1 deletion docs/get-started/install.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -130,5 +130,5 @@ mcp-agent includes optional extras for different LLM providers. Install the ones
## Next steps

- [Quickstart](/get-started/quickstart) – create a finder agent and run it locally.
- [Deploy to Cloud](/get-started/deploy-to-cloud) – publish your agent with `uvx mcp-agent deploy`.
- [Deploy to Cloud](/get-started/cloud) – publish your agent with `uvx mcp-agent deploy`.
- [MCP Servers](/mcp-agent-sdk/mcp/overview) – learn how FastMCP and other servers plug into your agents.
19 changes: 13 additions & 6 deletions docs/get-started/quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,18 @@ Let's get you set up with a hello world mcp-agent!
```bash
uvx mcp-agent init
uv init
uv add mcp-agent
uv add "mcp-agent[openai]"
uv sync
```
(Prefer pip? `python -m venv .venv && pip install mcp-agent` works too.)
</Step>
<Step title="Add your model provider key">
In the `mcp_agent.secrets.yaml` in your project directory, add your OpenAI or other model provider key.
```yaml mcp_agent.secrets.yaml
openai:
api_key: "your-openai-api-key"
```
</Step>
</Steps>
</Tab>
<Tab title="Do it manually">
Expand All @@ -42,7 +49,7 @@ Let's get you set up with a hello world mcp-agent!
<Step title="Install dependencies with uv">
```bash
uv init
uv add mcp-agent
uv add "mcp-agent[openai]"
uv sync
```

Expand All @@ -51,7 +58,7 @@ Let's get you set up with a hello world mcp-agent!

<Step title="Add configuration files">
`mcp_agent.config.yaml`
```yaml
```yaml mcp_agent.config.yaml
execution_engine: asyncio
logger:
transports: [console]
Expand All @@ -71,15 +78,15 @@ Let's get you set up with a hello world mcp-agent!
```

`mcp_agent.secrets.yaml`
```yaml
```yaml mcp_agent.secrets.yaml
openai:
api_key: "your-openai-api-key"
```
</Step>

<Step title="Paste the hello world agent">
`main.py`
```python
```python main.py
import asyncio
import os
import time
Expand Down Expand Up @@ -158,4 +165,4 @@ uvx mcp-agent deploy

- Check out the generated README (if you used the CLI) for tips on extending the agent.
- Layer in more capabilities using the [Effective Patterns](/mcp-agent-sdk/effective-patterns/overview) guide.
- Ready to deploy your agent? Follow [Deploy to Cloud](/get-started/deploy-to-cloud).
- Ready to deploy your agent? Follow [Deploy to Cloud](/get-started/cloud).
2 changes: 1 addition & 1 deletion docs/get-started/welcome.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ if __name__ == "__main__":
<Card
title="Deploy to the cloud"
icon="cloud"
href="/get-started/deploy-to-cloud"
href="/get-started/cloud"
>
Use `uvx mcp-agent deploy` to host your agent as a managed MCP server.
</Card>
Expand Down
Loading