-
Notifications
You must be signed in to change notification settings - Fork 7
New Doc: Add remote MCP servers #712
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
+172
−1
Merged
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
5ad0855
New Doc: Add remote MCP servers
evantahler d436488
🤖 Regenerate LLMs.txt
github-actions[bot] 08b4b76
Apply suggestions from code review
evantahler 9809937
replace Figma (it fails) with Render as MCP server example; minor tweaks
byrro 944d5dc
Update app/en/guides/mcp-gateways/add-remote-servers/page.mdx
evantahler File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,156 @@ | ||
| --- | ||
| title: "Add remote MCP servers" | ||
| description: "Register a remote MCP server in Arcade and use its tools in gateways and SDKs" | ||
| --- | ||
|
|
||
| import Image from "next/image"; | ||
| import { Callout, Steps, Tabs } from "nextra/components"; | ||
| import { SignupLink } from "@/app/_components/analytics"; | ||
|
|
||
| export const REMOTE_SETUP_WIDTH = 557 / 1.5; | ||
| export const REMOTE_SETUP_HEIGHT = 773 / 1.5; | ||
|
|
||
| # Add remote MCP servers | ||
|
|
||
| Use this guide if you want to connect an existing MCP server that Arcade does not host. You will add the server to your Arcade project, expose its tools in MCP Gateways, and call those tools from Arcade SDKs. | ||
|
|
||
| <GuideOverview> | ||
| <GuideOverview.Outcomes> | ||
|
|
||
| Register a remote MCP server and use its tools in gateways and SDKs. | ||
|
|
||
| </GuideOverview.Outcomes> | ||
|
|
||
| <GuideOverview.Prerequisites> | ||
|
|
||
| - An <SignupLink linkLocation="docs:remote-mcp-servers">Arcade account</SignupLink> | ||
| - A remote MCP server URL that Arcade can reach | ||
| - Access to any auth credentials your server requires | ||
|
|
||
| </GuideOverview.Prerequisites> | ||
|
|
||
| <GuideOverview.YouWillLearn> | ||
|
|
||
| - Add a remote MCP server to an Arcade project | ||
| - Configure advanced connection settings | ||
| - Use the server tools in MCP Gateways and SDKs | ||
|
|
||
| </GuideOverview.YouWillLearn> | ||
| </GuideOverview> | ||
|
|
||
| ## Why use MCP Gateways for Remote MCP Servers | ||
|
|
||
| MCP Gateways let you manage and filter tools in one place, so your agent or team uses a curated set of tools across clients. This is especially useful for remote MCP servers, where you may not have control over the tools available. By using MCP Gateways, you can select the tools you want to use and hide the ones you don't want to use. | ||
|
|
||
| ## Add the remote server to your project | ||
|
|
||
| <Steps> | ||
|
|
||
| ### Open the MCP servers page | ||
|
|
||
| Go to the [MCP servers dashboard](https://api.arcade.dev/dashboard/servers) for your project and click **Add server**. | ||
|
|
||
| ### Enter the required fields | ||
|
|
||
| Arcade requires two fields for remote MCP servers: | ||
|
|
||
| - **ID**: A unique, human-readable identifier (for example, `render-mcp-server`) | ||
| - **URI**: The public URL for your MCP server (for example, `https://mcp.render.com/mcp`) | ||
|
|
||
| <Callout type="info"> | ||
| Use the [MCP Debugger](https://mcpdebugger.dev) to verify the remote server's | ||
| MCP compliance before adding it to Arcade. | ||
| </Callout> | ||
|
|
||
| <Image | ||
| alt={"Remote MCP server setup"} | ||
| className="max-w-full mt-4" | ||
| src={"/images/mcp-gateway/remote-mcp-server-setup.png"} | ||
| width={REMOTE_SETUP_WIDTH} | ||
| height={REMOTE_SETUP_HEIGHT} | ||
| /> | ||
|
|
||
| ### Save and confirm the connection | ||
|
|
||
| Create the server and confirm that Arcade lists the server tools in your project. If the remote MCP server requires authentication, Arcade will prompt you to complete the OAuth flow. | ||
|
|
||
| Arcade pre-loads the list of tools available to the user who configures the remote MCP server so that you can filter them by your own criteria in your MCP Gateways. Be sure to connect as an 'admin' user who has access to the broadest selection of tools in the remote server. Arcade then re-load the list of tools for every user using your agent - if a tool is not available to the agent's end-user, it will not be available via the gateway. | ||
|
|
||
| </Steps> | ||
|
|
||
| ## Configure advanced settings | ||
|
|
||
| Remote MCP servers often require more than a URL. Use **Advanced settings** to configure connection, OAuth, and header details. | ||
|
|
||
| Common settings include: | ||
|
|
||
| - **Connection settings**: Configure timeout and retry values for tool calls. | ||
| - **OAuth2 authorization (optional)**: Add client ID and client secret, and set an authorization URL if it differs from the MCP server URI. Use the provided redirect URI when configuring your OAuth app. | ||
| - **Custom headers**: Add headers such as `Authorization` or `X-API-Key` and reference secrets with `${secret:NAME}`. | ||
| - **Header secrets**: Store API tokens or passwords and reference them in headers. | ||
|
|
||
| ## Use remote tools in MCP Gateways | ||
|
|
||
| Once the server is registered, its tools show up in the Playground for this project, as well as in the MCP Gateway tool picker. | ||
|
|
||
| 1. Create or edit an MCP Gateway in the [MCP Gateways dashboard](https://app.arcade.dev/mcp-gateways). | ||
| 2. Open **Select tools** and filter by your remote server name. | ||
| 3. Choose the tools you want to expose through the gateway. | ||
|
|
||
| ## Call remote tools from Arcade SDKs | ||
|
|
||
| Remote tools behave like any other Arcade tool. Try it out in the Playground first to learn any nuances about the name and arguments. Copy the tool name from the tool picker or tool catalog, then call it with the SDK. | ||
|
|
||
| <Tabs items={["Python", "TypeScript"]}> | ||
| <Tabs.Tab> | ||
|
|
||
| ```python | ||
| from arcade import Arcade | ||
|
|
||
| client = Arcade(api_key="ARCADE_API_KEY") | ||
|
|
||
| result = client.tools.execute( | ||
| tool_name="render-mcp-server.get_key_value", | ||
| input={"keyValueId": "foo-bar"}, | ||
| user_id="user-123", | ||
| ) | ||
|
|
||
| print(result) | ||
| ``` | ||
|
|
||
| </Tabs.Tab> | ||
| <Tabs.Tab> | ||
|
|
||
| ```typescript | ||
| import { Arcade } from "@arcadeai/arcade"; | ||
|
|
||
| const client = new Arcade({ apiKey: "ARCADE_API_KEY" }); | ||
|
|
||
| const result = await client.tools.execute({ | ||
| tool_name: "render-mcp-server.get_key_value", | ||
| input: { keyValueId: "foo-bar" }, | ||
| user_id: "user-123", | ||
| }); | ||
|
|
||
| console.log(result); | ||
| ``` | ||
|
|
||
| </Tabs.Tab> | ||
| </Tabs> | ||
|
|
||
| ## Limitations and caveats | ||
|
|
||
| <Callout type="warning"> | ||
| Remote servers must be reachable from Arcade and must support the Streamable | ||
| HTTP(s) transport. If your server depends on non-HTTP MCP transports, Arcade | ||
| cannot proxy it. | ||
| </Callout> | ||
|
|
||
| - If the remote server is offline, gateway and SDK calls will fail until it is reachable again. | ||
| - MCP Gateways only expose the tools you select, not every tool on the server. | ||
| - Arcade only supports tools from remote MCP servers today. Prompts, resources, and sampling are not supported yet. | ||
|
|
||
| ## Next steps | ||
|
|
||
| - [Create an MCP Gateway](/guides/mcp-gateways/create-via-dashboard) | ||
| - [Connect to MCP clients](/get-started/mcp-clients) | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.