> ## Documentation Index
> Fetch the complete documentation index at: https://aci.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Apps MCP Server

> Expose functions from specific apps that you pre-select

## Overview

The `Apps MCP Server` provides direct access to functions (tools) from specific app(s) you select. Unlike most MCP servers that are bound to a single app, this server allows you to combine multiple apps in one server.

## Benefits

* **Multi-App Support** - Include functions from multiple apps in a single MCP server
* **Direct Function Access** - Functions appear directly in the LLM's tool list without discovery steps (Which usually have better performance if your usecase is very specific)
* **Selective Inclusion** - Only include the Apps whose functions you want to expose
* **Reduced Server Management** - No need to run multiple MCP servers for different apps
* **Familiar Pattern** - Similar to traditional MCP server concept but with multi-app capability

## How It Works

The Apps MCP Server directly exposes the functions (tools) from the apps you specify with the `--apps` parameter. When an MCP client interacts with this server, all functions from the specified apps will be available in its tool list.

This approach differs from the `Unified MCP Server` in that there's no dynamic discovery process - all function (tool) definitions are directly available to MCP clients.

<Note>
  Unlike most MCP servers that are limited to a single app, the `Apps MCP Server` allows you to combine functions from multiple apps in a single server, reducing the number of servers you need to manage.
</Note>

## Prerequisites

Before using the `Apps MCP Server`, you need to complete several setup steps on the ACI.dev platform.

<Steps>
  <Step title="Get your ACI.dev API Key">
    You'll need an API key from one of your ACI.dev agents. Find this in your [project setting <Icon icon="up-right-from-square" />](https://platform.aci.dev/project-setting)
  </Step>

  <Step title="Configure Apps">
    Navigate to the [App Store <Icon icon="up-right-from-square" />](https://platform.aci.dev/apps) to configure the apps you want to use with your MCP servers.

    <Note>
      For more details on what is an app and how to configure it, please refer to the [App](../core-concepts/app) section.
    </Note>
  </Step>

  <Step title="Set Allowed Apps">
    In your [Project Setting <Icon icon="up-right-from-square" />](https://platform.aci.dev/project-setting), enable the apps you want your agent to access by adding them to the `Allowed Apps` list.

    <Note>
      For more details on how and why to set allowed apps, please refer to the [Agent](../core-concepts/agent) section.
    </Note>
  </Step>

  <Step title="Link Accounts For Each App">
    For each app you want to use, you'll need to link end-user (or your own) accounts. During account linking, you'll specify a `linked-account-owner-id` which you'll later provide when starting the MCP servers.

    <Note>
      For more details on how to link accounts and what `linked-account-owner-id` is, please refer to the [Linked Accounts](../core-concepts/linked-account) section.
    </Note>
  </Step>

  <Step title="Install the Package">
    ```bash theme={null}
    # Install uv if you don't have it already
    curl -sSf https://install.pypa.io/get-pip.py | python3 -
    pip install uv
    ```
  </Step>
</Steps>

## Integration with MCP Clients

<Note>
  * Replace the `<LINKED_ACCOUNT_OWNER_ID>` and `<YOUR_ACI_API_KEY>` below with the `linked-account-owner-id` of your linked accounts and your ACI.dev API key respectively.
  * Replace `<APP_1>,<APP_2>,...` with the apps you set as allowed for your agent in the [Project Setting <Icon icon="up-right-from-square" />](https://platform.aci.dev/project-setting).
</Note>

<AccordionGroup>
  <Accordion title="Cursor & Windsurf" icon="code">
    <Note>
      Make sure you hit the refresh button on the MCP settings page after entering your own API key and Owner ID.

      <Frame>
        <img src="https://mintcdn.com/aipotheosislabs-60d5bdcb/d29fRbieQpqSnjGv/images/cursor-unified-mcp.png?fit=max&auto=format&n=d29fRbieQpqSnjGv&q=85&s=bc54d5475acab063f1d5e18e308a593f" alt="Cursor Unified MCP" width="949" height="176" data-path="images/cursor-unified-mcp.png" />
      </Frame>
    </Note>

    ```json mcp.json theme={null}
    {
      "mcpServers": {
        "aci-mcp-apps": {
            "command": "uvx",
            "args": ["aci-mcp@latest", "apps-server", "--apps", "<APP_1>,<APP_2>,...", "--linked-account-owner-id", "<LINKED_ACCOUNT_OWNER_ID>"],
            "env": {
                "ACI_API_KEY": "<ACI_API_KEY>"
            }
        }
      }
    }
    ```
  </Accordion>

  <Accordion title="Claude Desktop" icon="message-bot">
    <Note>
      Make sure to restart the Claude Desktop app after adding the MCP server configuration.
    </Note>

    ```json claude_desktop_config.json theme={null}
    {
      "mcpServers": {
        "aci-mcp-unified": {
          "command": "bash",
          "args": [
            "-c",
            "ACI_API_KEY=<YOUR_ACI_API_KEY> uvx aci-mcp@latest apps-server --apps <APP_1>,<APP_2>,... --linked-account-owner-id <LINKED_ACCOUNT_OWNER_ID>"
          ]
        }
      }
    }
    ```
  </Accordion>

  <Accordion title="Running Locally" icon="rectangle-terminal">
    ```bash terminal theme={null}
    # Set API key
    export ACI_API_KEY=<YOUR_ACI_API_KEY>

    # Option 1: Run in stdio mode (default)
    uvx aci-mcp@latest apps-server --apps "<APP_1>,<APP_2>,..." --linked-account-owner-id <LINKED_ACCOUNT_OWNER_ID>

    # Option 2: Run in sse mode
    uvx aci-mcp@latest apps-server --apps "<APP_1>,<APP_2>,..." --linked-account-owner-id <LINKED_ACCOUNT_OWNER_ID> --transport sse --port 8000
    ```
  </Accordion>
</AccordionGroup>

## Commandline Arguments

<AccordionGroup>
  <Accordion title="[Required] --apps">
    The `apps` argument is used to specify the apps you want to use with your MCP server. E.g., `--apps GMAIL,BRAVE,GITHUB` means that the MCP server will only access and expose the functions (tools) from `GMAIL`, `BRAVE` and `GITHUB` apps.

    <Note>
      The apps must be configured and enabled first.
    </Note>
  </Accordion>

  <Accordion title="[Required] --linked-account-owner-id">
    The `linked-account-owner-id` is the owner ID of the linked accounts you want to use for the function execution. E.g., `--linked-account-owner-id johndoe` means that the function execution (e.g, `GMAIL__SEND_EMAIL`) will be done on behalf of the linked account of `GMAIL` app with owner ID `johndoe`.
  </Accordion>

  <Accordion title="[Optional] --transport">
    The `transport` argument is used to specify the transport protocol to use for the MCP server.
    The default transport is `stdio`.
  </Accordion>

  <Accordion title="[Optional] --port">
    The `port` argument is used to specify the port to listen on for the MCP server if the `--transport` is set to `sse`.
    The default port is `8000`.
  </Accordion>
</AccordionGroup>

```bash help theme={null}
$ uvx aci-mcp@latest apps-server --help
Usage: aci-mcp apps-server [OPTIONS]

  Start the apps-specific MCP server to access tools under specific apps.

Options:
  --apps TEXT                     comma separated list of apps of which to use
                                  the functions  [required]
  --linked-account-owner-id TEXT  the owner id of the linked accounts to use
                                  for the tool calls. You'll need to create
                                  the linked accounts on platform.aci.dev
                                  [required]
  --transport [stdio|sse]         Transport type
  --port INTEGER                  Port to listen on for SSE
  --help                          Show this message and exit.
```
