productplan-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PRODUCTPLAN_API_TOKEN | Yes | Your ProductPlan API token, obtained from ProductPlan Settings → API. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_roadmapsA | List all roadmaps. START HERE to get roadmap IDs. USE WHEN: "Show my roadmaps", "What roadmaps do I have?" Returns array of roadmaps with ID, name, and creation date. FAILS WHEN: API token invalid or expired (check PRODUCTPLAN_API_TOKEN env var). |
| get_roadmapA | Get roadmap settings and metadata. USE WHEN: "Tell me about roadmap X", "Roadmap settings" For all data in one call (bars, lanes, milestones), use get_roadmap_complete. Returns roadmap name, date range, sharing settings, and metadata. FAILS WHEN: roadmap_id not found (get valid IDs from list_roadmaps first). |
| get_roadmap_barsA | Get all bars (features/items) on a roadmap. USE WHEN: "What's on the roadmap?", "Show planned features", "What's in Q2?" Returns array of bars with ID, name, dates, lane, legend, percent_done, and description. FAILS WHEN: roadmap_id not found (use list_roadmaps). Returns empty list if roadmap has no bars. |
| get_roadmap_lanesA | Get lanes (categories) on a roadmap. Lanes organize bars into rows. USE WHEN: "What lanes are on the roadmap?", "Show categories" Returns array of lanes with ID, name, and color. FAILS WHEN: roadmap_id not found (use list_roadmaps). |
| get_roadmap_milestonesA | Get milestones (key dates) on a roadmap. USE WHEN: "What are the key dates?", "Show milestones" Returns array of milestones with ID, title, and date. FAILS WHEN: roadmap_id not found (use list_roadmaps). |
| get_roadmap_legendsA | Get legend entries (bar colors) for a roadmap. USE WHEN: "What colors are available?", "Show the legend" Returns array of legend entries with ID, name, and hex color. Use legend_id when creating/updating bars. FAILS WHEN: roadmap_id not found (use list_roadmaps). |
| get_roadmap_completeA | Get complete roadmap in one call. Details, bars, lanes, milestones combined. USE WHEN: "Full roadmap overview", "Summarize roadmap X" For settings/metadata only, use get_roadmap. Returns combined roadmap details, bars, lanes, and milestones in one response. FAILS WHEN: roadmap_id not found (use list_roadmaps). |
| get_roadmap_commentsA | Get roadmap-level comments (not bar comments). USE WHEN: "Show roadmap comments", "Roadmap discussion" For bar-level comments, use get_bar_comments instead. Returns array of comments with author, body, and timestamp. FAILS WHEN: roadmap_id not found (use list_roadmaps). |
| manage_laneA | Create, update, or delete a lane on a roadmap. USE WHEN: "Add Backend lane", "Rename Mobile lane", "Delete lane" Actions: create (name), update (lane_id), delete (lane_id) Returns the created/updated lane object, or confirmation on delete. FAILS WHEN: create without name, update/delete without lane_id (get IDs from get_roadmap_lanes). WARNING: delete removes the lane and unassigns all bars in it. |
| manage_milestoneA | Create, update, or delete a milestone on a roadmap. USE WHEN: "Add launch milestone", "Move demo date", "Delete milestone" Actions: create (title+date), update (milestone_id), delete (milestone_id) Returns the created/updated milestone object, or confirmation on delete. FAILS WHEN: create without title or date, update/delete without milestone_id (get IDs from get_roadmap_milestones), date not in YYYY-MM-DD format. |
| get_barA | Get bar details including description, links, custom fields. USE WHEN: "Tell me about this feature", "Bar details" Returns bar name, dates, description, links, custom fields, percent_done, and lane info. FAILS WHEN: bar_id not found (get valid IDs from get_roadmap_bars). |
| get_bar_childrenA | Get child bars nested under a parent bar. USE WHEN: "Show sub-tasks", "Child items", "Break down this feature" FAILS WHEN: bar_id not found. Returns empty list if bar has no children (not all bars are containers). |
| get_bar_commentsA | Get comments on a bar. USE WHEN: "Show comments", "What's the feedback on this bar?" For roadmap-level comments, use get_roadmap_comments instead. FAILS WHEN: bar_id not found. |
| get_bar_connectionsA | Get bar dependencies (what blocks what). USE WHEN: "What depends on this?", "Show dependencies" FAILS WHEN: bar_id not found. Returns empty list if bar has no connections. |
| get_bar_linksA | Get external links on a bar (Jira, docs, designs). USE WHEN: "What's linked?", "Show Jira tickets" FAILS WHEN: bar_id not found. Returns empty list if bar has no external links. |
| manage_barA | Create, update, or delete a bar on a roadmap. USE WHEN: "Add feature", "Update dates", "Delete item", "Change color" Actions: create (roadmap_id+lane_id+name), update (bar_id), delete (bar_id) Returns the created/updated bar object with all fields, or confirmation on delete. FAILS WHEN: create without roadmap_id, lane_id, or name (all three required). Update/delete without bar_id. Use get_roadmap_legends for valid legend_id values. WARNING: delete is permanent and cannot be undone. |
| manage_bar_connectionA | Create or delete dependency between bars. USE WHEN: "Link features", "Add dependency", "Remove dependency" Actions: create (target_bar_id), delete (connection_id) FAILS WHEN: create without target_bar_id, delete without connection_id (get IDs from get_bar_connections). |
| manage_bar_linkA | Create or delete external link on a bar. USE WHEN: "Link Jira ticket", "Add design doc", "Remove link" Actions: create (url), delete (link_id) FAILS WHEN: create without url, delete without link_id (get IDs from get_bar_links). Note: update not available via API; delete and re-create instead. |
| list_objectivesA | List all OKR objectives. START HERE for OKRs. USE WHEN: "Show OKRs", "What are our objectives?" Returns array of objectives with ID, name, time_frame, and key result count. FAILS WHEN: API token invalid. Returns empty list if no objectives exist. |
| get_objectiveA | Get objective details with key results. USE WHEN: "Tell me about objective X", "OKR progress" FAILS WHEN: objective_id not found (get valid IDs from list_objectives). |
| list_key_resultsA | List key results for an objective. USE WHEN: "What are the KRs?", "Show metrics" Returns array of key results with ID, name, target_value, and current_value. FAILS WHEN: objective_id not found (use list_objectives). |
| get_key_resultA | Get key result details. USE WHEN: "Tell me about this KR", "KR progress" FAILS WHEN: objective_id or key_result_id not found (use list_key_results to get valid KR IDs). |
| manage_objectiveA | Create, update, or delete an objective. USE WHEN: "Add Q1 objective", "Update objective", "Delete OKR" Actions: create (name), update (objective_id), delete (objective_id) Returns the created/updated objective, or confirmation on delete. FAILS WHEN: create without name, update/delete without objective_id. WARNING: delete also removes all key results under this objective. |
| manage_key_resultA | Create, update, or delete a key result. USE WHEN: "Add KR", "Update progress", "Delete KR" Actions: create (name+target), update (key_result_id), delete (key_result_id) Returns the created/updated key result, or confirmation on delete. FAILS WHEN: create without name or target_value, update/delete without key_result_id (use list_key_results). |
| list_ideasA | List all ideas in discovery pipeline. START HERE for ideas. USE WHEN: "Show customer feedback", "What ideas do we have?" Returns array of ideas with ID, title, status, and vote count. FAILS WHEN: API token invalid. Returns empty list if no ideas exist. |
| get_ideaA | Get idea details including description and metadata. USE WHEN: "Tell me about this idea", "Full request details" FAILS WHEN: idea_id not found (get valid IDs from list_ideas). |
| list_opportunitiesA | List all opportunities. START HERE for discovery. USE WHEN: "Show opportunities", "Discovery pipeline" Returns array of opportunities with ID, problem_statement, workflow_status, and linked idea count. FAILS WHEN: API token invalid. Returns empty list if no opportunities exist. |
| get_opportunityA | Get opportunity details with linked ideas. USE WHEN: "Tell me about this opportunity" FAILS WHEN: opportunity_id not found (get valid IDs from list_opportunities). |
| list_idea_formsA | List idea submission forms. USE WHEN: "Show feedback forms", "What forms exist?" Returns array of forms with ID and name. FAILS WHEN: API token invalid. |
| get_idea_formA | Get idea form details with fields. USE WHEN: "Show form fields", "What does this form collect?" FAILS WHEN: form_id not found (get valid IDs from list_idea_forms). |
| list_all_customersA | List all customers across ideas. Returns customer names and linked idea counts. USE WHEN: "Who are our customers?", "All feedback sources" FAILS WHEN: API token invalid. |
| list_all_tagsA | List all tags used across ideas. Returns tag names and usage counts across ideas. USE WHEN: "What tags exist?", "Show categories" FAILS WHEN: API token invalid. |
| manage_ideaA | Create or update an idea. Note: delete not available via API. USE WHEN: "Add idea", "Update idea status" Actions: create (title), update (idea_id) Returns the created/updated idea object. FAILS WHEN: create without title, update without idea_id. Note: delete is not available via the ProductPlan API; archive ideas by updating status instead. |
| manage_opportunityA | Create or update an opportunity. Note: delete not available via API. USE WHEN: "Create opportunity", "Update problem" Actions: create (problem_statement), update (opportunity_id) Returns the created/updated opportunity object. FAILS WHEN: create without problem_statement, update without opportunity_id (get IDs from list_opportunities). Note: delete is not available via the ProductPlan API; archive opportunities by updating workflow_status instead. |
| list_launchesA | List all launches. START HERE for launches. USE WHEN: "Show launches", "Release schedule" Returns array of launches with ID, name, date, and description. FAILS WHEN: API token invalid. Returns empty list if no launches exist. |
| get_launchA | Get launch details with checklist. USE WHEN: "Tell me about this launch", "Launch readiness" FAILS WHEN: launch_id not found (get valid IDs from list_launches). |
| manage_launchA | Create, update, or delete a launch. USE WHEN: "Create launch", "Update date", "Delete launch" Actions: create (name+date), update (launch_id), delete (launch_id) Returns the created/updated launch object, or confirmation on delete. FAILS WHEN: create without name or date, update/delete without launch_id, date not in YYYY-MM-DD format. WARNING: delete removes the launch and all its sections and tasks. |
| get_launch_sectionsA | Get checklist sections for a launch. USE WHEN: "Show sections", "Checklist categories" For one specific section, use get_launch_section. FAILS WHEN: launch_id not found. |
| get_launch_sectionA | Get a specific checklist section by ID. USE WHEN: "Show one specific checklist section by ID" For all sections, use get_launch_sections. FAILS WHEN: launch_id or section_id not found. |
| manage_launch_sectionA | Create, update, or delete a checklist section. USE WHEN: "Add Marketing section", "Rename section", "Delete section" Actions: create (name), update (section_id), delete (section_id) Returns the created/updated section object, or confirmation on delete. FAILS WHEN: create without name, update/delete without section_id (get IDs from get_launch_sections). WARNING: delete removes the section and all tasks in it. |
| get_launch_tasksA | Get all tasks for a launch. USE WHEN: "Show tasks", "What needs to be done?" For one specific task, use get_launch_task. FAILS WHEN: launch_id not found. |
| get_launch_taskA | Get a specific launch task by ID. USE WHEN: "Show one specific task by ID", "Check task assignment or status" For all tasks, use get_launch_tasks. FAILS WHEN: launch_id or task_id not found. |
| manage_launch_taskA | Create, update, or delete a launch task. USE WHEN: "Add task", "Mark complete", "Assign task", "Delete task" Actions: create (name+section_id), update (task_id), delete (task_id) Returns the created/updated task object, or confirmation on delete. FAILS WHEN: create without name or section_id, update/delete without task_id (get IDs from get_launch_tasks). Use list_users to get valid assigned_user_id values. |
| check_statusA | Check ProductPlan API status and authentication. USE WHEN: "Is ProductPlan connected?", "Check API" For MCP server internals (cache stats, rate limits), use health_check instead. |
| health_checkA | Check MCP server health and cache stats. USE WHEN: "Server status", "Rate limits", "Diagnose issues" For API connectivity only, use check_status instead. FAILS WHEN: deep=true and API is unreachable. Basic health (deep=false) always succeeds if server is running. |
| list_usersA | List all users in account. USE WHEN: "Who has access?", "Team members" Returns array of users with ID, name, email, and role. Use user IDs from this tool when assigning launch tasks via manage_launch_task. |
| list_teamsA | List all teams in account. USE WHEN: "What teams exist?", "Team structure" For individual user details, use list_users instead. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/olgasafonova/productplan-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server