Imagine telling an AI agent: "Pull the demand variance report across all planning modules and tell me what changed since last Monday's S&OP cycle." It does it. No exports, no pivot tables, no waiting for someone to run the numbers.
Or: "Check all SKUs below safety stock threshold right now, cross-reference with open inbound shipments, and draft a short brief I can send to the ops team before the 9am standup."
Or: "Schedule a daily check on the Q3 capacity scenario. If utilisation crosses 95%, flag it and summarise which product lines are driving it."
This is not a demo. It is what becomes possible when AI agents get real, authenticated access to your planning model. And as of early 2026, for Anaplan users, something very close to this just arrived.
An unofficial Model Context Protocol server for Anaplan appeared on GitHub. Seventy tools. Real Integration API access. OAuth2 authentication. Works with Claude today. Here is what it actually means.
First: What Is MCP and What Is an Agent?
Two terms worth grounding before we go further, because both get used loosely.
MCP (Model Context Protocol) is an open standard that defines how AI models connect to external tools and data sources. Think of it as a plug format: instead of every AI integration being a custom, one-off build, MCP gives you a standard socket. An MCP server wraps an API or data source into a set of named tools with defined inputs and outputs. The AI model can then discover, select, and call those tools autonomously. One protocol, any number of integrations.
In supply chain terms: MCP is what lets an AI agent call your ERP, your TMS, your planning tool, and your carrier API using the same orchestration pattern rather than four separate bespoke integrations.
An agent is an AI system that does not just respond to a single prompt but reasons across multiple steps, selects tools, takes actions, and loops until it has completed a goal. It is the difference between asking a question and delegating a task. A chatbot answers. An agent works.
In planning terms: a chatbot tells you the safety stock formula. An agent checks your current inventory position, compares it to the formula output, identifies which SKUs are exposed, queries the inbound order pipeline, and comes back with a prioritised action list.
What the Anaplan MCP Does
The server wraps Anaplan's Integration API v2 into 70 structured tools across three categories. Authentication uses OAuth2 device grant. You authorise once, the agent works within your existing Anaplan permissions. It cannot do anything your credentials would not allow.
Model Exploration covers browsing and inspecting everything inside an Anaplan workspace: workspaces, models, modules, views, line items, lists, dimensions, versions, users, fiscal calendars, task history. This is the read-the-map layer, understanding structure before touching data.
Bulk Data Operations handles the heavy lifting: running imports, exports, and processes with automatic async polling; uploading and downloading files with chunked transfer for large datasets; managing model state (open, close, archive); reading large views and lists via paginated requests. The server handles the orchestration. Fire the job, wait for completion, return the result.
Transactional Operations is the fine-grained layer: reading cell data from specific module views, writing values to specific cells, and managing list items (add, update, delete).
The full list of all 70 tools is at the bottom of this post.
What This Unlocks
The use cases that become genuinely tractable are the ones that are currently tedious and manual, not the ones that sound impressive in a pitch deck.
S&OP cycle preparation: an agent that pulls actuals from the relevant modules, compares them against the prior cycle's plan, surfaces the significant variances, and produces a structured pre-read document. What currently takes a planner two to three hours of export-and-pivot work becomes a scheduled agent run.
Data integrity checks: before an S&OP cycle, run an agent that checks list membership, validates that all required dimension items exist, flags any line items that have not been updated within the expected window. Catches the kind of silent data quality issues that only surface mid-meeting.
Process orchestration: Anaplan processes are often triggered manually by a super-user who knows the right sequence and the right timing. An agent can execute that sequence reliably, handle the async completion polling, check the output for anomalies, and report back.
Cross-module variance analysis: instead of exporting five modules to Excel and building a comparative view manually, ask the agent to read the relevant views, identify where actuals are diverging from plan by more than a defined threshold, and explain what it found.
None of this requires building new Anaplan models. It runs on top of what already exists.
The Hard Limit
Here is the part the documentation is honest about, and where honesty matters.
The Anaplan Integration API does not support programmatic model building. You cannot create a module. You cannot define a formula. You cannot add a line item, configure a hierarchy, set a time scale, or change how the model calculates anything. Everything structural about an Anaplan model still lives in the UI or in Anaplan's own tooling.
What this means: the agent can operate within a model that a human built. It can read the plan, trigger processes the model's architect defined, write data into cells that already exist, and export results. It cannot change what the model calculates or how it is structured.
This is not a criticism of the MCP. It is a constraint of the underlying API. The MCP is doing exactly what the API allows, which is the correct engineering decision. Wrapping a limited API well is more valuable than pretending the limits do not exist.
Why the Limit Is the Interesting Part
Most conversations about AI in planning focus on the intelligence layer: better forecasting algorithms, smarter scenario analysis, more sophisticated optimisation. The assumption is that intelligence is the bottleneck.
Having deployed production AI systems in enterprise environments for several years, I would argue the bottleneck is almost always the access layer. Getting an agent to reliably read and write the right data, in the right systems, at the right time, without requiring a developer to maintain a bespoke integration: that is the unglamorous work that determines whether the intelligence layer gets used at all.
The Anaplan MCP solves the access layer for Anaplan specifically. That is not the whole problem. It is the first half of the problem, and most organisations have not solved it yet.
The number of companies running Anaplan with sophisticated models built, that still export data to Excel for any analysis that goes beyond the standard reports, is larger than it should be. An agent that can query the model directly, trigger the right processes, and return results in natural language closes that gap. Not all of it. Enough to matter.
What Comes Next
The structural limit, no programmatic model modification, is where the trajectory gets interesting.
Anaplan has been moving toward more agentic tooling through Agent Studio and expanding API capabilities. The direction is clearly toward more programmatic control over model structure, not less. The question is pace and scope.
When an agent can not only query a planning model but reconfigure it in response to changing conditions, the use case changes entirely. An agent that adjusts a safety stock formula when lead time variability exceeds a threshold, regenerates the scenario, and surfaces the updated output without a human touching the model: that is a different category of capability. Not today. But the access patterns and orchestration architecture being built now are exactly what that future runs on.
The Anaplan MCP is an early, honest implementation of that architecture. Worth paying attention to.
The repository is at github.com/larasrinath/anaplan-mcp.
All 70 Tools
Model Exploration (37 tools)
| Tool | Description |
|---|---|
show_workspaces | List all accessible workspaces |
show_workspacedetails | Get workspace details including size and active status |
show_models | List models in a workspace with optional state filter |
show_allmodels | List all models across all workspaces |
show_modeldetails | Get model details including state and workspace |
show_modelstatus | Check model status |
show_modules | List modules in a model |
show_moduledetails | Get module details |
show_lineitems | List line items in a module |
show_alllineitems | List all line items in a model |
show_lineitem_dimensions | List dimensions for a line item |
show_lineitem_dimensions_items | List dimension items for a line item and dimension pair |
show_savedviews | List saved and default views in a module |
show_allviews | List all views in a model across modules |
show_viewdetails | Get view axis metadata: rows, columns, pages |
show_lists | List dimensions in a model |
get_list_items | Get items from a list |
show_listmetadata | Get list metadata including parent, properties, and count |
show_dimensionitems | List all items in a model-level dimension |
show_viewdimensionitems | List selected dimension items for a view |
lookup_dimensionitems | Resolve dimension items by names or codes |
show_imports | List import actions in a model |
show_importdetails | Get import metadata |
show_exports | List export actions in a model |
show_exportdetails | Get export metadata |
show_processes | List process actions in a model |
show_processdetails | Get process metadata |
show_files | List files in a model |
show_actions | List model actions including deletes |
show_actiondetails | Get action metadata |
show_currentperiod | Get current period |
show_modelcalendar | Get fiscal year and calendar settings |
show_versions | List version metadata |
show_currentuser | Get current authenticated user |
show_users | List users in tenant scope |
show_userdetails | Get user details by ID |
show_tasks | List task history for imports, exports, processes, and actions |
Bulk Data Operations (28 tools)
| Tool | Description |
|---|---|
run_export | Run export task, download output, optionally save locally |
run_import | Upload file chunks, run import, and poll task completion |
run_process | Run process task and poll completion |
run_delete | Run delete action task |
upload_file | Initialize chunked upload, upload chunks, complete file upload |
download_file | Download file by reading all chunk payloads |
delete_file | Delete model file (irreversible) |
get_action_status | Get status for any import, export, process, or action task |
close_model | Close (archive) a model |
open_model | Open (wake up) a closed model |
bulk_delete_models | Delete multiple closed models |
set_currentperiod | Set current period |
set_fiscalyear | Update model fiscal year |
set_versionswitchover | Set version switchover date |
download_importdump | Download failed import dump chunks as CSV |
download_processdump | Download failed process dump chunks as CSV |
cancel_task | Cancel a running import, export, process, or action task |
create_view_readrequest | Create large-volume view read request |
get_view_readrequest | Get large-volume view read request status |
get_view_readrequest_page | Download a CSV page from a view read request |
delete_view_readrequest | Delete large-volume view read request |
preview_list | Preview up to 1,000 records from a large list as CSV |
create_list_readrequest | Create large-volume list read request |
get_list_readrequest | Get large-volume list read request status |
get_list_readrequest_page | Download a CSV page from a list read request |
delete_list_readrequest | Delete large-volume list read request |
reset_list_index | Reset list item index numbering |
download_optimizer_log | Download Optimizer solver log for a completed action |
Transactional Operations (5 tools)
| Tool | Description |
|---|---|
read_cells | Read cell data from a module view |
write_cells | Write values to specific module cells |
add_list_items | Add new items to a list |
update_list_items | Update existing list items |
delete_list_items | Delete list items |