@perforce/p4plan-mcp

MCPattested
v2026.3.1Perforce Software, Inc.MITUpdated todaynpmGitHub

P4 Plan MCP (Model Context Protocol) Server

Works in
ClaudeCursorCopilotGemini

Inferred from the transports this listing declares (stdio). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.

Attested build
A verified provenance attestation binds this artifact to the listed repository. Nobody has claimed the listing yet — this proves where the code was built, not who stands behind it.
27Downloads/wk
4GitHub stars
todayLast update
Needs 1 credential before it runs
  • P4PLAN_API_AUTH_TOKENAPI keyrequired

    JWT bearer token for the P4 Plan GraphQL API. Forwarded as Authorization on every tool call.

Declared by the author in the official MCP registry. Forge does not store, broker, or ever see these values — the config below is scaffolded with placeholders you fill in locally.

Package
AuthorPerforce Software, Inc.
LicenseMIT
Version2026.3.1
Sourcenpm+mcp-registry
Trust Status
A
85/100Trusted
✓Listed in Forge index+10/10
✓Identity verified · attested build+20/20
—Ed25519 publish signature+0/5
→ Included automatically when the publisher runs `forge publish`
—Domain verification+0/5
→ Publisher: host /.well-known/forge.json on the package homepage with { "publisher": "<github-login>" }
✓npm Trusted Publishing (Sigstore)+5/5
—npm maintainer match+0/5
→ Publisher: add the verified GitHub login to the npm package's maintainers (npm owner add <login>)
✓CVE scan · clean+30/30
✓Static analysis · clean+20/20
Paste into Claude Code, Cursor, or any AI assistant to fix all gaps
StatusIdentity verified
PublisherUnverified
SignatureUnsigned
Domain—
Provenance✓ Sigstore-verified · 06d0ba0
Dependencies✓ 60 resolved+ · none vulnerable
Tool surface28 tools · 2 privileged
Security scan✓ Cleanv2026.3.1 · todayHow well does this scan work?
EvalsNone
IndexedSep 24, 2026

Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.

Tools

28 tools · 2 privileged
Statically extracted from the published packagev2026.3.1 · 3h ago

Read out of the source npm actually ships, at scan time. The package was never executed. Tools registered dynamically at runtime, or hidden inside bundled or minified code, can be missed — so this is a floor on the tool surface, not a complete census of it.

list_projectsList all active projects the current user is a member of. Returns project IDs and names backlogID (needed for backlog operations) and qaID (needed for bug operations). The project ID itself is used for planning/schedule operations.` Call this first to discover projectId values needed by other tools.

List all active projects the current user is a member of. Returns project IDs and names backlogID (needed for backlog operations) and qaID (needed for bug operations). The project ID itself is used for planning/schedule operations.` Call this first to discover projectId values needed by other tools.

No input schema was published for this tool.

get_projectGet a project's configuration and section IDs. Returns backlogID (needed for backlog operations) and qaID (needed for bug operations). The project ID itself is used for planning/schedule operations.

Get a project's configuration and section IDs. Returns backlogID (needed for backlog operations) and qaID (needed for bug operations). The project ID itself is used for planning/schedule operations.

No input schema was published for this tool.

read_skillRead a P4 Plan skill document. Skills provide detailed syntax and usage guides.

Read a P4 Plan skill document. Skills provide detailed syntax and usage guides.

No input schema was published for this tool.

commit_to_sprintCommit a backlog task or bug to a sprint for execution.

Commit a backlog task or bug to a sprint for execution.

No input schema was published for this tool.

uncommit_from_sprintRemove a backlog task or bug from its sprint, returning it to the backlog. The task is not deleted — only the sprint association is removed.

Remove a backlog task or bug from its sprint, returning it to the backlog. The task is not deleted — only the sprint association is removed.

No input schema was published for this tool.

get_commentsGet all comments on a task or item. Returns comment text, author, and timestamp for each comment.

Get all comments on a task or item. Returns comment text, author, and timestamp for each comment.

No input schema was published for this tool.

post_commentPost a comment on a task or item. Use for posting questions, acceptance criteria, blockers, or general discussion. Comment text is sanitized HTML — call read_skill with skillName="comment-html-format" before composing the text, and skillName="mentions" if the comment includes @user references.

Post a comment on a task or item. Use for posting questions, acceptance criteria, blockers, or general discussion. Comment text is sanitized HTML — call read_skill with skillName="comment-html-format" before composing the text, and skillName="mentions" if the comment includes @user references.

No input schema was published for this tool.

get_attachmentsList all attachments on a task. Returns attachment details including path, size, and whether it is the cover image. Use download_attachment to retrieve the actual file content.

List all attachments on a task. Returns attachment details including path, size, and whether it is the cover image. Use download_attachment to retrieve the actual file content.

No input schema was published for this tool.

download_attachmentDownload and return the actual content of an attachment file. Use get_attachments first to find available paths.

Download and return the actual content of an attachment file. Use get_attachments first to find available paths.

No input schema was published for this tool.

delete_attachmentprivilegedDelete an attachment from a task. Use get_attachments first to find the attachment path.

Delete an attachment from a task. Use get_attachments first to find the attachment path.

No input schema was published for this tool.

set_cover_imageSet or unset the cover image for a task. The attachment must be an image that is already attached to the task.

Set or unset the cover image for a task. The attachment must be an image that is already attached to the task.

No input schema was published for this tool.

update_commentEdit the text of an existing comment. Get comment IDs from get_comments first. Comment text is sanitized HTML — call read_skill with skillName="comment-html-format" before composing the text, and skillName="mentions" if the comment includes @user references.

Edit the text of an existing comment. Get comment IDs from get_comments first. Comment text is sanitized HTML — call read_skill with skillName="comment-html-format" before composing the text, and skillName="mentions" if the comment includes @user references.

No input schema was published for this tool.

delete_commentprivilegedDelete a comment from a task. This action cannot be undone. Get comment IDs from get_comments first.

Delete a comment from a task. This action cannot be undone. Get comment IDs from get_comments first.

No input schema was published for this tool.

get_tasksGet full details of one or more items by ID (max 20). Works for BacklogTask, ScheduledTask, Bug, Sprint, and Release. Returns status, assignments, workflow state, and all type-specific fields. Each item also returns localID — the number shown in the P4 Plan UI's "ID" column — alongside the database…

Get full details of one or more items by ID (max 20). Works for BacklogTask, ScheduledTask, Bug, Sprint, and Release. Returns status, assignments, workflow state, and all type-specific fields. Each item also returns localID — the number shown in the P4 Plan UI's "ID" column — alongside the database…

No input schema was published for this tool.

search_tasksNo description published

This tool published no description. Forge does not invent one.

create_itemCreate a new item in P4 Plan. Supports creating BacklogTask, Bug, ScheduledTask, Sprint, Release, or SprintTask. The "type" parameter determines which item is created and which optional fields apply. When parentItemId is provided, first call get_tasks on that parent — if it has a committedToProject…

Create a new item in P4 Plan. Supports creating BacklogTask, Bug, ScheduledTask, Sprint, Release, or SprintTask. The "type" parameter determines which item is created and which optional fields apply. When parentItemId is provided, first call get_tasks on that parent — if it has a committedToProject…

No input schema was published for this tool.

complete_taskMark a task as completed. Works for any task type (BacklogTask, ScheduledTask, Bug).

Mark a task as completed. Works for any task type (BacklogTask, ScheduledTask, Bug).

No input schema was published for this tool.

start_taskMark a task as in-progress. Works for any task type (BacklogTask, ScheduledTask, Bug).

Mark a task as in-progress. Works for any task type (BacklogTask, ScheduledTask, Bug).

No input schema was published for this tool.

update_itemUpdate one or more properties on any P4 Plan item: BacklogTask, Bug, ScheduledTask, Sprint, or Release. Automatically detects the item type and applies the correct mutation. The "itemId" parameter is always required. Some fields are type-specific — see parameter descriptions for which item types su…

Update one or more properties on any P4 Plan item: BacklogTask, Bug, ScheduledTask, Sprint, or Release. Automatically detects the item type and applies the correct mutation. The "itemId" parameter is always required. Some fields are type-specific — see parameter descriptions for which item types su…

No input schema was published for this tool.

get_custom_columnsGet custom column definitions for a project. Returns column IDs, names, types, and drop-list options. Call this before set_custom_field to discover available column IDs and valid option values.

Get custom column definitions for a project. Returns column IDs, names, types, and drop-list options. Call this before set_custom_field to discover available column IDs and valid option values.

No input schema was published for this tool.

get_custom_fieldsGet custom field values set on a task. Returns all custom fields with their current values.

Get custom field values set on a task. Returns all custom fields with their current values.

No input schema was published for this tool.

set_custom_fieldSet a custom field value on a task. Get column IDs from get_custom_columns first. For drop lists, pass the option ID (not the display label). Pass empty string to clear a value. For Multiline Text columns, the value is sanitized HTML — call read_skill with skillName="comment-html-format" before com…

Set a custom field value on a task. Get column IDs from get_custom_columns first. For drop lists, pass the option ID (not the display label). Pass empty string to clear a value. For Multiline Text columns, the value is sanitized HTML — call read_skill with skillName="comment-html-format" before com…

No input schema was published for this tool.

get_workflowsGet all workflows defined in a project, including their statuses. Use this to find workflow status IDs for setting workflowStatusId on tasks.

Get all workflows defined in a project, including their statuses. Use this to find workflow status IDs for setting workflowStatusId on tasks.

No input schema was published for this tool.

get_my_tasksGet all tasks assigned to the current user across all projects (their To Do List). Returns tasks, bugs, and scheduled items the user is responsible for.

Get all tasks assigned to the current user across all projects (their To Do List). Returns tasks, bugs, and scheduled items the user is responsible for.

No input schema was published for this tool.

link_itemsCreate a link between two items (internal) or from an item to a URL (external). For internal links provide toItemId; for external links provide url instead. Use get_tasks to see existing links on an item.

Create a link between two items (internal) or from an item to a URL (external). For internal links provide toItemId; for external links provide url instead. Use get_tasks to see existing links on an item.

No input schema was published for this tool.

unlink_itemsRemove a link between two items (internal) or from an item to a URL (external). For internal links provide toItemId; for external links provide url instead.

Remove a link between two items (internal) or from an item to a URL (external). For internal links provide toItemId; for external links provide url instead.

No input schema was published for this tool.

get_current_userGet information about the currently authenticated user, including their name, emailAddress, and userLink (paste verbatim as the href when constructing @mentions — see the mentions skill).

Get information about the currently authenticated user, including their name, emailAddress, and userLink (paste verbatim as the href when constructing @mentions — see the mentions skill).

No input schema was published for this tool.

list_project_usersList all members of a project. Returns user IDs, names, and userLinks. Use the IDs with update_item (assignedTo) to assign work, and userLink as the href when constructing @mentions in comments — see the mentions skill.

List all members of a project. Returns user IDs, names, and userLinks. Use the IDs with update_item (assignedTo) to assign work, and userLink as the href when constructing @mentions in comments — see the mentions skill.

No input schema was published for this tool.

27 of 28 tools published a description.

Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.

About

P4 Plan MCP (Model Context Protocol) Server

Keywords
mcp
Alternatives
Comparing tool surfaces…

Dependency tree

What one Forge scan resolved from npm metadata on 2026-09-24 — observed resolution, not a publisher declaration.

60 packages resolved · 12 direct · none carrying advisories Resolution stops at depth 4 and 60 packages.

The crawl stopped at the 60-package limit. The rest of the tree was never resolved.

36 more resolved packages are not drawn here (display cap: 24). Every dependency carrying an advisory is drawn regardless of the cap. Full inventory (CycloneDX SBOM)

Declared but not resolved

60 declared dependencies never landed in the tree. They are missing from Forge's resolution, not from the package.

+48 more not listed. The counts by reason above cover all of them.

Not followed: peerDependencies. This tree covers runtime dependencies only, so anything those pull in was never resolved.