diff --git a/app/en/build/create-tools/page.mdx b/app/en/build/create-tools/page.mdx index 9a82f2468..9a51a5586 100644 --- a/app/en/build/create-tools/page.mdx +++ b/app/en/build/create-tools/page.mdx @@ -3,12 +3,19 @@ title: "Create tools" description: "Build, evaluate, secure, and improve custom MCP servers and tools with Arcade" --- -import { Cards } from "nextra/components"; +import { Callout, Cards } from "nextra/components"; # Create tools These guides are for **agent developers** who build custom MCP servers and tools with Arcade. + + These guides cover *writing* new tools. If the MCP server already exists and is + reachable over HTTP — yours, a vendor's, or a partner's — register it as a + [remote MCP server](/operate/governance/remote-mcp-servers) instead of + rebuilding its tools. + + ## Guides diff --git a/app/en/get-started/about-arcade/page.mdx b/app/en/get-started/about-arcade/page.mdx index f7764011a..4a39566cf 100644 --- a/app/en/get-started/about-arcade/page.mdx +++ b/app/en/get-started/about-arcade/page.mdx @@ -11,7 +11,7 @@ import Image from "next/image"; Arcade is the enterprise-ready actions runtime for AI agents. An agent isn't an agent if it can't take actions — and the moment an agent acts, three problems hit at once. Arcade solves all three at runtime, so teams ship production agents without rebuilding plumbing every time: - **Enforce — Agent Authorization:** Deploy agents your security team approves. Arcade handles OAuth and manages user tokens, API keys, and secrets, then enforces your existing IdP, DLP, SIEM, and compliance policies plus per-action authorization at runtime. -- **Execute — Agent-Optimized Tools:** Agents that work across every business system, with 7,500+ agent-optimized tools across 81 MCP servers, built for reliable execution at scale — not thin API wrappers. +- **Execute — Agent-Optimized Tools:** Agents that work across every business system, with 7,500+ agent-optimized tools across 81 MCP servers, built for reliable execution at scale — not thin API wrappers. Not in the catalog? [Register a remote MCP server](/operate/governance/remote-mcp-servers) you or your vendors already run, and Arcade governs its tools the same way. - **Govern — Agent Lifecycle Governance:** Scale agents across the org from a central control plane: shared registry, version control, visibility filtering, and OpenTelemetry audit logs. Configure once and use any model, framework, and client. Deploy the first agent the same way you deploy the hundredth. diff --git a/app/en/home/landing-page.tsx b/app/en/home/landing-page.tsx index a14946055..6df4e01fa 100644 --- a/app/en/home/landing-page.tsx +++ b/app/en/home/landing-page.tsx @@ -8,6 +8,7 @@ import { FileText, HelpCircle, Monitor, + Plug, Puzzle, Rocket, ServerCog, @@ -406,7 +407,7 @@ export function LandingPage() { /> -
+
+
diff --git a/app/en/operate/deploy/on-prem/page.mdx b/app/en/operate/deploy/on-prem/page.mdx index f79745380..a3e7631f4 100644 --- a/app/en/operate/deploy/on-prem/page.mdx +++ b/app/en/operate/deploy/on-prem/page.mdx @@ -254,7 +254,14 @@ Open a **separate terminal** and create a tunnel using one of these options: Once you have a public URL, register your MCP server in the Arcade dashboard to make it accessible through the Arcade API. -1. **Navigate to the MCP Servers page** in your [Arcade dashboard](https://api.arcade.dev/dashboard/servers) + + This flow uses the **Arcade** server type, for a server built with the Arcade + SDK that Arcade authenticates with a shared secret. To register a server that + speaks plain MCP over HTTP — a vendor's or a partner's — pick **Remote MCP** + instead and follow [Remote MCP servers](/operate/governance/remote-mcp-servers). + + +1. **Navigate to the MCP Servers page** in your [Arcade dashboard](https://app.arcade.dev/servers) 2. **Click "Add Server"** @@ -287,7 +294,7 @@ You can now test your MCP Server by making requests using the Playground, or an -1. **Go to the [Arcade Playground](https://api.arcade.dev/dashboard/playground/chat)** +1. **Go to the [Arcade Playground](https://app.arcade.dev/playground/chat)** 2. **Select your MCP server** from the dropdown diff --git a/app/en/operate/governance/_meta.tsx b/app/en/operate/governance/_meta.tsx index 39237a99b..7b718b851 100644 --- a/app/en/operate/governance/_meta.tsx +++ b/app/en/operate/governance/_meta.tsx @@ -7,6 +7,9 @@ export const meta: MetaRecord = { "mcp-gateways": { title: "MCP Gateways", }, + "remote-mcp-servers": { + title: "Remote MCP servers", + }, "contextual-access": { title: "Contextual Access", }, diff --git a/app/en/operate/governance/mcp-gateways/_meta.tsx b/app/en/operate/governance/mcp-gateways/_meta.tsx index 2183b7884..be0f96723 100644 --- a/app/en/operate/governance/mcp-gateways/_meta.tsx +++ b/app/en/operate/governance/mcp-gateways/_meta.tsx @@ -1,9 +1,6 @@ import type { MetaRecord } from "nextra"; export const meta: MetaRecord = { - "add-remote-servers": { - title: "Add remote MCP servers", - }, "create-via-dashboard": { title: "Create via Dashboard", }, diff --git a/app/en/operate/governance/mcp-gateways/add-remote-servers/page.mdx b/app/en/operate/governance/mcp-gateways/add-remote-servers/page.mdx deleted file mode 100644 index 8ccb03f6e..000000000 --- a/app/en/operate/governance/mcp-gateways/add-remote-servers/page.mdx +++ /dev/null @@ -1,165 +0,0 @@ ---- -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. - - - - -Register a remote MCP server and use its tools in gateways and SDKs. - - - - - -- An Arcade account -- A remote MCP server URL that Arcade can reach -- Access to any auth credentials your server requires - - - - - -- Add a remote MCP server to an Arcade project -- Configure advanced connection settings -- Use the server tools in MCP Gateways and SDKs - - - - -## 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 - - - -### 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`) - - - Use the [MCP Debugger](https://mcpdebugger.dev) to verify the remote server's - MCP compliance before adding it to Arcade. - - -{"Remote - -### 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. - - - Don't refresh the Arcade dashboard while an authorization prompt is open. - Refreshing mid-flow can leave a stale, incomplete authorization behind - instead of cleanly restarting it. If a connection seems stuck, close the - prompt, reload the page, and start a single fresh attempt. - - - - -## 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. - -Some remote servers need provider-specific setup beyond these generic settings. See [Connect a Salesforce Remote MCP Server](/operate/governance/mcp-gateways/add-remote-servers/salesforce) for a fully worked example. - -## 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. - - - - -```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) -``` - - - - -```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); -``` - - - - -## Limitations and caveats - - - 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. - - -- 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](/operate/governance/mcp-gateways/create-via-dashboard) -- [Connect to MCP clients](/get-started/mcp-clients) diff --git a/app/en/operate/governance/mcp-gateways/page.mdx b/app/en/operate/governance/mcp-gateways/page.mdx index a5cc479a0..9a21fa217 100644 --- a/app/en/operate/governance/mcp-gateways/page.mdx +++ b/app/en/operate/governance/mcp-gateways/page.mdx @@ -38,14 +38,14 @@ that you built yourself, or were not built by Arcade. AI Assistant - Describe what you want in natural language and let AI select the right tools for you. Best for quickly creating a gateway without ever leaving your chat interface. -## Add remote MCP servers +## Mix in tools from remote MCP servers -Use remote MCP servers when your tools live outside Arcade. Register the server once, then select its tools in your gateways. +A gateway can federate tools from any server in scope, including MCP servers Arcade does not host. You register a remote server once — to a project, or organization-wide — and its tools then appear in the tool picker of every gateway in that scope, alongside Arcade's own. diff --git a/app/en/operate/governance/page.mdx b/app/en/operate/governance/page.mdx index 73a0180bb..c6d33914f 100644 --- a/app/en/operate/governance/page.mdx +++ b/app/en/operate/governance/page.mdx @@ -11,6 +11,10 @@ Control which tools agents can use, enforce policies at runtime, and review admi + + Check the [MCP server catalog](/resources/integrations) first. When Arcade + already ships a server for a service, its tools are agent-optimized and + maintained for you, which beats registering that vendor's remote server + yourself. Reach for a remote MCP server when the catalog doesn't cover it. + + + + Looking to *write* new tools rather than connect an existing server? See [Build + an MCP server](/build/create-tools/tool-basics/build-mcp-server) instead. This + page is for servers that already exist and are reachable over HTTP. + + + + + +Register a remote MCP server to a project and use its tools anywhere in that project. + + + + + +- An Arcade account +- A remote MCP server URL that Arcade can reach +- Access to any auth credentials your server requires + + + + + +- Register a remote MCP server to a project +- Configure advanced connection settings +- Use the server's tools in gateways, the Playground, and the SDKs + + + + +## Types of MCP servers in Arcade + +Every MCP server in your project appears in the same [Servers dashboard](https://app.arcade.dev/servers), sorted along two axes. + +**Who runs it**, shown as the `Type` badge and the `URI` column: + +| | `URI` | `Type` | +|---|---|---| +| **Arcade Native** — a server Arcade hosts for you, either pre-built by Arcade or deployed with `arcade deploy` | `Arcade Hosted` | `HTTP` | +| **Remote** — a server you or a vendor hosts, reached at a URL you supply | the server URL | `MCP` | + +**How far it reaches**, chosen when you register it and shown as the scope badge: + +| | Available to | +|---|---| +| `Project` | Every gateway, Playground session, and SDK call in the one project it was registered to | +| `Global` | Every project across the organization, per the dashboard's "all organizations, projects, and accounts" | + +Arcade's pre-built catalog arrives as `Global` servers. A server you register yourself — Arcade Native or remote — is scoped to a single project unless you widen it. Either way the scope belongs to the *server*, not to any gateway, which is why one registration serves every gateway inside it. + +Whichever combination a server is, it gets the same treatment: connection timeout and retry settings, an `Active` / `Healthy` / `Pending Auth` status, an enable toggle, a **Tools** picker, **Logs**, and the same audit trail. A remote MCP server is a peer of an Arcade-hosted one, not an attachment to it. + +The Servers dashboard below mixes all of them in one list. `GoogleForms` and `envcheck` are Arcade-hosted project servers; `exa` and `granola-1p` are remote servers reached at their own URLs, with `granola-1p` still waiting on its first authorization; and the `Global` group at the bottom is Arcade's own catalog. + +{"The +{"The + +## Add the remote server to your project + + + +### Open the MCP servers page + +Go to the [MCP servers dashboard](https://app.arcade.dev/servers) for your project and click **Add Server**. + +### Enter the required fields + +Choose **Remote MCP** as the server type, then fill in the two required fields: + +- **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`) + +Select **Arcade** instead of **Remote MCP** if you are registering a server that Arcade or your own infrastructure hosts. See [Hybrid MCP servers](/operate/deploy/on-prem) for that flow. + + + Use the [MCP Debugger](https://mcpdebugger.dev) to verify the remote server's + MCP compliance before adding it to Arcade. + + +{"Remote + +### 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 prompts you to complete the OAuth flow. + + + Authorize as an admin user with the broadest tool access on the remote server. + Your credentials determine the tool list Arcade discovers, and therefore what + you can choose from when curating gateways. See [Who authenticates, + and when](#who-authenticates-and-when). + + + + Don't refresh the Arcade dashboard while an authorization prompt is open. + Refreshing mid-flow can leave a stale, incomplete authorization behind + instead of cleanly restarting it. If a connection seems stuck, close the + prompt, reload the page, and start a single fresh attempt. + + + + +## Who authenticates, and when + +Authentication to a remote MCP server happens twice, with different credentials each time. + +**At setup, the admin authenticates.** When you register the server, Arcade uses *your* credentials to fetch the server's tool list. That list is what you see in the Playground and what you pick from in a gateway's tool picker. Authorize as a user with the broadest access on the remote server, so the full set is available to add to your MCP Gateways. + +**At runtime, each end user authenticates.** When an end user's agent first calls a tool on that server, Arcade runs the OAuth flow against the remote server for *that user* and stores their tokens separately. Arcade then re-resolves the tool list for them individually. + +## Configure advanced settings + +Remote MCP may 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. + +{"Advanced + +Some remote servers need provider-specific setup beyond these generic settings. See [Connect a Salesforce Hosted MCP Server](/operate/governance/remote-mcp-servers/salesforce) for a fully worked example. + +## Where the server's tools become available + +Registration happens once, and the scope you picked decides the reach. Within that scope — one project, or every project in the organization — the server's tools are available to all three consumers: + +- **Every MCP Gateway in scope** can select them in its tool picker. A project can have many gateways, each exposing a different subset of the same server. +- **The Playground** can call them, which is the fastest way to learn a tool's arguments. +- **The Arcade SDKs** can execute them by name, with no gateway involved. + +Widening or narrowing that reach is a change to the server's scope, not something you configure per gateway. + +### Select the tools in a gateway + +Because you often don't control which tools a remote server exposes, gateways are where you curate them: pick the tools you want and hide the rest, per gateway. + +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. + + + + +```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) +``` + + + + +```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); +``` + + + + +## Limitations and caveats + + + 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. + + +- 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](/operate/governance/mcp-gateways/create-via-dashboard) +- [Connect to MCP clients](/get-started/mcp-clients) diff --git a/app/en/operate/governance/mcp-gateways/add-remote-servers/salesforce/page.mdx b/app/en/operate/governance/remote-mcp-servers/salesforce/page.mdx similarity index 95% rename from app/en/operate/governance/mcp-gateways/add-remote-servers/salesforce/page.mdx rename to app/en/operate/governance/remote-mcp-servers/salesforce/page.mdx index 70260c9ba..62f45ac19 100644 --- a/app/en/operate/governance/mcp-gateways/add-remote-servers/salesforce/page.mdx +++ b/app/en/operate/governance/remote-mcp-servers/salesforce/page.mdx @@ -8,7 +8,7 @@ import { SignupLink } from "@/app/_components/analytics"; # Connect a Salesforce Hosted MCP Server -Salesforce can host an [MCP server](https://developer.salesforce.com/docs/platform/hosted-mcp-servers/guide/hosted-mcp-servers-overview.html) for an org, exposing tools such as SOQL queries directly from Salesforce data. This guide covers the Arcade-side setup for connecting a Salesforce Hosted MCP Server as a [remote MCP server](/operate/governance/mcp-gateways/add-remote-servers), plus the handful of Salesforce settings that most commonly trip people up. +Salesforce can host an [MCP server](https://developer.salesforce.com/docs/platform/hosted-mcp-servers/guide/hosted-mcp-servers-overview.html) for an org, exposing tools such as SOQL queries directly from Salesforce data. This guide covers the Arcade-side setup for connecting a Salesforce Hosted MCP Server as a [remote MCP server](/operate/governance/remote-mcp-servers), plus the handful of Salesforce settings that most commonly trip people up. This guide is about connecting to a Salesforce Hosted MCP Server. If you're @@ -65,7 +65,7 @@ Follow Salesforce's own guides to [create your Hosted MCP Server](https://develo ### Register the server -Go to the [MCP servers dashboard](https://api.arcade.dev/dashboard/servers), click **Add server**, and enter a server ID and the Hosted MCP Server's URL (it looks like `https://api.salesforce.com/platform/mcp/v1/custom/YourServerName`). +Go to the [MCP servers dashboard](https://app.arcade.dev/servers), click **Add Server**, choose **Remote MCP**, and enter a server ID and the Hosted MCP Server's URL (it looks like `https://api.salesforce.com/platform/mcp/v1/custom/YourServerName`). ### Configure OAuth2 authorization diff --git a/app/en/operate/page.mdx b/app/en/operate/page.mdx index dce3ab2d8..9b7a4ff15 100644 --- a/app/en/operate/page.mdx +++ b/app/en/operate/page.mdx @@ -56,6 +56,10 @@ Federate tools, enforce access policies, and audit administrative actions. + diff --git a/app/en/operate/quickstart/page.mdx b/app/en/operate/quickstart/page.mdx index 135f541db..cc0136874 100644 --- a/app/en/operate/quickstart/page.mdx +++ b/app/en/operate/quickstart/page.mdx @@ -75,6 +75,8 @@ Create a gateway that federates the tools your agents and MCP clients should see - [Create via Dashboard](/operate/governance/mcp-gateways/create-via-dashboard) - [Create via AI Assistant](/operate/governance/mcp-gateways/create-via-ai) +Tools can come from Arcade's pre-built catalog, an MCP server you deploy, or a [remote MCP server](/operate/governance/remote-mcp-servers) you register — a gateway mixes all three. + Attach your User Source when you configure authentication for production. ### Turn on governance diff --git a/app/en/references/auth-providers/cisco-duo/page.mdx b/app/en/references/auth-providers/cisco-duo/page.mdx index 8fa5dbc4e..5ffb20116 100644 --- a/app/en/references/auth-providers/cisco-duo/page.mdx +++ b/app/en/references/auth-providers/cisco-duo/page.mdx @@ -90,7 +90,7 @@ Copy the exact Issuer from the Metadata tab rather than building it by hand. The #### Access the Arcade Dashboard -Go to the [Arcade Dashboard](https://api.arcade.dev/dashboard) and log in with your Arcade account credentials. +Go to the [Arcade Dashboard](https://app.arcade.dev) and log in with your Arcade account credentials. #### Navigate to the OAuth providers page @@ -145,7 +145,7 @@ The most common way to use Cisco Duo with Arcade is to put a Duo-protected syste Build an MCP server whose tools require Cisco Duo auth (see [Create your own Duo-authorized tools](#create-your-own-duo-authorized-tools)), then make it available in Arcade by either: - Deploying a [custom MCP server](/build/create-tools/tool-basics/build-mcp-server) to Arcade with [`arcade deploy`](/build/arcade-deploy), or -- Adding an existing remote MCP server to your Arcade project. +- [Adding an existing remote MCP server](/operate/governance/remote-mcp-servers) to your Arcade project. Once deployed, your server and its tools appear in the Arcade Dashboard under **Servers**. Each tool shows the Cisco Duo provider it requires: diff --git a/app/en/resources/faq/page.mdx b/app/en/resources/faq/page.mdx index 95cb8970a..b51096a23 100644 --- a/app/en/resources/faq/page.mdx +++ b/app/en/resources/faq/page.mdx @@ -15,6 +15,8 @@ import { ContactEmail } from "@/app/_components/contact-email"; Arcade makes it easy to build your own tools! You can fork our existing tools, or build your own from scratch. Learn more about [building your own MCP Server](/build/create-tools/tool-basics/build-mcp-server). +If the tools already exist on an MCP server somewhere — one your team runs, or one a vendor hosts — you don't need to rebuild them. [Register it as a remote MCP server](/operate/governance/remote-mcp-servers) and Arcade governs its tools alongside its own. + ## How do I contribute back a Tool to the Registry? We're always looking for new tools and MCP Servers! If you have a tool that you think would be useful to others, please let us know. You can contribute a tool by submitting a pull request to the [Arcade GitHub repository](https://github.com/ArcadeAI/arcade-ai). diff --git a/app/en/resources/glossary/page.mdx b/app/en/resources/glossary/page.mdx index b9f06a434..70c1b6b90 100644 --- a/app/en/resources/glossary/page.mdx +++ b/app/en/resources/glossary/page.mdx @@ -63,6 +63,14 @@ A protected server implements [MCP authorization](https://modelcontextprotocol.i An unprotected (anonymous) MCP server can be used by any MCP client on the network. Because it is anonymous, it can't identify the user who is using the server. Examples: servers that return static info, weather APIs, etc +#### Remote MCP Servers + +A remote MCP server is one that Arcade does not host: a server your team runs, a vendor hosts, or an Arcade partner provides. You [register it](/operate/governance/remote-mcp-servers) with a URL, and Arcade proxies it over the Streamable HTTP transport. In the Servers dashboard it carries the `MCP` type badge and shows its URL, as opposed to an Arcade-hosted server, which carries `HTTP` and shows `Arcade Hosted`. Once registered, a remote server gets the same auth handling, tool filtering, health status, logs, and audit trail as any Arcade-hosted server. + +#### Project and Global Servers + +Every MCP server in Arcade has a visibility scope, chosen when you register the server and belonging to the server rather than to any gateway. A **Project** server is registered to one project, and its tools are available to every gateway, Playground session, and SDK call in that project; this includes MCP servers you deploy and remote MCP servers you register. A **Global** server reaches every project across the organization — the dashboard describes it as "global to all organizations, projects, and accounts" — and Arcade's pre-built catalog is served this way. + ### Tool A 'tool' is a function that can be called by an agent which performs some action - commonly via an API, filesystem, database, etc. Tools are written in Python and deployed by running a worker which contains the MCP Server's code. Tools are defined by the `@tool()` decorator and will be passed `ToolContext` as the first argument. If a tool has dependencies that are not met (a secret is not provided, for example), the tool will fail to execute. @@ -101,7 +109,7 @@ _Learn more about [transport modes in the MCP Protocol documentation](https://mo MCP is an open standard protocol that enables LLMs to access and use tools and data sources. Arcade tools go further than MCP with enterprise-grade authentication, secure token management, and fine-grained permissions. This allows your tools to be accessible to any LLM that supports MCP, while maintaining security and user privacy. -Arcade Tools can be presented as an MCP server (via the Arcade Engine), allowing any LLM that supports MCP to access your tools. In the future, you will be able to add remote MCP servers to your project as additional workers, making their tools available to your agents. +Arcade Tools can be presented as an MCP server (via the Arcade Engine), allowing any LLM that supports MCP to access your tools. You can also [add remote MCP servers](/operate/governance/remote-mcp-servers) that Arcade does not host to your project, making their tools available to your agents alongside Arcade's own. ## The Arcade Platform diff --git a/app/en/resources/integrations/page.mdx b/app/en/resources/integrations/page.mdx index aeeb499ca..c63403c5e 100644 --- a/app/en/resources/integrations/page.mdx +++ b/app/en/resources/integrations/page.mdx @@ -3,6 +3,7 @@ title: MCP Servers description: Browse Arcade's catalog of pre-built MCP servers — integrations for GitHub, Slack, Google Workspace, Salesforce, and dozens of other services, ready to use with any MCP-compatible client via the Arcade Engine. --- +import { Cards } from "nextra/components"; import Toolkits from "./components/toolkits"; # MCP Servers @@ -21,6 +22,23 @@ A few starting points if you're not sure which MCP servers you need: Filter the full catalog below by category or type, or use the site search to jump directly to an MCP server. +## Don't see the server you need? + +Arcade isn't limited to this catalog. You have two options, depending on whether the server already exists: + + + + + + +Either way, the server joins your project — or your whole organization — alongside Arcade's own, with the same auth handling, tool filtering, and audit trail. + ## Browse all MCP servers diff --git a/app/en/resources/integrations/search/_meta.tsx b/app/en/resources/integrations/search/_meta.tsx index ad1e60347..a06e2befe 100644 --- a/app/en/resources/integrations/search/_meta.tsx +++ b/app/en/resources/integrations/search/_meta.tsx @@ -57,6 +57,18 @@ const meta: MetaRecord = { title: "Exa API", href: "/en/resources/integrations/search/exa-api", }, + "-- Partners": { + type: "separator", + title: "Partners", + }, + nimble: { + title: "Nimble", + href: "/en/resources/integrations/search/nimble", + }, + tavily: { + title: "Tavily", + href: "/en/resources/integrations/search/tavily", + }, }; export default meta; diff --git a/app/en/resources/integrations/search/nimble/page.mdx b/app/en/resources/integrations/search/nimble/page.mdx index d718599ff..27926c48b 100644 --- a/app/en/resources/integrations/search/nimble/page.mdx +++ b/app/en/resources/integrations/search/nimble/page.mdx @@ -7,11 +7,11 @@ import { Callout, Steps } from "nextra/components"; # Nimble -This integration is a remote MCP server offered by [Nimble](https://www.nimbleway.com), an Arcade Partner. It exposes Nimble's web data platform so agents can search, extract, crawl, and map the public web. Add it to an [MCP Gateway](/operate/governance/mcp-gateways/add-remote-servers) for central governance, authorization, and access control alongside Arcade's native servers. +This integration is a remote MCP server offered by [Nimble](https://www.nimbleway.com), an Arcade Partner. It exposes Nimble's web data platform so agents can search, extract, crawl, and map the public web. [Register it in your Arcade project](/operate/governance/remote-mcp-servers) — or organization-wide — and its tools are available to every gateway in that scope, with central governance, authorization, and access control alongside Arcade's native servers. ## MCP server URL -Register the following URL in Arcade: **Servers → Add server**. Nimble authenticates with an API key sent in an `Authorization` header, so the key is stored as a header secret rather than embedded in the URL (see [Authentication](#authentication)). +Register the following URL in Arcade: **Servers → Add Server → Remote MCP**. Nimble authenticates with an API key sent in an `Authorization` header, so the key is stored as a header secret rather than embedded in the URL (see [Authentication](#authentication)). ```text https://mcp.nimbleway.com/mcp @@ -28,7 +28,7 @@ Nimble expects a bearer token in the `Authorization` header on every request. In | Secret name | `NIMBLE_API_KEY` | | Secret value | Your Nimble API key | -Set these under **Advanced settings → Custom headers** when you add the server. See [Add remote MCP servers](/operate/governance/mcp-gateways/add-remote-servers#configure-advanced-settings) for the full reference. +Set these under **Advanced settings → Custom headers** when you add the server. See [Remote MCP servers](/operate/governance/remote-mcp-servers#configure-advanced-settings) for the full reference. ## What you can do @@ -60,7 +60,7 @@ Sign in to [Nimble](https://www.nimbleway.com) and open **Account settings → A ### Add Nimble as a remote MCP server in Arcade -Open the [Arcade Dashboard](https://api.arcade.dev/dashboard/servers) → **Add server**. Set: +Open the [Servers dashboard](https://app.arcade.dev/servers) → **Add Server** → **Remote MCP**. Set: - **ID**: a name for the server, for example `nimble` - **URI**: `https://mcp.nimbleway.com/mcp` @@ -68,7 +68,7 @@ Open the [Arcade Dashboard](https://api.arcade.dev/dashboard/servers) → **Add Under **Advanced settings → Custom headers**, add the `Authorization` header and store your key as described in [Authentication](#authentication), then save. - See the full walkthrough in [Add remote MCP servers](/operate/governance/mcp-gateways/add-remote-servers) for advanced settings like connection retries, header secrets, and custom headers. + See the full walkthrough in [Remote MCP servers](/operate/governance/remote-mcp-servers) for advanced settings like connection retries, header secrets, and custom headers. ### Verify Nimble tools @@ -95,6 +95,6 @@ Arcade handles authorization, credential handling, and audit logging at runtime. - [Nimble MCP server documentation](https://docs.nimbleway.com/integrations/mcp-server/mcp-server) - [Nimble documentation](https://docs.nimbleway.com) -- [Add remote MCP servers to Arcade](/operate/governance/mcp-gateways/add-remote-servers) +- [Remote MCP servers](/operate/governance/remote-mcp-servers) - [Create an MCP Gateway](/operate/governance/mcp-gateways/create-via-dashboard) - [Connect to MCP clients](/get-started/mcp-clients) diff --git a/app/en/resources/integrations/search/tavily/page.mdx b/app/en/resources/integrations/search/tavily/page.mdx index f919ca70b..29ca63c88 100644 --- a/app/en/resources/integrations/search/tavily/page.mdx +++ b/app/en/resources/integrations/search/tavily/page.mdx @@ -7,7 +7,7 @@ import { Callout, Steps } from "nextra/components"; # Tavily -This integration is a remote MCP Server offered by [Tavily](https://tavily.com), an Arcade Partner. Add it to an [MCP Gateway](/operate/governance/mcp-gateways/add-remote-servers) for central governance, authorization, and access control alongside Arcade's native servers. +This integration is a remote MCP server offered by [Tavily](https://tavily.com), an Arcade Partner. [Register it in your Arcade project](/operate/governance/remote-mcp-servers) — or organization-wide — and its tools are available to every gateway in that scope, with central governance, authorization, and access control alongside Arcade's native servers. ## MCP Server URL @@ -40,12 +40,12 @@ Compose these tools with Google Docs, Slack, Salesforce, GitHub, or any of Arcad Go to [tavily.com](https://tavily.com) → **Overview** → **Generate MCP Link**. Copy the generated URL (it contains your API key). -### Add Tavily as a Remote MCP Server in Arcade +### Add Tavily as a remote MCP server in Arcade -Open the [Arcade Dashboard](https://api.arcade.dev/dashboard) → **Servers** → **Add Server** → **Remote MCP**. Paste the URL from the [MCP Server URL](#mcp-server-url) section above (with your API key in place of `YOUR_API_KEY`) and save. +Open the [Servers dashboard](https://app.arcade.dev/servers) → **Add Server** → **Remote MCP**. Paste the URL from the [MCP Server URL](#mcp-server-url) section above (with your API key in place of `YOUR_API_KEY`) and save. - See the full walkthrough in Add remote MCP servers for advanced settings like connection retries, OAuth, and custom headers. + See the full walkthrough in Remote MCP servers for advanced settings like connection retries, OAuth, and custom headers. ### Verify Tavily tools @@ -75,6 +75,6 @@ See the open-source [Financial Intelligence Agent](https://github.com/arcadeai-l ## Resources - [Tavily documentation](https://docs.tavily.com) -- [Add remote MCP servers to Arcade](/operate/governance/mcp-gateways/add-remote-servers) +- [Remote MCP servers](/operate/governance/remote-mcp-servers) - [Create an MCP Gateway](/operate/governance/mcp-gateways/create-via-dashboard) - [Connect to MCP clients](/get-started/mcp-clients) diff --git a/public/images/mcp-gateway/servers-project-and-global-dark.png b/public/images/mcp-gateway/servers-project-and-global-dark.png new file mode 100644 index 000000000..5a3914611 Binary files /dev/null and b/public/images/mcp-gateway/servers-project-and-global-dark.png differ diff --git a/public/images/mcp-gateway/servers-project-and-global-light.png b/public/images/mcp-gateway/servers-project-and-global-light.png new file mode 100644 index 000000000..976e43ec5 Binary files /dev/null and b/public/images/mcp-gateway/servers-project-and-global-light.png differ diff --git a/public/llms.txt b/public/llms.txt index 1d4db0df3..5b28d6ec4 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -1,4 +1,4 @@ - + # Arcade @@ -74,7 +74,6 @@ Arcade docs serve two audiences. Start with the path that matches your goal: - [About Arcade](https://docs.arcade.dev/en/get-started/about-arcade): This documentation page explains how Arcade facilitates agent authorization for AI applications, enabling them to securely access and act on user-specific data from external services like Gmail and Google Calendar. It details the OAuth 2.0 authorization process, including permissions and scopes required for - [Add metadata to your tools](https://docs.arcade.dev/en/build/create-tools/tool-basics/add-tool-metadata): Documentation page -- [Add remote MCP servers](https://docs.arcade.dev/en/operate/governance/mcp-gateways/add-remote-servers): Documentation page - [Add user authorization to your MCP tools](https://docs.arcade.dev/en/build/create-tools/tool-basics/create-tool-auth): Documentation page - [Adding Resource Server Auth to Your MCP Server](https://docs.arcade.dev/en/build/create-tools/secure-your-server/secure-your-mcp-server): Documentation page - [Agentic development](https://docs.arcade.dev/en/get-started/setup/connect-arcade-docs): This documentation page provides guidance on utilizing agents in Integrated Development Environments (IDEs) to enhance development efficiency by accessing well-formatted markdown documentation directly from the Arcade site. It explains how AI agents can retrieve content without manual copying and introduces the LLM @@ -105,7 +104,7 @@ Arcade docs serve two audiences. Start with the path that matches your goal: - [Clerk](https://docs.arcade.dev/en/operate/identity/user-sources/clerk): Documentation page - [Comparative evaluations](https://docs.arcade.dev/en/build/create-tools/evaluate-tools/comparative-evaluations): Documentation page - [Compare MCP Server Types](https://docs.arcade.dev/en/build/create-tools/tool-basics/compare-server-types): Documentation page -- [Connect a Salesforce Hosted MCP Server](https://docs.arcade.dev/en/operate/governance/mcp-gateways/add-remote-servers/salesforce): Documentation page +- [Connect a Salesforce Hosted MCP Server](https://docs.arcade.dev/en/operate/governance/remote-mcp-servers/salesforce): Documentation page - [Connect Arcade to your LLM](https://docs.arcade.dev/en/get-started/agent-frameworks/setup-arcade-with-your-llm-python): This documentation page guides users on how to connect Arcade to a Large Language Model (LLM) using Python by creating a "harness" that facilitates interaction between the user, the model, and various tools. Users will learn to set up an agent - [Connect to MCP Clients](https://docs.arcade.dev/en/get-started/mcp-clients): This documentation page provides guidance on connecting Arcade MCP servers to various MCP-compatible clients and development environments, enabling users to enhance their agent workflows. - [Contact Us](https://docs.arcade.dev/en/resources/contact-us): This documentation page provides users with information on how to connect with the Arcade team for support through various channels. It aims to facilitate communication and assistance for users and their agents. @@ -140,6 +139,7 @@ Arcade docs serve two audiences. Start with the path that matches your goal: - [Operate Arcade](https://docs.arcade.dev/en/operate): Documentation page - [Organize your MCP server and tools](https://docs.arcade.dev/en/build/create-tools/tool-basics/organize-mcp-tools): Documentation page - [Providing useful tool errors](https://docs.arcade.dev/en/build/create-tools/error-handling/useful-tool-errors): Documentation page +- [Remote MCP servers](https://docs.arcade.dev/en/operate/governance/remote-mcp-servers): Documentation page - [RetryableToolError in Arcade](https://docs.arcade.dev/en/build/create-tools/error-handling/retry-tools): Documentation page - [Run evaluations](https://docs.arcade.dev/en/build/create-tools/evaluate-tools/run-evaluations): Documentation page - [Running a Server](https://docs.arcade.dev/en/operate/governance/contextual-access/examples): Documentation page diff --git a/redirects.ts b/redirects.ts index aa2841937..bc6ddaf3e 100644 --- a/redirects.ts +++ b/redirects.ts @@ -1098,7 +1098,18 @@ export const redirects: Redirect[] = [ }, { source: "/:locale/guides/mcp-gateways/add-remote-servers", - destination: "/:locale/operate/governance/mcp-gateways/add-remote-servers", + destination: "/:locale/operate/governance/remote-mcp-servers", + permanent: true, + }, + { + source: + "/:locale/operate/governance/mcp-gateways/add-remote-servers/salesforce", + destination: "/:locale/operate/governance/remote-mcp-servers/salesforce", + permanent: true, + }, + { + source: "/:locale/operate/governance/mcp-gateways/add-remote-servers", + destination: "/:locale/operate/governance/remote-mcp-servers", permanent: true, }, {