Skip to main content

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.
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.

Prerequisites

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

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
2

Configure Apps

Navigate to the App Store to configure the apps you want to use with your MCP servers.
For more details on what is an app and how to configure it, please refer to the App section.
3

Set Allowed Apps

In your Project Setting , enable the apps you want your agent to access by adding them to the Allowed Apps list.
For more details on how and why to set allowed apps, please refer to the Agent section.
4

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.
For more details on how to link accounts and what linked-account-owner-id is, please refer to the Linked Accounts section.
5

Install the Package

# Install uv if you don't have it already
curl -sSf https://install.pypa.io/get-pip.py | python3 -
pip install uv

Integration with MCP Clients

  • 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 .
Make sure you hit the refresh button on the MCP settings page after entering your own API key and Owner ID.
Cursor Unified MCP
mcp.json
{
  "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>"
        }
    }
  }
}
Make sure to restart the Claude Desktop app after adding the MCP server configuration.
claude_desktop_config.json
{
  "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>"
      ]
    }
  }
}
terminal
# 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

Commandline Arguments

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.
The apps must be configured and enabled first.
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.
The transport argument is used to specify the transport protocol to use for the MCP server. The default transport is stdio.
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.
help
$ 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.
I