Skip to main content
Glama
olgasafonova

productplan-mcp-server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PRODUCTPLAN_API_TOKENYesYour ProductPlan API token, obtained from ProductPlan Settings → API.

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_roadmaps

List all roadmaps. START HERE to get roadmap IDs.

USE WHEN: "Show my roadmaps", "What roadmaps do I have?" FAILS WHEN: API token invalid or expired (check PRODUCTPLAN_API_TOKEN env var).

get_roadmap

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. FAILS WHEN: roadmap_id not found (get valid IDs from list_roadmaps first).

get_roadmap_bars

Get all bars (features/items) on a roadmap.

USE WHEN: "What's on the roadmap?", "Show planned features", "What's in Q2?" FAILS WHEN: roadmap_id not found (use list_roadmaps). Returns empty list if roadmap has no bars.

get_roadmap_lanes

Get lanes (categories) on a roadmap. Lanes organize bars into rows.

USE WHEN: "What lanes are on the roadmap?", "Show categories" FAILS WHEN: roadmap_id not found (use list_roadmaps).

get_roadmap_milestones

Get milestones (key dates) on a roadmap.

USE WHEN: "What are the key dates?", "Show milestones" FAILS WHEN: roadmap_id not found (use list_roadmaps).

get_roadmap_legends

Get legend entries (bar colors) for a roadmap.

USE WHEN: "What colors are available?", "Show the legend" Note: Use legend_id when creating/updating bars. FAILS WHEN: roadmap_id not found (use list_roadmaps).

get_roadmap_complete

Get complete roadmap in one call (~3x faster than sequential). Details, bars, lanes, milestones combined.

USE WHEN: "Full roadmap overview", "Summarize roadmap X" For settings/metadata only, use get_roadmap. WHY: Makes 3 parallel API calls internally (~3x faster than calling get_roadmap + get_roadmap_bars + get_roadmap_lanes sequentially). FAILS WHEN: roadmap_id not found (use list_roadmaps).

get_roadmap_comments

Get roadmap-level comments (not bar comments).

USE WHEN: "Show roadmap comments", "Roadmap discussion" For bar-level comments, use get_bar_comments instead. FAILS WHEN: roadmap_id not found (use list_roadmaps).

manage_lane

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) 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_milestone

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) 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_bar

Get bar details including description, links, custom fields.

USE WHEN: "Tell me about this feature", "Bar details" FAILS WHEN: bar_id not found (get valid IDs from get_roadmap_bars).

get_bar_children

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_comments

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_connections

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_links

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_bar

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) 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_connection

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_link

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_objectives

List all OKR objectives. START HERE for OKRs.

USE WHEN: "Show OKRs", "What are our objectives?" FAILS WHEN: API token invalid. Returns empty list if no objectives exist.

get_objective

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_results

List key results for an objective.

USE WHEN: "What are the KRs?", "Show metrics" FAILS WHEN: objective_id not found (use list_objectives).

get_key_result

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_objective

Create, update, or delete an objective.

USE WHEN: "Add Q1 objective", "Update objective", "Delete OKR" Actions: create (name), update (objective_id), delete (objective_id) FAILS WHEN: create without name, update/delete without objective_id. WARNING: delete also removes all key results under this objective.

manage_key_result

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) FAILS WHEN: create without name or target_value, update/delete without key_result_id (use list_key_results).

list_ideas

List all ideas in discovery pipeline. START HERE for ideas.

USE WHEN: "Show customer feedback", "What ideas do we have?" FAILS WHEN: API token invalid. Returns empty list if no ideas exist.

get_idea

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_opportunities

List all opportunities. START HERE for discovery.

USE WHEN: "Show opportunities", "Discovery pipeline" FAILS WHEN: API token invalid. Returns empty list if no opportunities exist.

get_opportunity

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_forms

List idea submission forms.

USE WHEN: "Show feedback forms", "What forms exist?" FAILS WHEN: API token invalid.

get_idea_form

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_customers

List all customers across ideas.

USE WHEN: "Who are our customers?", "All feedback sources" For customers linked to a specific idea, use get_idea_customers instead.

list_all_tags

List all tags used across ideas.

USE WHEN: "What tags exist?", "Show categories" For tags on a specific idea, use get_idea_tags instead.

manage_idea

Create or update an idea. Note: delete not available via API.

USE WHEN: "Add idea", "Update idea status" Actions: create (title), update (idea_id) 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_opportunity

Create or update an opportunity. Note: delete not available via API.

USE WHEN: "Create opportunity", "Update problem" Actions: create (problem_statement), update (opportunity_id) 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_launches

List all launches. START HERE for launches.

USE WHEN: "Show launches", "Release schedule" FAILS WHEN: API token invalid. Returns empty list if no launches exist.

get_launch

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_launch

Create, update, or delete a launch.

USE WHEN: "Create launch", "Update date", "Delete launch" Actions: create (name+date), update (launch_id), delete (launch_id) 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_sections

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_section

Get a specific checklist section by ID.

USE WHEN: "Section details" For all sections, use get_launch_sections. FAILS WHEN: launch_id or section_id not found.

manage_launch_section

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) 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_tasks

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_task

Get a specific launch task by ID.

USE WHEN: "Task details", "Task status" For all tasks, use get_launch_tasks. FAILS WHEN: launch_id or task_id not found.

manage_launch_task

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) 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_status

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_check

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_users

List all users in account.

USE WHEN: "Who has access?", "Team members" Use user IDs from this tool when assigning launch tasks via manage_launch_task.

list_teams

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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