planist-mcp
This server allows AI agents to manage and interact with a Planist workspace. It provides tools for page management and reactive variable management.
Page Management
List Pages (
planist_list_pages): Retrieve all accessible pages, optionally filtered by kind (Docs, Sheets, Slides, Edgeless, Design, Dashboard).Read Page (
planist_read_page): Fetch the AST, Markdown, or structural representation of a page by its ID.Propose Page Edit (
planist_propose_page_edit): Submit a proposed page content change for human review before applying.
Reactive Variable Management
List Variables (
planist_list_variables): List all reactive typed variables in the project.Get Variable (
planist_get_variable): Fetch current value, type contract, and binding references for a variable.Update Variable (
planist_update_variable): Change a variable's value, triggering reactive updates across bound components.
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., "@planist-mcpList the pages in my 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.
š Planist-MCP
Model Context Protocol (MCP) Server for Planist APOS
Connect Claude, Cursor, and External AI Agents directly to your Planist Workspace.
š Overview
Planist-MCP is the official Model Context Protocol server for Planist ā the Agentic Project Operating System (APOS).
By isolating AI interactions into an out-of-process MCP server, Planist ensures maximum data security, zero in-process script execution vulnerabilities, and seamless compatibility with Claude Desktop, Cursor, and custom AI agent frameworks.
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā External AI Ecosystem (Out-of-Process) ā
ā ā
ā [ Claude / LLM ] āā> [ Planist-MCP Server (TS) ] ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā (JSON-RPC stdio / HTTP)
ā¼
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Planist Desktop Application (APOS) ā
ā ā
ā 1. Host-Local API Listener (127.0.0.1:8080) ā
ā 2. AI Grant Validation & Proposal Review Panel ā
ā 3. ProjectAuthority (Typed Transaction Write-Back) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāRelated MCP server: gitbook-mcp
⨠Features & Capabilities
š Doc (
docs): Inspect Markdown block structures, append new sections, and propose document diffs (LivePageProposal).š Sheet (
sheet): Read/write specific cell ranges (A1:D20), evaluate formulas, and trigger data-driven chart projections.š¼ļø Slide (
slide): Generate structural Markdown slides with rendering hints and speaker notes (Speaker Notes).šØ Edgeless (
edgeless): Query spatial node cards, supply approximate node placements (letting Planist's internal engine layout the canvas), and draw vector ink strokes.š Design (
design): Query exact UI element trees, create vector frames with exact geometry(x, y, w, h), and export SVG previews.š Dashboard (
dashboard): Select components, bind metric data variables, and set up dynamic KPI dashboard grids.ā” Reactive Variable Substrate: List, inspect, and update project-scoped reactive variables (
planist_update_variable), driving real-time updates across bound Sheets, Dashboards, and Docs!
š ļø MCP Tools Specification
1. Workspace & Page Lifecycle Tools
Tool Name | Parameters | Description |
|
| List accessible pages in the workspace (filtered by |
|
| Read the AST, Markdown, or structural block representation of a specific page by its Stable ID. |
|
| Submit a structured page edit proposal ( |
2. Reactive Project Variable Tools
Tool Name | Parameters | Description |
| None | List all reactive typed variables in the Project Variable Substrate. |
|
| Fetch current value, type contract, and UI binding references for a variable. |
|
| Update a project variable value, driving automatic reactive UI updates across bound Sheet cells, Dashboard KPIs, and Docs (Execute ā Variable ā Plan loop). |
š¦ Installation & Build
# Clone the repository
git clone https://github.com/MiuDog/planist-mcp.git
cd planist-mcp
# Install dependencies
npm install
# Build TypeScript code to dist/
npm run buildāļø Configuration & Setup
Integrating with Claude Desktop
Add the following to your claude_desktop_config.json (located at %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"planist-mcp": {
"command": "node",
"args": ["C:/Projects/planist-mcp/dist/index.js"],
"env": {
"PLANIST_API_HOST": "http://127.0.0.1:8080",
"PLANIST_GRANT_TOKEN": "<YOUR_LOCAL_GRANT_TOKEN>"
}
}
}
}š Security & Human-in-the-Loop Governance
Out-of-Process Isolation: The MCP server runs outside Planist's main Flutter execution thread.
Local Host Listener: API connections are strictly bound to
127.0.0.1(ADR-0029).Human Approval: Edit proposals sent via
planist_propose_page_editmust be approved by human users in the Planist Review Panel unless authorized by an active AI Capability Grant (ADR-0034).
Planist-MCP ā Empowering Intelligent Collaboration for Planist.
Planist Core Repository ⢠MCP Protocol Docs
Available Tools
6 toolsplanist_get_variableA
Get the current value, type contract, and binding references for a specific project variable.
| Name | Required | Description | Default |
|---|---|---|---|
| variableKey | Yes | The unique key of the project variable (e.g. 'monthly_revenue', 'user_growth_rate'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses the read-only nature via 'Get' and outlines the returned fields, but provides no detail on error behavior (e.g., missing variable) or side effects. This is adequate but not rich for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately states the action and the resource. Every word contributes value; there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter, no output schema) and the description covers what the operation does and what it returns. Minor gaps like not-found behavior and output format are present, but the core invocation context is sufficiently complete given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter variableKey, including an example. The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' with the resource 'project variable', and specifies the exact return payload (current value, type contract, binding references). This clearly distinguishes it from sibling tools like list_variables (listing) and update_variable (modifying).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving a single variable by key, but it does not explicitly state when to prefer this over list_variables or other siblings. No direct exclusions or alternatives are mentioned, leaving the guidance implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
planist_list_pagesA
List all accessible pages (Docs, Sheet, Slide, Edgeless, Design, Dashboard) in the Planist project workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| kindFilter | No | Optional filter by PageKind: docs, sheet, slide, edgeless, design, dashboard |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states 'List all accessible pages', clearly implying a read-only operation, but it does not disclose other behavioral traits such as pagination, sorting, or any additional side effects. This is adequate for a simple list operation but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and resource, with no redundant or extra information. Every word contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with one optional parameter and no output schema, the description sufficiently conveys the tool's purpose and scope. It could mention return structure, but that is not strictly necessary for such a straightforward operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, kindFilter, has a complete description in the schema. The tool description enumerates the page types (docs, sheet, slide, edgeless, design, dashboard), which aligns with the parameter's allowed values but does not add extra semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action (List), the resource (pages), and the scope (all accessible pages in the Planist project workspace). It also enumerates supported page types, distinguishing it from sibling tools like planist_read_page and planist_list_variables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: call this when you need to see all accessible pages in the workspace. However, it does not explicitly mention alternatives or when not to use it, though the tool's purpose is distinct enough from siblings that context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
planist_list_variablesA
List all reactive typed variables in the Project variable substrate (bound to Sheet cells, Dashboard KPIs, Docs, and Workflows).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. The verb 'List' clearly implies a read operation, and the domain context (Project variable substrate and binding locations) adds useful scope, but the description omits details such as whether results are paginated, what metadata is returned, or any authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the action, target, and scope without redundancy. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless list operation, the description provides sufficient context about what is being listed and the domain scope. There is no output schema, but the description's 'List all...' strongly implies a list result; adding return shape would be a minor enhancement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty and there are zero parameters, so the baseline is 4. There is no parameter information needed, and the description does not introduce new parameter-like semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' with a clear resource: 'all reactive typed variables in the Project variable substrate'. It distinguishes this listing tool from sibling tools like planist_list_pages and planist_get_variable by specifying variable-bound contexts (Sheet cells, Dashboard KPIs, Docs, Workflows).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for enumerating all reactive typed variables, especially the 'List all' phrasing and scope mentions. However, it does not explicitly state when to prefer this over planist_get_variable or planist_update_variable, nor does it provide exclusions or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
planist_propose_page_editA
Submit a page edit proposal (LivePageProposal) to Planist for human review and atomic transaction write-back.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | Target Planist page stable ID. | |
| summary | Yes | Summary explanation of the proposed changes for the user. | |
| markdownContent | Yes | The proposed new or replacement Markdown/block content. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses a key behavioral trait: the submission is a proposal that goes through human review and atomic write-back, which adds value beyond the tool name. Yet without annotations, it omits details about return values, whether the submission is asynchronous, failure modes, or follow-up actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, direct sentence that front-loads the action and outcome. No filler or repetition; every word contributes to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives the essential purpose and process, but with no annotations or output schema, it lacks detail on the proposal submission lifecycle, expected response, error handling, and post-submission steps. It is adequate for basic understanding but not fully complete for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with clear descriptions for pageId, summary, and markdownContent. The tool description adds no additional parameter semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Submit a page edit proposal' with a specific resource and process ('for human review and atomic transaction write-back'). It distinguishes from direct edit/update tools by emphasizing the proposal nature, though it doesn't explicitly contrast with siblings like planist_update_variable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage context through 'for human review and atomic transaction write-back', indicating this tool is for proposing edits that require review. However, it gives no explicit guidance on when to use this vs. other tools (e.g., direct updates) or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
planist_read_pageA
Read the AST, Markdown, or structural block representation of a specific Planist page by its Stable ID.
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The stable ID of the Planist page to read. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the operation is a read and lists possible representations, which adds some context. However, it is ambiguous whether all representations are returned or if one is chosen based on some unstated condition, and there is no mention of permission requirements, error behavior, or output format nuances.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action and resource, followed by clarifying details. There is no redundancy or unnecessary words, making it an efficient and model-friendly description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool, the description is fairly adequate, but the 'or' between AST, Markdown, and structural block representation leaves ambiguity about the actual output. Since there is no output schema, this missing detail is noteworthy and prevents a higher score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already fully documents the single parameter. The description repeats 'Stable ID' from the schema description without adding extra semantic meaning or usage details, so it stays at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Read') with a clear resource ('Planist page') and specifies the output types (AST, Markdown, structural block representation) and the identifier (Stable ID). This clearly distinguishes it from sibling tools like planist_list_pages, which lists pages, and the variable-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to fetch a page's representation when you have its Stable ID, but it does not explicitly state when to use it over alternatives or mention any exclusions. There is no guidance on selecting between the representation types or when a different tool might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
planist_update_variableA
Update a typed project variable value. This triggers reactive UI updates across bound Sheet cells, Dashboard widgets, and Docs (Execute -> Variable -> Plan loop).
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | New value matching the variable's strict type contract (number, string, boolean, JSON). | |
| summary | No | Optional audit reason or Workflow run reference for updating the variable. | |
| variableKey | Yes | The target variable key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for disclosing behavioral traits. It explicitly mentions that updating triggers reactive UI updates across Sheet cells, Dashboard widgets, and Docs, which is a non-obvious side effect. It also references the 'Plan loop' context. Missing are permission requirements, reversibility, or failure modes, but the disclosed reactive behavior adds significant value beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action in the first sentence. The second sentence adds valuable behavioral context without redundancy. Every word earns its place; it is appropriately sized for a simple update tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter, 100% schema-covered update tool with no output schema, the description is largely complete. It explains what the tool does, the trigger effect on the reactive UI, and the loop context. It does not mention prerequisites like permissions or error handling, but these are not critical for a straightforward variable update, and the schema covers parameter semantics. A score of 4 reflects that it goes beyond the minimum viable description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add parameter-level details beyond what the schema already provides. It repeats 'typed' and 'strict type contract' from the schema but does not clarify value formats, constraints, or optionality beyond the schema descriptions. No compensation needed, but also no added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Update a typed project variable value.' This is a specific verb+resource combination. The sibling tools are all read-only or propose operations (list, read, get, propose), so 'update' uniquely distinguishes this as the mutation tool for variables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you need to change a variable value) but does not explicitly contrast with alternatives or state exclusions. It provides useful context about reactive UI updates and the 'Execute -> Variable -> Plan loop,' which helps the agent understand the impact, but it does not say 'use this instead of get_variable for modifying values.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct operation on either pages or variables: list/read/propose for pages, and list/get/update for variables. There is no overlap or ambiguity between them.
All tool names follow the consistent planist_<verb>_<noun> pattern using snake_case. Verbs are clear and specific (list, read, get, propose, update), making the naming predictable and coherent.
With six tools, the server is well-scoped for managing pages and variables. The count is within the ideal 3-15 range and each tool serves a clear purpose without unnecessary bloat.
The server covers read, list, and update operations for both pages and variables, but lacks any creation or deletion capabilities. This is a notable gap in the resource lifecycle, though the propose-edit workflow adds a distinct review step for page modifications.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Create, edit, preview, publish, and manage web pages from MCP-capable AI clients.
Shared project wiki for AI agents: read and write pages, next actions, and activity logs over MCP.
System-of-record notebook for AI coding agents: pages, datastores, tasks, skills over MCP.
Read and write your team's shared, AI-readable wiki from any MCP client.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for MediaWiki wikis. Search, read, edit, and manage wiki content from AI assistants. Includes formatting, link checking, revision history, and markdown conversion.4320MIT
- AlicenseNot gradedqualityCmaintenanceRead-only MCP server for accessing GitBook content, including spaces, pages, and search, through AI assistants.189MIT
- AlicenseNot gradedqualityDmaintenanceExposes a Heuresis workspace to MCP clients, enabling concept mapping, ideation, and workspace management through natural language.86AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to deploy HTML pages and manage them (list, archive, move, rename) in a versioned library via MCP tools.67MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MiuDog/planist-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server