Anaplan MCP

Unofficial MCP server for Anaplan

The Problem

Anaplan’s Integration API is powerful but requires serious technical expertise. Most teams rely on a handful of model builders to navigate complex models, extract data, and run imports. Everyone else waits. That bottleneck slows down data reviews, onboarding, impact analysis, and routine workflows that should be self-serve.

The Solution: Anaplan MCP

This server wraps the Anaplan Integration API v2 in structured tools that AI assistants like Claude can call on your behalf. Instead of writing API calls or waiting for someone who knows the model, you ask in plain English:

Show me the structure of the Supply Planning model

Pull the current pricing data for all products

Run the monthly demand import and show me the result

Built in TypeScript with support for both stdio (local) and Streamable HTTP (remote) transports. Works with Claude Desktop, Claude Code, claude.ai, and any MCP-compatible client.

Who It’s For

Business users

Stop waiting for someone to pull data or explain how a model works. Ask Claude to show you the numbers, walk you through module structure, or run your regular imports.

Model builders & consultants

Analyze model structure, trace formula dependencies, review line item configurations, and identify performance issues through conversation instead of clicking through hundreds of modules manually.

IT & platform teams

Standard API access using your existing authentication and permissions. No new credentials, no elevated access. Open source for auditability.

What It Can Do

Model Exploration

Browse workspaces, models, modules, lists, views, and line items. Inspect import, export, and process definitions. Query users, versions, calendar settings, and task history.

Bulk Data Operations

Run imports, exports, processes, and delete actions with automatic task polling. Upload and download files with chunked transfer for large datasets. Manage models and large-volume reads for datasets over 1M cells.

Transactional Operations

Read cell data from module views. Write values to specific cells. Add, update, and delete list items.

Common Use Cases

Model documentation

Explore structure, list line items with formulas, check dimension usage, and understand how a model is composed.

Data review

Pull current data, identify recently added items, read forecast numbers, and get summaries without building custom exports.

Impact analysis

Find which modules use a specific list as a dimension, trace line-item references, and identify what a change would affect.

Automation

Run monthly imports, export actuals, add batches of new products to master lists, and chain multi-step workflows.

Onboarding

Walk new team members through module structure, explain how the model is organized, and answer questions about what each piece does.

Built-in orchestration guide
The server exposes an MCP resource (anaplan://orchestration-guide) that AI assistants read automatically. It teaches the correct tool sequences for every workflow: navigation patterns, read and write prerequisites, bulk import lifecycles, large-volume read pagination, and list mutation flows. Every tool description also includes prerequisite hints and next-step guidance, so the AI always knows what to call and in what order.
What it can't do
The Anaplan API does not support creating modules or line items, defining formulas, building model structure from scratch, or configuring the model calendar programmatically. For model building, use Anaplan’s UI or Agent Studio. This server covers everything the Integration API v2 exposes.

For implementation details (internals, module layout, client compatibility matrix, architecture diagrams), see the GitHub README. That is the canonical technical reference and always reflects the latest release.

Ready to set up? Jump to the platform-aware setup guide below.

Setup Guide

This guide is platform-aware. Pick your operating system below and the commands, file paths, and troubleshooting will switch to match. In Phase 2 you will also pick an authentication method: OAuth2 (recommended), Certificate, or Basic Auth. Both pickers stay in sync throughout the page.
Scope of this walkthrough
This walkthrough covers the local Claude Desktop setup only (stdio transport). Remote or cloud-hosted MCP deployment is not covered on this page.
Pick your platform:

Prerequisites

Ensure these are in place before starting.

RequirementMin VersionWhere to get it
Node.js18 or highernodejs.org LTS installer, or platform instructions below
GitAny recentPlatform instructions below
Claude DesktopLatestclaude.ai/download
Anaplan accountWith API accessAsk your Anaplan admin to enable API access if needed
Quick check
Open a terminal and run node --version. You should see v18.x.x or higher. If the command is not found, follow the install instructions in Phase 1, Step 2.

Phase 1: Clone and build the server

Complete this phase once, regardless of which auth method you choose.

1

Open a terminal

Press Windows + R, type cmd, and press Enter. Or search for “Command Prompt” in the Start menu. No admin privileges needed.
Open Terminal from Applications > Utilities, or press Cmd + Space and type “Terminal”.
Open your terminal emulator. On Ubuntu-based distros: Ctrl + Alt + T.
2

Install Node.js and Git (if not already present)

Run node --version and git --version first. If both report a valid version, skip this step.

# Option A: Homebrew (recommended)
brew install node

# Option B: direct installer
# Download the .pkg from https://nodejs.org and run it

Git installs automatically on first use (triggers Xcode Command Line Tools dialog):

git --version
# Click "Install" in the dialog that appears

Node.js (pick one):

# Option A: nvm (recommended)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc   # or ~/.zshrc on zsh
nvm install --lts

# Option B: package manager
sudo apt install nodejs npm     # Debian/Ubuntu
sudo dnf install nodejs         # Fedora/RHEL

Some distro package managers ship an older Node.js version. After installing, run node --version and confirm it is still 18 or higher. If not, use nvm.

Git:

sudo apt install git            # Debian/Ubuntu
sudo dnf install git            # Fedora/RHEL

After installing, open a new terminal window and confirm with node --version and git --version.

3

Navigate to your projects folder

Keep the repo in your user folder for easy access.

cd %USERPROFILE%
mkdir Projects
cd Projects
cd ~
mkdir -p Projects
cd Projects
4

Clone the repository

git clone https://github.com/larasrinath/anaplan-mcp.git
cd anaplan-mcp
Result: a folder at C:\Users\<your-username>\Projects\anaplan-mcp.
Result: a folder at ~/Projects/anaplan-mcp.
5

Install dependencies

npm install

Wait for it to finish. Warnings are normal. Only lines starting with npm ERR! indicate a real problem.

EACCES permission errors

If you see EACCES errors, do not use sudo. Fix ownership first, then retry:

sudo chown -R $(whoami) ~/.npm
npm install
6

Build the TypeScript source

npm run build

Compiles TypeScript to JavaScript. Only needed on first setup and after git pull. Success means no errors, and a dist/ folder appears inside anaplan-mcp.

7

Note your absolute path

You will need this exact path when configuring Claude Desktop.

echo %CD%

Output will look like: C:\Users\<your-username>\Projects\anaplan-mcp.

Use forward slashes in the JSON config
In claude_desktop_config.json, always use forward slashes in paths. Example: C:/Users/<your-username>/Projects/anaplan-mcp/dist/index.js.
pwd
Output example: /Users/<your-username>/Projects/anaplan-mcp.
Output example: /home/<your-username>/Projects/anaplan-mcp.

Copy this path. You will paste it into the config file in Phase 2.

Phase 2: Configure authentication

Pick your auth method below and the guide will filter to show only the steps that apply. Review the comparison table first if you’re not sure which to choose.

One auth method at a time
Use only ONE authentication method. If multiple env vars are present, the server picks the highest-priority method: OAuth2 > Certificate > Basic. Never set all three at once.

Authentication methods at a glance

OAuth2 (Recommended)CertificateBasic Auth
Best forMost users, SSO tenantsService accounts, automationSimple, non-SSO accounts
What you needOAuth2 client ID (device grant flow)Paths to your certificate .pem and private key .pem filesYour Anaplan login email and password
Token lifetime60 min idle (in-memory)Session-basedSession-based
SSO compatibleYesYesNo
Pick your auth method:

OAuth2 is recommended for most users, especially if your Anaplan account uses SSO. On first use, Claude Desktop shows an authorization link in chat. Click it, approve in Anaplan, then retry your request.

What you need: an Anaplan OAuth2 Client ID. Ask your workspace admin to create an OAuth2 client (Device Grant type) and share the Client ID.

A1

Open the Claude Desktop config file

Press Windows + R, type %APPDATA%\Claude, press Enter. Open claude_desktop_config.json in Notepad. If the file does not exist yet, create it as an empty file.

If the folder does not exist yet:

mkdir -p ~/Library/Application\ Support/Claude
# Open the config folder in Finder
open ~/Library/Application\ Support/Claude

# Or edit directly in terminal
nano ~/Library/Application\ Support/Claude/claude_desktop_config.json

If the folder does not exist yet:

mkdir -p ~/.config/Claude
# Edit in terminal
nano ~/.config/Claude/claude_desktop_config.json

# Or with a GUI editor
gedit ~/.config/Claude/claude_desktop_config.json
A2

Paste the OAuth2 configuration

If this is your only MCP server, you can replace the entire file contents with the block below. Otherwise, add or update only the anaplan entry inside mcpServers. Substitute your actual path and Client ID.

{
  "mcpServers": {
    "anaplan": {
      "command": "node",
      "args": ["C:/Users/<your-username>/Projects/anaplan-mcp/dist/index.js"],
      "env": {
        "ANAPLAN_CLIENT_ID": "your-client-id-here"
      }
    }
  }
}
{
  "mcpServers": {
    "anaplan": {
      "command": "node",
      "args": ["/Users/<your-username>/Projects/anaplan-mcp/dist/index.js"],
      "env": {
        "ANAPLAN_CLIENT_ID": "your-client-id-here"
      }
    }
  }
}
{
  "mcpServers": {
    "anaplan": {
      "command": "node",
      "args": ["/home/<your-username>/Projects/anaplan-mcp/dist/index.js"],
      "env": {
        "ANAPLAN_CLIENT_ID": "your-client-id-here"
      }
    }
  }
}
A3

Save and fully restart Claude Desktop

Save the file. Right-click the Claude icon in the system tray and choose Quit (do not just close the window). Reopen Claude Desktop.
Save the file. Quit Claude Desktop with Cmd + Q, or right-click the Dock icon and choose Quit. Reopen Claude Desktop.
Save the file. Right-click the Claude system tray icon and choose Quit. Reopen Claude Desktop.
First-use authorization
On first tool use, Claude will display an authorization URL in chat. Open it in your browser, approve in Anaplan, then re-run your request.

Option B: Certificate authentication

Best for service accounts and automation pipelines. Requires a .pem certificate and private key registered with your Anaplan tenant.

What you need:

  • A .pem certificate file registered in your Anaplan tenant
  • The matching private key .pem file
  • The absolute paths to both files
B1

Open the Claude Desktop config file

Press Windows + R, type %APPDATA%\Claude, press Enter. Open claude_desktop_config.json in Notepad. If the file does not exist yet, create it as an empty file.

If the folder does not exist yet:

mkdir -p ~/Library/Application\ Support/Claude
# Open the config folder in Finder
open ~/Library/Application\ Support/Claude

# Or edit directly in terminal
nano ~/Library/Application\ Support/Claude/claude_desktop_config.json

If the folder does not exist yet:

mkdir -p ~/.config/Claude
# Edit in terminal
nano ~/.config/Claude/claude_desktop_config.json

# Or with a GUI editor
gedit ~/.config/Claude/claude_desktop_config.json
B2

Paste the Certificate configuration

If this is your only MCP server, you can replace the file contents with the block below. Otherwise, add or update only the anaplan entry inside mcpServers. Use absolute paths to your .pem files. On Windows, use forward slashes.

{
  "mcpServers": {
    "anaplan": {
      "command": "node",
      "args": ["C:/Users/<your-username>/Projects/anaplan-mcp/dist/index.js"],
      "env": {
        "ANAPLAN_CERTIFICATE_PATH": "C:/certs/anaplan-cert.pem",
        "ANAPLAN_PRIVATE_KEY_PATH": "C:/certs/anaplan-key.pem"
      }
    }
  }
}
{
  "mcpServers": {
    "anaplan": {
      "command": "node",
      "args": ["/Users/<your-username>/Projects/anaplan-mcp/dist/index.js"],
      "env": {
        "ANAPLAN_CERTIFICATE_PATH": "/Users/<your-username>/certs/anaplan-cert.pem",
        "ANAPLAN_PRIVATE_KEY_PATH": "/Users/<your-username>/certs/anaplan-key.pem"
      }
    }
  }
}
{
  "mcpServers": {
    "anaplan": {
      "command": "node",
      "args": ["/home/<your-username>/Projects/anaplan-mcp/dist/index.js"],
      "env": {
        "ANAPLAN_CERTIFICATE_PATH": "/home/<your-username>/certs/anaplan-cert.pem",
        "ANAPLAN_PRIVATE_KEY_PATH": "/home/<your-username>/certs/anaplan-key.pem"
      }
    }
  }
}
Legacy tenants only
If your tenant is legacy (pre-2020), also add "ANAPLAN_CERTIFICATE_ENCODED_DATA_FORMAT": "v1" inside the env block. Most tenants do not need this.
B3

Save and fully restart Claude Desktop

Fully quit Claude Desktop and reopen it. No browser authorization step is needed for certificate auth.

Option C: Basic Authentication (Username / Password)

Simplest to configure but only works for accounts that do not use SSO. If your company uses Single Sign-On to log in to Anaplan, use Option A or B instead.

C1

Open the Claude Desktop config file

Press Windows + R, type %APPDATA%\Claude, press Enter. Open claude_desktop_config.json in Notepad. If the file does not exist yet, create it as an empty file.

If the folder does not exist yet:

mkdir -p ~/Library/Application\ Support/Claude
# Open the config folder in Finder
open ~/Library/Application\ Support/Claude

# Or edit directly in terminal
nano ~/Library/Application\ Support/Claude/claude_desktop_config.json

If the folder does not exist yet:

mkdir -p ~/.config/Claude
# Edit in terminal
nano ~/.config/Claude/claude_desktop_config.json

# Or with a GUI editor
gedit ~/.config/Claude/claude_desktop_config.json
C2

Paste the Basic Auth configuration

If this is your only MCP server, you can replace the file contents with the block below. Otherwise, add or update only the anaplan entry inside mcpServers.

{
  "mcpServers": {
    "anaplan": {
      "command": "node",
      "args": ["C:/Users/<your-username>/Projects/anaplan-mcp/dist/index.js"],
      "env": {
        "ANAPLAN_USERNAME": "you@company.com",
        "ANAPLAN_PASSWORD": "your-anaplan-password"
      }
    }
  }
}
{
  "mcpServers": {
    "anaplan": {
      "command": "node",
      "args": ["/Users/<your-username>/Projects/anaplan-mcp/dist/index.js"],
      "env": {
        "ANAPLAN_USERNAME": "you@company.com",
        "ANAPLAN_PASSWORD": "your-anaplan-password"
      }
    }
  }
}
{
  "mcpServers": {
    "anaplan": {
      "command": "node",
      "args": ["/home/<your-username>/Projects/anaplan-mcp/dist/index.js"],
      "env": {
        "ANAPLAN_USERNAME": "you@company.com",
        "ANAPLAN_PASSWORD": "your-anaplan-password"
      }
    }
  }
}
Password is stored in plain text

Your password sits in plain text in this config file. Never commit it to source control, and keep the file private.

Set restrictive permissions: chmod 600 <config-file-path>.
C3

Save and fully restart Claude Desktop

Fully quit Claude Desktop and reopen it.

Phase 3: Verify the connection

V1

Confirm tools are loaded

After reopening Claude Desktop, look for a hammer icon (🛠️) in the chat input area. Click it. You should see Anaplan tools listed.

If the hammer icon is not there, see Troubleshooting below.

V2

Run a safe first test

Type this into Claude Desktop:

“Show me my Anaplan workspaces”

Claude will ask you to approve the show_workspaces tool call. Click Allow. You should see your workspace names and IDs returned.

V3

OAuth2 only: complete the authorization flow

If using OAuth2, Claude shows a URL on first use.

  1. Copy the URL Claude displays and open it in your browser.
  2. Log in to Anaplan and approve the device request.
  3. Return to Claude Desktop and re-run your request.

Tokens are kept in memory. After 60 minutes idle or a Claude Desktop restart, you will need to re-authorize.

Environment variable reference

This section follows the auth selector above and shows only the variables for the currently selected auth method.

VariableDescription
ANAPLAN_CLIENT_IDYour Anaplan OAuth2 client ID (device grant flow)
VariableDescription
ANAPLAN_CERTIFICATE_PATHAbsolute path to your .pem certificate file
ANAPLAN_PRIVATE_KEY_PATHAbsolute path to your private key .pem file
ANAPLAN_CERTIFICATE_ENCODED_DATA_FORMATOptional. Set v1 for legacy tenants only. Defaults to v2
VariableDescription
ANAPLAN_USERNAMEYour Anaplan login email address
ANAPLAN_PASSWORDYour Anaplan password

Troubleshooting

SymptomFix
Unexpected non-whitespace errorJSON config is invalid. Paste it into jsonlint.com. Common causes: trailing comma or duplicate {} block.
Server disconnected in ClaudeRun node C:/Users/<your-username>/Projects/anaplan-mcp/dist/index.js in Command Prompt to see the real error. Common causes: wrong path (use forward slashes), missing npm run build, or Node.js not installed.
401 UnauthorizedCredentials are wrong, or tenant uses SSO. Switch from Basic to Certificate or OAuth2.
OAuth refresh failedSession expired (60 min idle or server restarted). Re-authorize in Claude Desktop and retry.
Hammer icon missing in ClaudeClaude Desktop was not fully restarted. Right-click the system-tray icon and choose Quit, then reopen.
npm run build failsNode.js version too old. Run node --version. Install Node.js 18+ from nodejs.org.
'node' is not recognizedNode.js not installed or not in PATH. Reinstall from nodejs.org with the installer’s default options, then open a fresh Command Prompt.
Backslash paths cause errors in JSONIn claude_desktop_config.json, always use forward slashes. Example: C:/Users/<your-username>/Projects/anaplan-mcp/dist/index.js.
SymptomFix
Unexpected non-whitespace errorJSON config is invalid. Paste it into jsonlint.com. Common causes: trailing comma or duplicate {} block.
Server disconnected in ClaudeRun node ~/Projects/anaplan-mcp/dist/index.js in Terminal to see the real error. Common causes: wrong path, missing npm run build, or Node.js not installed.
401 UnauthorizedCredentials are wrong, or tenant uses SSO. Switch from Basic to Certificate or OAuth2.
OAuth refresh failedSession expired (60 min idle or server restarted). Re-authorize in Claude Desktop and retry.
Hammer icon missing in ClaudeClaude Desktop was not fully restarted. Press Cmd + Q (or right-click the Dock icon and choose Quit), then reopen.
npm run build failsNode.js version too old. Run node --version. Upgrade via brew upgrade node, or install Node.js 18+ from nodejs.org.
command not found: nodeNode.js not installed or not in PATH. Install with brew install node, then open a fresh Terminal.
EACCES / permission denied on npm installDo not use sudo. Fix npm ownership: sudo chown -R $(whoami) ~/.npm, then retry npm install.
Config file not foundThe folder may not exist yet. Create it: mkdir -p ~/Library/Application\ Support/Claude.
SymptomFix
Unexpected non-whitespace errorJSON config is invalid. Paste it into jsonlint.com. Common causes: trailing comma or duplicate {} block.
Server disconnected in ClaudeRun node ~/Projects/anaplan-mcp/dist/index.js in your terminal to see the real error. Common causes: wrong path, missing npm run build, or Node.js not installed.
401 UnauthorizedCredentials are wrong, or tenant uses SSO. Switch from Basic to Certificate or OAuth2.
OAuth refresh failedSession expired (60 min idle or server restarted). Re-authorize in Claude Desktop and retry.
Hammer icon missing in ClaudeClaude Desktop was not fully restarted. Right-click the tray icon and choose Quit, then reopen.
npm run build failsNode.js version too old. Run node --version. Install 18+ via nvm install --lts, or sudo apt install nodejs on Debian/Ubuntu.
command not found: nodeNode.js not installed or not in PATH. Install via nvm (recommended) or sudo apt install nodejs npm, then open a fresh terminal.
EACCES / permission denied on npm installDo not use sudo. Fix npm ownership: sudo chown -R $(whoami) ~/.npm, then retry npm install.
Config file not foundThe folder may not exist yet. Create it: mkdir -p ~/.config/Claude.
The fastest diagnosis

When in doubt, open a terminal and run the server directly:

node C:/Users/<your-username>/Projects/anaplan-mcp/dist/index.js
node ~/Projects/anaplan-mcp/dist/index.js

The error output is always the fastest way to diagnose any issue.

Quick reference: key paths

ItemPath
Claude Desktop config%APPDATA%\Claude\claude_desktop_config.json
Server entry pointC:\Users\<your-username>\Projects\anaplan-mcp\dist\index.js
Source codeC:\Users\<your-username>\Projects\anaplan-mcp\src\
Orchestration guideanaplan://orchestration-guide (auto-loaded by Claude)
ItemPath
Claude Desktop config~/Library/Application Support/Claude/claude_desktop_config.json
Server entry point~/Projects/anaplan-mcp/dist/index.js
Source code~/Projects/anaplan-mcp/src/
Orchestration guideanaplan://orchestration-guide (auto-loaded by Claude)
ItemPath
Claude Desktop config~/.config/Claude/claude_desktop_config.json
Server entry point~/Projects/anaplan-mcp/dist/index.js
Source code~/Projects/anaplan-mcp/src/
Orchestration guideanaplan://orchestration-guide (auto-loaded by Claude)
Posted on:
February 9, 2026
Length:
15 minute read, 3015 words
Categories:
Projects
Tags:
Anaplan MCP TypeScript AI Open Source
See Also:
MacOS ex-Retina Display