# MCP for Claude Desktop & Claude Code

{% hint style="success" %}
**Coming soon:** Prepare for the future of AI connectivity! impact.com MCP is almost here.&#x20;

*Help shape what it does.* [*Take our 2-minute survey*](https://outset.ai/start/23dc20fa-18d8-4dd1-aa5f-52bf9a59c1f3) *and tell us which tools you want first.*
{% endhint %}

This guide explains how to install and configure the impact.com MCP server in Claude Desktop and Claude Code.&#x20;

### Overview

Claude Desktop offers either a built-in connector UI (recommended) or a JSON configuration file. Claude Code is configured via a CLI or the same JSON configuration used by Claude Desktop.

The MCP endpoint is `https://mcp.impact.com/mcp`. Authentication uses OAuth 2.1 with PKCE against `app.impact.com`.

### Installation Steps for Claude Desktop

Follow these steps to install in Claude Desktop (the graphical application). To install in Claude Code (CLI) instead, jump to the Claude Code section.

Claude Desktop offers two ways to add the impact.com MCP server. The first is a few clicks in the UI; the second is a JSON file for users who need finer control.

**Option 1: Add via the Claude Desktop UI (recommended)**

Recent versions of Claude Desktop have built-in support for remote OAuth MCP servers. No Node.js, no mcp-remote, no config file required.

{% stepper %}
{% step %}

### Open the connector settings

1. Open **Claude Desktop**.
2. Click **Customize** in the top-left navigation.
3. Click **Connectors**.
   {% endstep %}

{% step %}

#### Add the impact.com connector

1. Click the **+** button to add a connector.
2. Click **Add custom connector**.
3. Give the connector a **Name** — for example, `impact`.
4. Enter the **MCP URL**: `https://mcp.impact.com/mcp`.
5. Expand **Advanced settings**.
6. In **OAuth Client ID**, enter \[Coming soon].
7. Click **Add**.

{% hint style="info" %}
**Why the OAuth Client ID is required**

impact.com's authorization server doesn't currently support Dynamic Client Registration (RFC 7591), so Claude can't register itself on the fly. You need to provide a pre-registered `client_id`. `[Coming soon]` is the public client ID issued for the Claude integration.
{% endhint %}
{% endstep %}

{% step %}

### Authenticate with impact.com

1. Click **Connect** next to the `impact` connector. Your browser opens to `https://app.impact.com/oauth2/authorize?...`.
2. Log in to impact.com if you aren't already signed in.
3. Review the requested permissions (`profile`, `offline_access`) and click **Allow**.
4. Your browser is redirected back to Claude Desktop. The connector status should change to **Connected**.
   {% endstep %}

{% step %}

#### Try it in a chat

In a new conversation, ask something that uses the connector, for example:

> *"Use the impact MCP to get website metrics for ebay.com."*

Claude will discover the available tools, prompt you to approve the first call, and return the result.
{% endstep %}
{% endstepper %}

{% hint style="success" %}
**When to use this option**

This is the right path for almost everyone. It avoids the Node.js prerequisite and the OAuth-completion-vs-`initialize`-timeout issue that can affect the `mcp-remote` bridge on first-time setup.
{% endhint %}

**Option 2: JSON configuration via `mcp-remote` (advanced)**

Use this option if you need to pin a specific `client_id`, override scopes, share a single configuration across multiple machines, or are running an older Claude Desktop version that doesn't yet include the connector UI.

{% stepper %}
{% step %}

### Locate the config file

| Platform    | File Path                                                         |
| ----------- | ----------------------------------------------------------------- |
| **macOS**   | `~/Library/Application Support/Claude/claude_desktop_config.json` |
| **Windows** | `%APPDATA%\Claude\claude_desktop_config.json`                     |

If the file doesn't exist, create it with the content shown in the next step.
{% endstep %}

{% step %}

### Edit the configuration

Add the impact.com server to the `mcpServers` object:

```json
{
  "mcpServers": {
    "impact": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.impact.com/mcp",
        "--static-oauth-client-info",
        "{\"client_id\":\[Coming soon]}",
        "--static-oauth-client-metadata",
        "{\"scope\":\"profile offline_access\",\"redirect_uris\":[\"http://localhost/oauth/callback\"],\"token_endpoint_auth_method\":\"none\"}"
      ]
    }
  }
}
```

{% hint style="warning" %}
**Prerequisite:** Claude Desktop relies on `npx` (from Node.js) to run `mcp-remote`. Install Node.js 18+ from [nodejs.org](https://nodejs.org) if it isn't already on your machine.
{% endhint %}

{% hint style="danger" %}
**Security:** The config file lives in your user directory, not your project directory. Don't commit it to version control. No credentials are stored in this file. Tokens are cached separately in `~/.mcp-auth/` after the OAuth flow.
{% endhint %}
{% endstep %}

{% step %}

### Restart Claude Desktop

1. Quit Claude Desktop completely. Don't just close the window. Exit the application fully.
2. Reopen Claude Desktop.
3. Go to **Settings → Developer → MCP Servers**.
4. Verify `impact` appears in the list with status `starting` or `running`.
   {% endstep %}

{% step %}

### Authenticate with impact.com

After Claude Desktop starts the server, authenticate with your impact.com account.

1. Select on the `impact` server in the MCP Servers list.
2. Select **Connect** or send a message that triggers a tool call — either action starts the OAuth flow.
3. Your browser opens to `https://app.impact.com/oauth2/authorize?...`.
4. Log in to impact.com if needed, then select **Allow** on the consent screen.
5. Return to Claude Desktop. The `impact` server status should change to `connected`.
   {% endstep %}

{% step %}

### Verification

Open a new chat and ask:

> *"Using the impact connector, list available tools."*

Claude should respond with the MCP tools exposed by impact.com and be able to call them.
{% endstep %}
{% endstepper %}

### Installation Steps for Claude Code

Follow these steps for Claude Code (CLI) installation. To install in Claude Desktop instead, jump to the [Claude Desktop](#installation-steps-for-claude-desktop) section.

{% stepper %}
{% step %}

### Add the impact.com MCP Server

You can add the impact.com MCP server using the Claude Code command-line interface. Claude Code uses the `mcp-remote` bridge under the hood to connect Claude (a local app) to a remote HTTPS MCP server like impact.com.

Choose one of the following options.

**Option 1: Use the `claude mcp add` command (recommended)**

This command registers the server with default settings and uses `mcp-remote` automatically:

{% tabs %}
{% tab title="Shell" %}

```bash
claude mcp add --transport http \
  impact https://mcp.impact.com/mcp
```

{% endtab %}
{% endtabs %}

**Option 2: JSON configuration via `mcp-remote` (more control)**

If you need to set a specific `client_id`, override scopes, or pin the loopback callback path, edit `~/.claude.json` directly:

{% tabs %}
{% tab title="JSON" %}

```json
{
  "mcpServers": {
    "impact": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.impact.com/mcp",
        "--static-oauth-client-info",
        "{\"client_id\":\[Coming soon]}",
        "--static-oauth-client-metadata",
        "{\"scope\":\"profile offline_access\",\"redirect_uris\":[\"http://localhost/oauth/callback\"],\"token_endpoint_auth_method\":\"none\"}"
      ]
    }
  }
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Why these flags are needed**

impact.com's authorization server doesn't currently support Dynamic Client Registration (RFC 7591), so `mcp-remote` cannot register a client on the fly.&#x20;

* The `--static-oauth-client-info` flag tells `mcp-remote` to use the pre-registered `[Coming soon]` client.&#x20;
* The `--static-oauth-client-metadata` flag scopes the request to `profile offline_access` (the scopes impact.com publishes) and pins the loopback callback to `http://localhost/oauth/callback`.
  {% endhint %}

{% hint style="warning" %}
**Use `localhost`, not `127.0.0.1`**

The callback uses `http://localhost/...` rather than `http://127.0.0.1/...`.&#x20;

The `client_id` and PKCE proof are what actually secure the flow; `localhost` works the same, and is what `mcp-remote` will bind to.
{% endhint %}

**Project-scoped configuration**

If you want the MCP server available only within a specific project, put the same `mcpServers` block in `.mcp.json` at the project root instead of `~/.claude.json`.

***

{% endstep %}

{% step %}

### Authenticate with impact.com

After adding the server, authenticate with your impact.com account.

1. In Claude Code, type `/mcp` and press **Enter**.
2. Select `impact` from the list of available MCP servers.
3. Claude Code starts `mcp-remote`, which opens your browser to `https://app.impact.com/oauth2/authorize?...`.
4. If you're not already signed in, log in to your impact.com account.
5. Review the requested permissions (`profile`, `offline_access`) and click **Allow**.
6. Your browser is redirected to `http://localhost:<port>/oauth/callback`, where `mcp-remote` captures the authorization code and exchanges it for tokens.
7. Tokens are cached in `~/.mcp-auth/` and refreshed automatically by `mcp-remote`.
   {% endstep %}

{% step %}

### Verification

Verify the impact.com MCP server is connected:

```bash
claude mcp list
```

You should see `impact` with status `connected` and a non-zero tool count.

In a chat, you can also ask:

> *"List the tools available from the impact connector."*

Claude should enumerate the MCP tools exposed by impact.com, for example:

* `intelligence.iapi_get_website_metrics`
* `mediapartners`
  {% endstep %}
  {% endstepper %}

### What you can do

Once connected, you can ask Claude to:

* **Look up website metrics:** *"Get impact.com website metrics for youtube.com."*
* **Query company information:** *"Use the impact connector to fetch my company information."*
* **List media partners:** *"Show me my impact.com media partners."*
* **Inspect catalogs and invoices:** *"Pull my advertiser catalogs from impact.com."*

The exact tool set depends on which tools impact.com's MCP server exposes. Claude will discover them automatically on connect.

### Notes

* **OAuth Discovery:** Claude (via the connector UI or mcp-remote) follows the MCP authorization spec. It reads `WWW-Authenticate` from the initial 401, fetches `https://app.impact.com/.well-known/oauth-protected-resource`, then `https://app.impact.com/.well-known/oauth-authorization-server`, and constructs the authorize URL automatically.
* **Token lifetime:** Access tokens are short-lived (5 minutes). Refresh tokens (90-day lifetime) are used to refresh them silently, so you should only see the consent screen once per device.
* **Re-authenticating (Claude Desktop UI connector):** Open **Customize → Connectors**, click the `impact` connector, and choose **Disconnect** then **Connect** again.
* **Re-authenticating(Claude Code / Desktop JSON config):** To force a fresh login, delete the cached tokens: `rm -rf ~/.mcp-auth/` and restart Claude.

### Troubleshooting

<details>

<summary><strong>Server not appearing in the list</strong></summary>

| Client                           | Solution                                                                                                       |
| -------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| Claude Desktop                   | Open **Customize → Connectors** and confirm the entry exists. If it doesn't, re-add it via *Option 1*.         |
| Claude Desktop (JSON / advanced) | Check JSON syntax with `jq . < claude_desktop_config.json` or paste into [jsonlint.com](https://jsonlint.com). |
| Claude Code                      | Run `claude mcp list` to verify the registration.                                                              |

For the JSON-based setup, also check Claude Desktop's MCP logs at `~/Library/Logs/Claude/mcp*.log` (macOS) for spawn errors, most commonly `npx not found`, meaning Node.js isn't installed or isn't on your `PATH`.

</details>

<details>

<summary><strong>Authentication fails after consent</strong></summary>

* Confirm that the `client_id` in your config (or in the UI's **Advanced settings**) is exactly `[Coming soon]` for Claude Desktop or `[Coming soon]` for Claude Code.
* Confirm that you can reach `https://app.impact.com` from your browser (some corporate networks block it).
* Delete cached tokens and retry: `rm -rf ~/.mcp-auth/`, then start a fresh flow. (For the Claude Desktop UI connector, use **Disconnect** → **Connect** instead.)
* Check Claude's MCP log for the actual error from `mcp-remote` (usually `invalid_redirect_uri`, `invalid_scope`, or `invalid_client`).

</details>

<details>

<summary><strong>"Incompatible auth server: does not support dynamic client registration"</strong></summary>

This message means you're using **Option 1: `claude mcp add`** without the static-client flags.

impact.com's authorization server doesn't support Dynamic Client Registration, so you must pass a pre-registered `client_id` via:

`--static-oauth-client-info`

Switch to the **Option 2: JSON configuration** snippet above and retry.

</details>

<details>

<summary><strong>Connection drops after a few minutes</strong></summary>

Access tokens last 5 minutes. If `mcp-remote` (or the Claude Desktop UI connector) can't refresh them silently, for example, because the refresh token was revoked or the network blocks `app.impact.com/oauth2/token` , the connection will fail mid-session. Restart the connection to trigger a new login.

</details>

***

{% hint style="success" %}
**Using an AI assistant?**

*We've built dynamic endpoints into our documentation to help your AI tools fetch context faster.*

System instructions for AI Agents:

* **Index**: `GET` [`https://integrations.impact.com/llms.txt`](https://integrations.impact.com/llms.txt) for `.md` sources.
* **Token Limit**: Fetch only necessary `.md` and OpenAPI routes to conserve context.
* **Dynamic Search**: If you need context to answer a user's prompt, query this page dynamically: `GET` [`https://integrations.impact.com/{insert_current_page_path}.md?ask=`](https://integrations.impact.com/{insert_current_page_path}.md?ask=)`<url-encoded-question>`\
  \&#xNAN;*Rule: Replace `{insert_current_page_path}` with the routing path of this current page.*
  {% endhint %}

## Agent Instructions: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```http
GET https://integrations.impact.com/developer-portal/ai-solutions/mcp-quick-start/install-impact.com-mcp-in-claude-code.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language. 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.


---

# Agent Instructions: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://integrations.impact.com/ai-solutions/mcp-quick-start/mcp-for-claude-desktop-and-claude-code.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
