The Anaplan MCP server connects AI assistants to Anaplan's Integration API v2 through 68 structured tools, enabling natural language interaction with Anaplan workspaces and models.
Model Exploration
Browse workspaces, models, modules, line items, lists, views, dimensions, users, model calendar, and versions
Data Operations
Read cell data from module views and retrieve list items
Write values to specific module cells
Full CRUD operations on list items (add, update, delete)
Action Execution & Automation
Run imports, exports, processes, and delete actions
Monitor action status, download dump files for failed tasks, and cancel running tasks
File Management
Upload, download, and delete files within Anaplan models
Model Administration
Open, close, and bulk delete models
Set current period and fiscal year parameters
Large-Volume Data Handling
Create, retrieve, page through, and delete large-volume read requests for views and lists
Authentication & Compatibility
Supports basic auth, certificate auth, and OAuth2
Compatible with Claude Desktop, Claude Code, and any stdio-based MCP client
Claude Desktop prompts for tool approval before execution for safety
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Anaplan MCPlist all models in the 'Finance' workspace"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Anaplan MCP
Unofficial MCP server for Anaplan
A Model Context Protocol (MCP) server that connects AI assistants to Anaplan's Integration API v2. Gives LLMs like Claude direct access to browse workspaces, manage data, run imports/exports, and administer models through 68 structured tools, using your existing Anaplan credentials and permissions.
Built in TypeScript. Runs over stdio. Works with Claude Desktop, Claude Code, and any MCP-compatible client.
Why This Exists
Anaplan's Integration API is powerful but requires technical expertise to use directly. Most teams rely on a handful of model builders to navigate complex models, extract data, and run imports - creating bottlenecks when others need access to the same information.
This server wraps the API in 68 structured tools that AI assistants like Claude can call on your behalf. Explore models, pull data, run actions, and onboard new team members - all by asking in plain English instead of writing API calls or waiting for someone who knows the model.
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.
For model builders and consultants: Analyze model structure, trace formula dependencies, review line item configurations, and identify performance issues - all through conversation instead of clicking through hundreds of modules manually.
For IT and platform teams: Standard API access using your existing authentication and permissions. No new credentials, no elevated access. Open source for auditability. Anaplan data is processed by your AI assistant - locally or through your provider's environment depending on your setup.
Common Use Cases
Model Documentation:
"Show me the structure of the Supply Planning model"
"List all line items and their formulas in the Revenue module"
"What dimensions does the Margin line item use?"
Data Review:
"Pull the current pricing data for all products"
"Show me which list items were recently added"
"Read the forecast numbers for Q3 and summarize"
Impact Analysis:
"What modules use the Product list as a dimension?"
"Show all line items that reference Cost Per Unit"
"Which views include the Region dimension?"
Automation:
"Run the monthly demand import and show me the result"
"Export sales actuals and save to Downloads"
"Add these 50 new products to the master list"
Onboarding:
"Walk me through the modules in this model"
"How is this model structured? What are the key lists?"
"What changed in this model since last quarter?"
What It Can and Can't Do
What it can do
Browse workspaces, models, modules, lists, and views
Read cell data and list items
Write cell values and manage list items (add, update, delete)
Run imports, exports, processes, and delete actions
Upload and download files
Manage models (open, close, delete, set periods and fiscal year)
Query users, versions, and task history
Model Building Limitations
The Anaplan API does not support:
Creating modules or line items programmatically
Defining formulas through API
Building model structure from scratch
Configuring model calendar programmatically
For model building, use Anaplan's UI or Agent Studio.
Prerequisites
Node.js 18+ - download here
An Anaplan account with API access (any auth method - basic, certificate, or OAuth)
An MCP-compatible client - Claude Desktop (recommended), Claude Code, or any other MCP client
Setup
1. Clone and build
git clone https://github.com/larasrinath/anaplan-mcp.git
cd anaplan-mcp
npm install
npm run build2. Connect to Claude Desktop
Claude Desktop is the easiest way to use this server. Here's how to set it up:
Step 1: Open the config file
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
C:\Users\<YourUsername>\AppData\Roaming\Claude\claude_desktop_config.json
If the file doesn't exist yet, create it with {} as the contents.
Tip (Windows): You can type
%APPDATA%\Claudein the File Explorer address bar to jump straight to the folder.
Step 2: Add the Anaplan server
Replace <path> with the absolute path to your cloned repo (e.g. /Users/you/anaplan-mcp on macOS/Linux or C:/Users/you/anaplan-mcp on Windows - always use forward slashes).
Basic auth:
{
"mcpServers": {
"anaplan": {
"command": "node",
"args": ["<path>/dist/index.js"],
"env": {
"ANAPLAN_USERNAME": "user@company.com",
"ANAPLAN_PASSWORD": "your-password"
}
}
}
}For other auth methods, use the same structure with a different env block:
Certificate auth:
"env": {
"ANAPLAN_CERTIFICATE_PATH": "/path/to/cert.pem",
"ANAPLAN_PRIVATE_KEY_PATH": "/path/to/key.pem"
}ANAPLAN_CERTIFICATE_ENCODED_DATA_FORMAT can be added optionally; defaults to v2. Set v1 only for legacy tenants.
OAuth2 (device grant) - interactive, opens browser to authorize:
"env": {
"ANAPLAN_CLIENT_ID": "your-client-id"
}OAuth2 (authorization code) - non-interactive:
"env": {
"ANAPLAN_CLIENT_ID": "your-client-id",
"ANAPLAN_CLIENT_SECRET": "your-client-secret",
"ANAPLAN_OAUTH_AUTHORIZATION_CODE": "code-from-redirect",
"ANAPLAN_OAUTH_REDIRECT_URI": "https://your-app.com/callback"
}If your config file already has content, add mcpServers inside the existing top-level object - don't create a second {} block.
Step 3: Restart Claude Desktop
Quit Claude Desktop completely (right-click the system tray icon and quit - don't just close the window) and reopen it. You should see the Anaplan tools available (look for the hammer icon in the chat input area).
Troubleshooting:
"Unexpected non-whitespace" error - Your JSON is invalid. Make sure there's only one
{}object in the file and no trailing commas. Paste your config into jsonlint.com to check.Server disconnected - Run
node C:/path/to/anaplan-mcp/dist/index.jsin a terminal to see the actual error. Common causes: wrong path inargs, missingnpm run build, or Node.js not installed.401 Unauthorized when using tools - Your Anaplan credentials are wrong, or your account uses SSO (in which case basic auth won't work - use certificate or OAuth2 instead).
Connect to Claude Code
Copy .mcp.json.example to .mcp.json and fill in your credentials. The file is gitignored by default - never commit credentials to version control.
cp .mcp.json.example .mcp.jsonAlternatively, use the CLI:
claude mcp add anaplan -- node /absolute/path/to/anaplan-mcp/dist/index.jsOther MCP clients
Any MCP-compatible client that supports stdio transport can connect. The server expects to be launched as a subprocess with stdin/stdout for communication. Pass Anaplan credentials via environment variables.
Browser-based AI (claude.ai, ChatGPT)
Both claude.ai and ChatGPT now support remote MCP connectors. However, this server uses stdio transport (it runs as a local subprocess), so it cannot be connected directly from a browser. To use it from claude.ai or ChatGPT, you need to wrap it behind a remote MCP proxy. For local use, Claude Desktop or Claude Code are the simplest options.
Configuration
Environment variables
All configuration is done through environment variables. There are no config files, CLI flags, or settings menus.
Method | Env Vars | Description |
Certificate |
| Highest priority. PEM certificate + private key, authenticates via CACertificate flow. Data format defaults to |
OAuth2 (device grant) |
| Interactive device authorization flow. Set only |
OAuth2 (authorization code) |
| Non-interactive. Requires all four env vars. Code is single-use |
Basic |
| Lowest priority. Email + password, sends base64 credentials to auth endpoint |
You only need one set of credentials. If multiple are configured, the server picks the highest-priority method automatically.
Where to set environment variables
Claude Code config: Use the
"env"block in.mcp.json(file is gitignored by default)Claude Desktop config: Use the
"env"block in the JSON config (keeps credentials scoped to the server)Shell profile: Export in
.bashrc/.zshrcfor Claude Code CLI usageSystem environment: Set at the OS level if you prefer
Security note: Never commit credentials to version control. Env files and MCP config files are gitignored by default in this repo.
Permissions and Safety
What the server can do
This server has full access to whatever your Anaplan credentials allow. The 68 tools cover both read and write operations:
Read-only tools (safe to use freely):
show_*tools,read_cells,get_list_items,download_file,get_action_statusWrite tools (modify data):
write_cells,add_list_items,update_list_items,delete_list_itemsAction tools (trigger Anaplan processes):
run_import,run_export,run_process,run_deleteAdmin tools (model management):
close_model,open_model,bulk_delete_models,set_currentperiod,set_fiscalyear
Tool approval in Claude Desktop
Claude Desktop prompts you before each tool call. You'll see the tool name and parameters, and can approve or deny. This gives you a chance to review before any action runs. You can also use the "Allow for this chat" option for tools you trust.
Recommendations
Start with read-only. Ask Claude to explore your workspaces and models before running any write operations. Get comfortable with the tool output first.
Test in a dev workspace. If you have a non-production Anaplan workspace, use that while getting familiar with the tools.
Use least-privilege credentials. If your Anaplan admin can create a service account with limited workspace access, use that instead of your personal admin account.
Review before confirming write operations. When Claude proposes to run an import, write cells, or delete items, read the parameters carefully before approving.
Exports and imports are asynchronous. The server polls until they complete (up to 5 minutes). You can cancel a running task with
cancel_taskif needed.
Tools
Model Exploration (37 tools)
Tool | Description |
| List all accessible workspaces
|
| Get workspace details (size and active status)
|
| List models in a workspace
|
| List all models across all workspaces
|
| Get model details including state and workspace
|
| Check model status (legacy endpoint, often returns 405)
|
| List modules in a model
|
| Get module details by filtering module list
|
| List line items in a module (
|
| List all line items in a model (
|
| List dimensions for a line item
|
| List dimension items for a line item/dimension pair
|
| List saved and default views in a module
|
| List all views in a model (cross-module)
|
| Get view axis metadata (rows, columns, pages)
|
| List lists (dimensions) in a model
|
| Get items from a list
|
| Get list metadata including parent/properties/count
|
| List all items in a model-level dimension
|
| List selected dimension items for a view
|
| Resolve dimension items by names/codes
|
| List import actions in a model
|
| Get import metadata
|
| List export actions in a model
|
| Get export metadata
|
| List process actions in a model
|
| Get process metadata
|
| List files in a model
|
| List model actions (including deletes)
|
| Get action metadata
|
| Get current period
|
| Get fiscal year/calendar settings
|
| List version metadata
|
| Get current authenticated user
|
| List users in tenant scope
|
| Get user details by ID
|
| List task history for imports/exports/processes/actions
|
Bulk Data Operations (26 tools)
Tool | Description |
| Run export task, download output, optionally save locally with
|
| Upload file chunks, run import, and poll task completion
|
| Run process task and poll completion
|
| Run delete action task
|
| Initialize chunked upload, upload chunks, and complete file upload
|
| Download file by reading all chunk payloads
|
| Delete model file (irreversible)
|
| Get status for import/export/process/action task
|
| Close (archive) a model
|
| Open (wake up) a closed model
|
| Delete multiple closed models
|
| Set current period
|
| Update model fiscal year
|
| Set version switchover date
|
| Download failed import dump chunks (CSV)
|
| Download failed process dump chunks (CSV)
|
| Cancel running import/export/process/action task
|
| Create large-volume view read request
|
| Get large-volume view read request status
|
| Download a CSV page from view read request
|
| Delete large-volume view read request
|
| Create large-volume list read request
|
| Get large-volume list read request status
|
| Download a CSV page from list read request
|
| Delete large-volume list read request
|
| Reset list item index numbering
|
Transactional Operations (5 tools)
Tool | Description |
| Read cell data from a module view
|
| Write values to specific module cells
|
| Add new items to a list
|
| Update existing list items
|
| Delete list items
|
Architecture
src/
auth/ # Authentication providers (basic, certificate, oauth) + token manager
api/ # HTTP client with retry logic + 16 domain-specific API wrappers
tools/ # MCP tool registrations (exploration, bulk, transactional)
server.ts # Wires auth > client > APIs > MCP server
index.ts # Entry point (stdio transport)
docs/
api_docs/ # Anaplan API reference docs (Integration, ALM, SCIM, CloudWorks, Audit)
architecture/ # Runtime diagrams (request flow, trust boundary, subsystem map)
examples/ # Example output - FY26 Sales Forecast deck generated via MCPThree layers:
Auth layer - pluggable providers behind a common
AuthProviderinterface. TheAuthManagerselects the right provider from env vars and handles token lifecycle.API layer -
AnaplanClienthandles all HTTP communication with the Anaplan API. 16 domain wrappers provide typed methods for each endpoint. Auto-paginates list endpoints using Anaplan'smeta.pagingmetadata.Tools layer - registers MCP tools on the server with zod schemas for input validation. Each tool delegates to the appropriate API wrapper and formats results.
For detailed runtime diagrams (request flow, trust boundary, subsystem map) see docs/architecture/overview.md.
Custom Skills
The skills/ folder holds Claude Code project-level skills - reusable instruction sets that the AI assistant loads automatically during your session.
A template is provided at skills/example.md. Copy it, rename it, and fill in your instructions. Claude Code will pick it up as a skill available in this project.
Skills are gitignored by default (personal workflows vary), with only the example tracked. Add your own without worrying about committing them.
Disclaimers
Unofficial personal project - not affiliated with, endorsed by, or supported by Anaplan. Uses the official Anaplan Integration API v2 - no undocumented endpoints. Users are responsible for compliance with Anaplan's Terms of Service. No warranty provided; use at your own risk.
License
MIT - see LICENSE file for details. Covers the code in this repository only; Anaplan's API and service are subject to their own terms.