> For the complete documentation index, see [llms.txt](https://docs.uptiq.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.uptiq.ai/ai-workbench-qore/console/agent-builder/build/mcp-tools.md).

# MCP Tools

{% hint style="info" %}
**MCP Tools** ("Connect custom systems that provide actions your app or agent can use") is the catalog of Model Context Protocol servers the platform makes available to your agent. Each entry is a server that exposes a set of related tools. Connecting a server creates an **MCP connection** for this agent, and the tools you enable become available to the agent at run time. For how MCP works across Qore, see [MCP](/ai-workbench-qore/core-concepts/mcp.md).
{% endhint %}

> Agent Config → MCP Tools catalog

Reach this page from **Agent Config → Integration Tools & Connectors → MCP Tools** in the left navigation.

### The catalog <a href="#the-catalog-structure" id="the-catalog-structure"></a>

The page lists MCP servers grouped by **category**. Use **Search MCP tools…** to find a server by name.

The same catalog appears in the **MCP Marketplace** tab of [Add Skill](/ai-workbench-qore/console/agent-builder/build/adding-a-skill-to-the-agent.md). It holds these servers:

| Category                             | Server                           | What it provides                                                                                                                                                      | You enter   |
| ------------------------------------ | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| Analytics/Warehouses/BI              | **CoinAPI Market Data API**      | Real-time and historical market data: normalized trades, order books, OHLCV, and tick-level history, across multiple exchanges                                        | **Api Key** |
| Analytics/Warehouses/BI              | **Finfeed Stock API**            | T+1 raw stock market data from IEX, Euronext, and more than 20 other stock exchanges, through a REST API                                                              | **Api Key** |
| Analytics/Warehouses/BI              | **Finfeed SEC API**              | Clean, structured, and timely SEC filing data, through a REST API                                                                                                     | **Api Key** |
| Analytics/Warehouses/BI              | **Alpha Vantage API**            | Real-time and historical financial market data, including stocks, forex, crypto, and economic indicators                                                              | **Api Key** |
| Finance & Banking                    | **Core Banking Sandbox API**     | Sandbox banking for testing and integration: account management, customer onboarding, transaction history, balance inquiries, fund transfers, and payment simulations | **Token**   |
| General Search & Knowledge Retrieval | **Tavily**                       | Tavily's search and data extraction, for AI assistants, over the Model Context Protocol                                                                               | **Api Key** |
| General Search & Knowledge Retrieval | **AWS Knowledge Base Retrieval** | Retrieval from an AWS Knowledge Base through the Bedrock Agent Runtime, for retrieval-augmented generation                                                            | Nothing     |
| Web, Browsing & Scraping             | **Firecrawl**                    | Web scraping, crawling, and search for content extraction                                                                                                             | **Api Key** |

{% hint style="warning" %}
**Core Banking Sandbox API returns simulated data.** Use it to build and test an agent, not to reach a real core banking system.
{% endhint %}

To connect a server that isn't in the catalog, use the **MCP Server** skill in the [Skill Library](/ai-workbench-qore/platform-resources/skill-library.md). It opens the same form, blank.

### Connecting an MCP server <a href="#connecting-an-mcp-server" id="connecting-an-mcp-server"></a>

Select a server to open **Create MCP Connection**. It runs in up to three steps.

{% stepper %}
{% step %}

#### Enter the connection

The form opens with a warning: *This connector hasn't been officially verified by UPTIQ. Make sure you trust it before using it, as you'll be responsible for any actions it performs.* It appears for catalog servers too.

| Field                     | What to enter                                                                                        |
| ------------------------- | ---------------------------------------------------------------------------------------------------- |
| **Connection Name**       | Required. Filled in with the server's name                                                           |
| **Remote MCP Server URL** | Required. Filled in with the server's URL                                                            |
| **Api Key** or **Token**  | Required, for servers that need one. See [How catalog fields are used](#how-catalog-fields-are-used) |
| **Advanced Settings**     | Optional. How Qore signs in to the server. See [Advanced Settings](#advanced-settings)               |

To fill the form from a file instead, select **Import Config File**. Then select **Next**. Qore connects to the server to check it.
{% endstep %}

{% step %}

#### Authorize, if the server asks

If the server needs an OAuth sign-in and Qore has no token for it, **Waiting for Authorization** appears and a pop-up opens with the server's sign-in page. Sign in and grant the requested permissions; the dialog continues by itself once you're authorized.

* **Connect to Authorize** opens the pop-up again, for example if your browser blocked it.
* **Cancel** returns to the first step.

Qore skips this step for connections that use M2M, and for server URLs ending in `/sse`.
{% endstep %}

{% step %}

#### Choose tools and settings

**Tools and Settings** lists the server's tools, with a count such as `5 of 5 tools enabled`. Every tool starts enabled, set to **Always Ask Permissions**.

* **Enable All Tools** turns every tool on or off at once. The menu beside it sets the supervision mode for every tool.
* Each tool has its own switch, and its own supervision mode: **Always Ask Permissions** or **Allow Unsupervised**.
* Select the pencil beside a tool's description to rewrite it, then **Save**.
* A warning icon marks a tool whose input schema is invalid: *This tool has an invalid input schema which might not work for all models.*

Select **Create Connection**.
{% endstep %}
{% endstepper %}

#### How catalog fields are used <a href="#how-catalog-fields-are-used" id="how-catalog-fields-are-used"></a>

A catalog server's URL can hold a placeholder, such as `?apikey={{api_key}}`. Qore replaces it with what you enter in **Api Key**, and saves the URL with the value in it. **Core Banking Sandbox API** instead sends its **Token** as an `Authorization: Bearer` header.

{% hint style="warning" %}
**Enter a secret reference, not the key.** [Connectors](/ai-workbench-qore/control-center/govern/connectors.md) in Control Center shows each connection's URL in full, so a key typed into **Api Key** can be read there. Store the key on [Secrets & Variables](/ai-workbench-qore/console/agent-builder/build/secrets-and-variables.md) and enter its reference, such as `$secret.TAVILY_API_KEY`. The saved URL then holds the reference, and Qore resolves it when the agent runs.
{% endhint %}

#### Import Config File <a href="#import-config-file" id="import-config-file"></a>

**Import Config File** takes a JSON file in the format MCP clients use, with an `mcpServers` object. Qore reads the first server in it:

* its key, as **Connection Name**
* `url`, as **Remote MCP Server URL**
* `headers`, as **Headers**
* `env.CLIENT_ID` and `env.CLIENT_SECRET`, as **OAuth Client ID** and **OAuth Client Secret**

A file without an `mcpServers` object is refused with *Invalid config file: Missing or invalid "mcpServers" configuration*.

### Advanced Settings <a href="#advanced-settings" id="advanced-settings"></a>

**Advanced Settings** holds the credentials Qore presents to the MCP server. Choose by how the server authenticates.

| Setting                                         | What it's for                                                                                                                                                                                                                                                                    |
| ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Register this Redirect URL**                  | For a server that signs people in through OAuth. Copy the URL and, *when creating an OAuth app on your MCP server, add this URL as an allowed redirect URI.* Shown when the agent's executor version supports it and M2M is off.                                                 |
| **OAuth Client ID** and **OAuth Client Secret** | Optional for an OAuth sign-in. If the server's authorization service supports dynamic client registration, Qore registers itself and you can leave them empty. If it doesn't, enter the client ID from the server's OAuth app, or the connection fails. Required when M2M is on. |
| **Authenticate M2M (OAuth client credentials)** | For a server that issues a client ID and secret instead of a sign-in page. See [Connect with client credentials](#connect-with-client-credentials).                                                                                                                              |
| **Headers**                                     | Key and value pairs sent with every request to the server. Select **Add Entry** for each one.                                                                                                                                                                                    |

**References in the form.** `$secret.<name>` and `$agent.<name>` resolve to the agent's [secrets and variables](/ai-workbench-qore/console/agent-builder/build/secrets-and-variables.md) anywhere in the connection, including the URL and headers. When the agent has [Authentication](/ai-workbench-qore/console/agent-builder/deploy/authentication-1.md) turned on, `$auth.token` is also offered in **Api Key**, **OAuth Client ID**, **OAuth Client Secret** and **Headers**; it resolves to the verified token of the person calling the agent.

#### Connect a server with machine credentials (OAuth client credentials) <a href="#connect-with-client-credentials" id="connect-with-client-credentials"></a>

Some MCP servers, often ones hosted by your company or a vendor behind Microsoft Entra ID, Okta, Auth0 or Keycloak, don't show a sign-in page. Instead they issue a client ID and client secret up front, by email, portal or IT ticket, and expect the caller to exchange them for a token. This is the OAuth 2.0 **client credentials** grant, also called machine-to-machine (M2M). The agent authenticates as itself, not as a person.

{% stepper %}
{% step %}

#### Open the connection form

Select the server in the catalog, or choose **MCP Server** in the Skill Library. Enter the server's name and URL.
{% endstep %}

{% step %}

#### Turn on M2M

Expand **Advanced Settings** and select **Authenticate M2M (OAuth client credentials)**.
{% endstep %}

{% step %}

#### Enter the credentials

* **Token URL** — required. The OAuth 2.0 token endpoint your provider gave you.
* **Scope (Optional)** — some providers require it. For Microsoft Entra ID it usually looks like `api://<resource-app-id>/.default`.
* **OAuth Client ID** and **OAuth Client Secret** — both required when M2M is on.
  {% endstep %}

{% step %}

#### Continue

Select **Next**. There's no authorization step: the agent requests its own token each time it connects. Choose the tools, then **Create Connection**.
{% endstep %}
{% endstepper %}

With M2M on, the form hides the Redirect URL, because this grant never redirects anyone. If Token URL, client ID or client secret is missing, the form says which one, for example *Token URL is required for the client credentials grant*, and doesn't continue.

If a server expects client credentials and you connect it without M2M, the connection can look successful while every tool call fails as unauthorised. Turn M2M on and reconnect.

### Managing a connection <a href="#managing-a-connection" id="managing-a-connection"></a>

Open an existing connection to see **MCP Server Connection**: the connection's name and URL, and under **Tools and Settings**, its enabled tools with a count such as `4 tools enabled` and a search box.

| Action                       | What it does                                                                                                                                                                                                                                       |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Connect** / **Disconnect** | Turns the connection on or off. Disconnecting asks first: *Disconnecting will stop all ongoing sessions using this MCP server.*                                                                                                                    |
| **Remove**                   | After a confirmation, permanently removes the MCP server from the agent.                                                                                                                                                                           |
| **Initialize**               | Shown instead of Connect when the connection has no credentials yet, such as one imported without its MCP configuration. Reopens Create MCP Connection with the name and URL filled in.                                                            |
| Edit (pencil)                | Reopens Create MCP Connection with the saved name, URL, client ID, headers and M2M settings filled in.                                                                                                                                             |
| **Manage Tools**             | Opens **Manage Tools and Settings**: turn tools on or off with **Enable All** or each switch, change supervision modes, rewrite descriptions, and select **Refresh tools** to fetch the server's current list. Then **Save Changes**, or **Back**. |

{% hint style="info" %}
**Re-enter the client secret when you edit.** The secret isn't shown again after saving, so editing a connection that uses one means typing it again.
{% endhint %}

### Exporting and importing <a href="#exporting-and-importing" id="exporting-and-importing"></a>

[Export Agent](/ai-workbench-qore/console/agent-builder/deploy/export-agent.md) always includes the agent's MCP connections. **Include MCP configuration**, off by default, decides whether their OAuth client ID and secret, headers and tokens go too. Connections exported without it arrive in the other environment needing **Initialize**.

### Where connected MCPs show up <a href="#where-connected-mcps-show-up" id="where-connected-mcps-show-up"></a>

* **The canvas:** each connection appears as a node in the Skills band, labelled with the connection's name.
* [Skills & Capabilities](/ai-workbench-qore/console/agent-builder/build/skills-and-capabilities.md): the server's enabled tools.
* [Connectors](/ai-workbench-qore/control-center/govern/connectors.md) › **MCP Servers**, in Control Center: one row per connection in the account, with its project and the agent that uses it.

### MCP Tools compared to Apps & Services <a href="#mcp-tools-compared-to-apps-and-services" id="mcp-tools-compared-to-apps-and-services"></a>

Both add outside capability to the agent, and the catalogs overlap.

* [Apps & Services](/ai-workbench-qore/console/agent-builder/build/apps-and-services.md) lists SaaS connectors, such as Stripe, Resend and Twilio, connected through the Integrations Hub.
* MCP Tools lists MCP servers, such as market-data, web-scraping and knowledge-retrieval services. The **MCP Server** skill reaches any other MCP server by URL.
* For an HTTP endpoint that isn't an MCP server, use the [API Call](/ai-workbench-qore/platform-resources/skill-library/api-call.md) skill.

***

{% columns %}
{% column width="83.33333333333334%" %}

<p align="right"><em>Maintained by</em> <mark style="color:green;">Abhishek Paul</mark><br><code>AI-assisted, human-approved</code></p>
{% endcolumn %}

{% column width="16.666666666666664%" %}

<div align="left"><img src="https://1326225582-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0qmgQjJ5aArDTj2ACFHG%2Fuploads%2Fgit-blob-d034645b4f8f8ee661985f5306b60ded3289653c%2Fmaintainer-abhishek-paul.png?alt=media" alt="" width="60"></div>
{% endcolumn %}
{% endcolumns %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.uptiq.ai/ai-workbench-qore/console/agent-builder/build/mcp-tools.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
