---
id: mcp
title: Model Context Protocol (MCP)
sidebar_label: MCP Server
description: Connect GAAPx to Claude Desktop, Cursor, and AI agents via Model Context Protocol.
tags:
  - mcp
  - ai
  - integrations
  - claude
  - cursor
---

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

# Model Context Protocol (MCP)

Connect **GAAPx** directly to **Claude Desktop**, **Cursor**, **Windsurf**, and autonomous AI agents using the [Model Context Protocol (MCP)](https://modelcontextprotocol.io).

With the GAAPx MCP Server, your AI coding assistants and agents can query live trial balances, inspect ASC 606 revenue schedules, search contract terms, and run automated accounting compliance checks in real time.

---

## Prerequisites

Before connecting your MCP client, you need an active GAAPx API key:

1. Log in to your **[GAAPx Admin Console](https://app.gaapx.com/admin/api)**.
2. Navigate to **System > API & MCP Keys**.
3. Under **Generate an API key**, provide a name (e.g., `Claude Desktop MCP`) and select your desired permissions.
4. Click **Generate key** and copy your secret token (prefixed with `gx_live_...`).

:::warning Save Your Key
Your secret key is only displayed once upon generation. Keep it secure and store it in your environment variables or password manager.
:::

---

## Connection Methods

GAAPx supports two transport protocols:

### 1. Remote Streamable HTTP / SSE (Recommended)

Connect directly to GAAPx's hosted cloud endpoint without installing local packages:

- **Endpoint URL:** `https://app.gaapx.com/api/mcp`
- **Header:** `Authorization: Bearer gx_live_YOUR_API_KEY`

### 2. Stdio MCP (CLI Wrapper)

Run the GAAPx MCP server locally via `npx`:

```bash
npx -y @gaapx/mcp
```

---

## Client Setup Guides

<Tabs>
<TabItem value="claude" label="Claude Desktop" default>

Add the following snippet to your `claude_desktop_config.json`:

- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "gaapx": {
      "url": "https://app.gaapx.com/api/mcp",
      "headers": {
        "Authorization": "Bearer gx_live_YOUR_API_KEY"
      }
    }
  }
}
```

:::tip Using Stdio with Claude Desktop
If you prefer running via standard I/O (Stdio):
```json
{
  "mcpServers": {
    "gaapx": {
      "command": "npx",
      "args": ["-y", "@gaapx/mcp"],
      "env": {
        "GAAPX_API_KEY": "gx_live_YOUR_API_KEY"
      }
    }
  }
}
```
:::

</TabItem>

<TabItem value="cursor" label="Cursor">

Add the GAAPx MCP server to your `.cursor/mcp.json` file in your workspace root, or configure it via **Cursor Settings > Features > MCP**:

```json
{
  "mcpServers": {
    "gaapx-accounting": {
      "url": "https://app.gaapx.com/api/mcp",
      "headers": {
        "Authorization": "Bearer gx_live_YOUR_API_KEY"
      }
    }
  }
}
```

</TabItem>

<TabItem value="windsurf" label="Windsurf / Roo Code">

Add to your `mcp_config.json`:

```json
{
  "mcpServers": {
    "gaapx": {
      "url": "https://app.gaapx.com/api/mcp",
      "headers": {
        "Authorization": "Bearer gx_live_YOUR_API_KEY"
      }
    }
  }
}
```

</TabItem>
</Tabs>

---

## Exposed MCP Tools

The following tools are automatically registered and discoverable by your AI agent:

### 1. `get_ledger_summary`
Fetches trial balance totals, active journal entries, or Note 6 disclosure schedules for a specified period.

**Inputs:**
- `period` *(string, required)*: The accounting period (e.g. `"2026-Q3"`, `"2026-09"`).
- `basis` *(string, optional)*: Accounting standard: `"GAAP"` (default) or `"IFRS"`.
- `entity_id` *(string, optional)*: UUID of a specific legal entity (if scoped across multiple entities).

```json
// Example Agent Prompt:
// "Can you pull the Q3 trial balance from GAAPx and list the top 3 revenue accounts?"
```

---

### 2. `get_revenue_waterfall`
Retrieves ASC 606 revenue recognition waterfalls, deferred revenue balances, and unrecognized contract value.

**Inputs:**
- `fiscal_year` *(integer, required)*: Target fiscal year (e.g. `2026`).
- `granularity` *(string, optional)*: `"monthly"` (default) or `"quarterly"`.

---

### 3. `search_contracts`
Searches Master Service Agreements (MSAs), order forms, and amendments by customer name, dates, or terms.

**Inputs:**
- `query` *(string, required)*: Search keywords or customer legal name.
- `status` *(string, optional)*: Filter by status (`"active"`, `"pending_review"`, `"expired"`).
- `limit` *(integer, optional)*: Maximum number of records (default `10`).

---

### 4. `get_contract_details`
Fetches complete contract terms, performance obligations (POBs), Standalone Selling Prices (SSP), and linked invoices.

**Inputs:**
- `contract_id` *(string, required)*: UUID or contract number (e.g., `"CNT-2026-0042"`).

---

### 5. `check_asc606_compliance`
Runs automated validation against ASC 606 / IFRS 15 rules, checking for unallocated transaction prices, missing milestone attestations, or orphan billing lines.

**Inputs:**
- `contract_id` *(string, required)*: Target contract UUID.
- `rule_set` *(string, optional)*: `"standard"` or `"strict"`.

---

### 6. `query_accounting_policies`
Queries your company's approved accounting policy documentation and FASB topic interpretations stored in GAAPx.

**Inputs:**
- `topic` *(string, required)*: Topic name (e.g., `"ASC 606"`, `"ASC 842"`, `"Capitalized Commissions"`).

---

## Security & Scopes

- **Read-Only Enforcement**: If an API key is generated with **Read-Only** permissions, any tool attempting to mutate records or trigger state changes will be rejected with an `HTTP 403 Forbidden`.
- **Entity Isolation**: Restricted keys can only query data within their designated legal entity.
- **Audit Logging**: Every tool execution made through an MCP client is recorded in your GAAPx Audit Log with timestamps, calling agent metadata, and token IDs.

---

## Troubleshooting

### Connection Times Out
Ensure your client can reach `https://app.gaapx.com`. If you are behind an enterprise firewall or VPN, whitelist outgoing traffic to `app.gaapx.com` on port `443`.

### 401 Unauthorized Error
Verify that:
1. Your token starts with `gx_live_`.
2. The `Authorization` header includes the `Bearer ` prefix:
   ```
   Authorization: Bearer gx_live_...
   ```
3. The key has not expired or been revoked in the [GAAPx Admin Console](https://app.gaapx.com/admin/api).

---

## Need Help?
For technical support or feature requests, contact our developer team at [support@gaapx.ai](mailto:support@gaapx.ai).
