Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Perforce P4 MCP Server

OCI · GHCR.IO/PERFORCE/P4MCP-SERVER:2026.3.2996147 · SCANNED SEP 21

Perforce P4 MCP server: changelists, files, shelves, workspaces, jobs, code reviews, and streams.

0 this week 48 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security0
  • Malware scan not yet available for this package.Unverified
  • Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
  • Install-script risk not yet assessed.Unverified
  • Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
Provenance & Transparency35
Schema Quality & AI Usability60
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 3293 tokens (~219/item across 15 items; 15 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
  • Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 15 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

How do I install the Perforce P4 MCP Server server?

Perforce P4 MCP Server runs locally as a container image, launched with docker run --rm -i ghcr.io/perforce/p4mcp-server:2026.3.2996147. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

oci · ghcr.io/perforce/p4mcp-server:2026.3.2996147

# add to Claude Code
claude mcp add perforce-p4mcp-server -- docker run --rm -i ghcr.io/perforce/p4mcp-server:2026.3.2996147
// .cursor/mcp.json
{
  "mcpServers": {
    "perforce-p4mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/perforce/p4mcp-server:2026.3.2996147"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "perforce-p4mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/perforce/p4mcp-server:2026.3.2996147"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add perforce-p4mcp-server -- docker run --rm -i ghcr.io/perforce/p4mcp-server:2026.3.2996147
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "perforce-p4mcp-server": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "ghcr.io/perforce/p4mcp-server:2026.3.2996147"
      ],
      "enabled": true
    }
  }
}
# ~/.hermes/config.yaml
mcp_servers:
  perforce-p4mcp-server:
    command: "docker"
    args: ["run", "--rm", "-i", "ghcr.io/perforce/p4mcp-server:2026.3.2996147"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "perforce-p4mcp-server": {
      "Transport": "stdio",
      "Command": "docker",
      "Arguments": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/perforce/p4mcp-server:2026.3.2996147"
      ]
    }
  }
}
// mcp.json
{
  "mcpServers": {
    "perforce-p4mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/perforce/p4mcp-server:2026.3.2996147"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 17 Sept 26 +1
    • Stability: 0.97 → pass security
  • 15 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 10 Sept 26 +1
    • Stability: 0.97 → pass security
  • 8 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 21 Sept 2026 · Analysed oci/ghcr.io/perforce/p4mcp-server:2026.3.2996147

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem oci
Reason No attestation published

Background: How many MCP packages publish verified provenance →

MCP tools · 15 exposed · ~3,293 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
modify_changelists ~120

Create/delete changelists, update changelists and organize files/jobs (WRITE permission)

NameTypeReqDescription
actionstringyesChangelist modification action: create makes new changelist, update modifies description, submit commits changes, delete removes changelist, move_files reorganizes files between changelists
changelist_idChangelist ID - required for most actions except create
descriptionstringChangelist description - required for create, optional for update
file_pathsFile paths - required for move_files action

Structured output declared, but exposes no named fields.

No examples provided.

modify_files ~139

Add, edit, move, delete, revert, reconcile, resolve, and sync files (WRITE permission)

NameTypeReqDescription
actionstringyesFile modification action
changeliststringChangelist ID or 'default'
file_pathsFull depot or client or local paths
forcebooleanForce operation - use with caution
modestringResolve mode: auto(-am), safe(-as), force(-af), preview(-n), theirs(-at), yours(-ay)
source_pathsSource paths - required for move action
target_pathsTarget paths - required for move action

Structured output declared, but exposes no named fields.

No examples provided.

modify_jobs ~79

Link or unlink jobs (WRITE permission)

NameTypeReqDescription
actionstringyesJob modification action: link_job associates job with changelist, unlink_job removes job association
changelist_idstringyesChangelist ID - required for link_job/unlink_job
job_idstringyesJob ID - required for link_job/unlink_job

Structured output declared, but exposes no named fields.

No examples provided.

modify_reviews ~409

Create/update/delete reviews (WRITE permission)

NameTypeReqDescription
actionstringyesReview modification action. To delete/obliterate review, use 'obliterate' action which requires approval
bodyComment body (required for add_comment, reply_comment)
change_idChangelist ID (required for create, append_change, replace_with_change)
cleanupPerform cleanup for approved:commit/committed transitions
comment_file_pathFile path for inline comment
comment_idParent comment ID (reply_comment, mark_comment_read/unread)
comment_left_lineLeft diff line number for inline comment
comment_right_lineRight diff line number for inline comment
comment_versionReview version for comment attachment
descriptionReview description (optional on create)
fix_statusJob fix status when transitioning
jobsAssociated job IDs for transition
max_reviewsintegerMaximum number of inactive reviews to archive (0 = no limit)
new_authorNew author username (update_author)
new_descriptionNew review description (update_description)
not_updated_sinceISO date (YYYY-MM-DD) threshold for archive_inactive
notifyNotification mode
participant_group_namesList of participant group names
participant_groups_requiredList of required participant groups
participant_user_namesList of participant usernames
participant_users_requiredList of required participant usernames
required_reviewersList of required reviewers
review_idReview ID (required for most actions except create, archive_inactive)
reviewer_group_namesList of reviewer group names
reviewer_groups_requiredList of required reviewer groups
reviewersList of reviewers
task_stateTask state
transitionTransition target state
versionReview version (optional for vote)
vote_valueVote value

Structured output declared, but exposes no named fields.

No examples provided.

modify_shelves ~133

Create/delete, update shelves and unshelve files (WRITE permission)

NameTypeReqDescription
actionstringyesShelve modification action: shelve stores files to shelf, unshelve restores files from shelf, update modifies shelved files, delete removes shelf, unshelve_to_changelist restores to specific changeli…
changelist_idstringyesChangelist ID
file_pathsFile paths for shelve/unshelve/update/delete
forcebooleanForce operation - use with caution
target_changeliststringTarget changelist for unshelve operations

Structured output declared, but exposes no named fields.

No examples provided.

modify_streams ~678

Create/update/delete streams, edit/resolve/revert/shelve stream specs, copy/merge/integrate/populate between streams, switch workspace, create stream workspace (WRITE permission)

NameTypeReqDescription
actionstringyesStream modification action: 'create'/'update'/'delete' a stream, 'edit_spec'/'resolve_spec'/'revert_spec'/'shelve_spec'/'unshelve_spec' for spec editing, 'copy'/'merge'/'integrate'/'populate' for pro…
alt_rootsAlternate root paths (create_workspace)
branchBranch spec name for integrate/populate (-b flag)
changelistChangelist for edit_spec, shelve_spec, unshelve_spec, or propagation, 'default' not allowed for edit_spec/shelve_spec/unshelve_spec
descriptionStream or workspace description
file_pathsFile paths for propagation
forcebooleanForce operation
hostHost restriction (create_workspace)
ignoredIgnored paths
integrate_around_deletedbooleanIntegrate around deleted revisions (-Di flag)
max_filesLimit number of files processed (-m flag)
nameShort display name for the stream
optionsStream options: 'allsubmit/ownersubmit unlocked/locked toparent/notoparent fromparent/nofromparent'
output_basebooleanShow base revision with each scheduled resolve (-Ob flag for merge/integrate) or display list of files created (-o flag for populate)
parentParent stream (required for non-mainline create)
parent_streamOverride parent stream for propagation (-P flag)
parent_viewParent view treatment: 'inherit' or 'noinherit'
pathsStream view paths (e.g. ['share ...', 'isolate dir/...'])
previewbooleanPreview only, don't make changes (-n flag)
quietbooleanSuppress informational messages (-q flag)
remappedRemapped paths
resolve_modeResolve mode for resolve_spec: 'auto', 'accept_theirs', 'accept_yours'
reversebooleanReverse direction (-r flag)
rootWorkspace root directory (create_workspace)
schedule_branch_resolvebooleanSchedule 'branch resolves' instead of branching new target files automatically (-Rb flag)
skip_cherry_pickedbooleanSkip cherry-picked revisions already integrated (-Rs flag)
source_pathSource path for populate
stream_nameStream depot path (e.g. '//depot/main'). Also used as -S flag for propagation.
stream_typeStream type (required for create): mainline, development, sparsedev, release, sparserel, task, virtual
target_changelistTarget changelist for unshelve_spec
target_pathTarget path for populate
virtualbooleanCopy using virtual stream (-v flag, copy only)
workspaceWorkspace name for switch
workspace_nameWorkspace name to create (create_workspace)

Structured output declared, but exposes no named fields.

No examples provided.

modify_workspaces ~122

Create/delete workspace, Update workspace specs, and switch active workspace (WRITE permission)

NameTypeReqDescription
actionstringyesWorkspace modification action: create makes new workspace, delete removes workspace, update modifies workspace spec, switch changes active workspace
workspace_descriptionWorkspace description
workspace_line_endLine ending style (local, unix, win, mac)
workspace_namestringyesWorkspace name
workspace_optionsWorkspace options
workspace_rootRoot path of the workspace
workspace_viewView mappings in depot-to-client format

Structured output declared, but exposes no named fields.

No examples provided.

query_changelists ~162

Get changelist details and list changelists (READ permission)

NameTypeReqDescription
actionstringyesChangelist query action: get retrieves specific changelist details, list returns all changelists matching filters
changelist_idChangelist ID - required for get action
depot_pathFilter by depot path - for list action
max_resultsMaximum number of results to return. Bounds the 'list' action and also caps open files for get('default') via 'p4 opened -m N'. Omit for unbounded results.
statusFilter by status - for list action
userFilter by user - for list action
workspace_nameFilter by workspace - for list action

Structured output declared, but exposes no named fields.

No examples provided.

query_files ~183

Get file content, history, info, diff, annotations, search by name, grep by content (READ permission)

NameTypeReqDescription
actionstringyesFile query action, metadata includes extra information like optional attributes and file size
case_insensitivebooleanCase-insensitive matching for grep action
diff2booleanUse p4 diff2 for depot-to-depot diff, false for mixed diff
file2Second file path - required for diff action
file_pathstringyesPrimary file path - required for all actions
max_resultsMaximum number of results to return. Bounds history/search/grep and also caps fstat info/metadata via 'p4 fstat -m N'. Omit for unbounded info/metadata results.
patternSearch or grep pattern - required for search and grep actions

Structured output declared, but exposes no named fields.

No examples provided.

query_jobs ~92

Get jobs from changelist and get job details (READ permission)

NameTypeReqDescription
actionstringyesJob query action: list_jobs returns jobs linked to changelist, get_job retrieves specific job details
changelist_idChangelist ID - required for list_jobs action
job_idJob ID - required for get_job action
max_resultsintegerMaximum number of results to return

Structured output declared, but exposes no named fields.

No examples provided.

query_reviews ~408

Get review details and list reviews (READ permission). Open review - state is 'approved but pending=true' or 'needsReview' or 'needsRevision'. Closed review - state is 'approved but pending=false' or 'rejected' or 'archived'.

NameTypeReqDescription
actionstringyesReview query action: list all reviews, dashboard for current user, get specific review, transitions, files_readby, files, comments, activity
afterReview ID to seek to for pagination (list action). Reviews up to and including this ID are excluded.
after_updatedReturn reviews updated on the day before this date/time in seconds since epoch (list action). Mutually exclusive with 'after'.
comments_fieldsComma-separated list of fields to return for comments action
fieldsList of fields to return for list/get actions
from_versionStarting version for files action
include_transitionsInclude allowed state transitions in get action response
keywordsSearch keyword(s) to filter reviews (list action). Use with keywords_fields.
keywords_fieldsFields to search keywords in (list action). Valid: changes, author, participants, hasReviewer, description, updated, projects, state, testStatus, pending, groups, id
max_resultsintegerMaximum number of results to return
projectsFilter by project name(s) (list action)
result_orderSet to 'updated' to return most recently updated reviews first (list action)
review_idReview ID - required for get, transitions, files_readby, files, comments, activity actions
stateFilter by review state(s) (list action). Valid: needsRevision, needsReview, approved, approved:isPending, approved:commit, approved:notPending, rejected, archived
to_versionEnding version for files action
up_votersList of up voters for transitions action

Structured output declared, but exposes no named fields.

No examples provided.

query_server ~48

Get server info and current user information (READ permission)

NameTypeReqDescription
actionstringyesServer query action: server_info returns P4 server metadata and version, current_user returns authenticated user details and permissions

Structured output declared, but exposes no named fields.

No examples provided.

query_shelves ~102

List shelves, get shelve diff and files (READ permission)

NameTypeReqDescription
actionstringyesShelve query action: list returns all shelved changelists, diff shows shelved file differences, files lists files in shelved changelist
changelist_idChangelist ID - required for diff and files actions
max_resultsintegerMaximum number of results to return
userFilter by user - for list action

Structured output declared, but exposes no named fields.

No examples provided.

query_streams ~512

Query streams: list, get spec, children/parent/graph, integration status, workspaces, validate files, check resolve, interchanges (READ permission)

NameTypeReqDescription
actionstringyesStream query action: 'list' streams, 'get' stream spec, 'children'/'parent'/'graph' of a stream, 'integration_status' (p4 istat), 'get_workspace'/'list_workspaces', 'validate_file'/'validate_submit'…
all_streamsbooleanInclude virtual streams in 'list' results
at_changeChangelist number for historical stream spec
both_directionsbooleanShow integration status in both directions (-a flag for integration_status)
changelistChangelist for validate_submit
fieldsFields to return for 'list' (e.g. ['Stream', 'Owner', 'Name', 'Type'])
file_pathsFile paths for validate_file or interchanges
filterFilter expression string for 'list' (-F flag). Supports &, |, and parentheses. E.g. 'Parent=//Ace/MAIN&(Type=development|Type=release)'
force_refreshbooleanForce istat to assume cache is stale and search for pending integrations (-c flag)
limitMax changelists (interchanges)
long_outputbooleanFull changelist descriptions (interchanges)
max_resultsMaximum number of results to return. Bounds 'list' and 'list_workspaces' and also caps 'children' via 'p4 streams -m N'. Omit for unbounded results.
reversebooleanReverse comparison direction (interchanges)
stream_nameStream depot path (e.g. '//depot/main'). Required for most actions.
stream_pathStream path pattern(s) for 'list' (e.g. ['//depot/...'])
templateTemplate workspace for get_workspace
unloadedbooleanInclude unloaded streams/workspaces
userFilter workspaces by user (list_workspaces)
view_without_editbooleanView locked stream without opening for edit (-v flag)
viewmatchSingle depot file path to filter streams whose views contain this path
workspaceWorkspace name for get_workspace, validate_file, validate_submit

Structured output declared, but exposes no named fields.

No examples provided.

query_workspaces ~106

Get workspace details, list workspaces, check type and status (READ permission)

NameTypeReqDescription
actionstringyesWorkspace query action: list returns all workspaces matching filters, get retrieves specific workspace spec, type identifies workspace category, status shows opened files and sync state
max_resultsintegerMaximum number of results to return
userFilter by user - optional for list action
workspace_nameWorkspace name - required for get, type, status actions

Structured output declared, but exposes no named fields.

No examples provided.

Common questions

What is the Perforce P4 MCP Server server?

Perforce P4 MCP Server is listed in the public MCP registry as io.github.perforce/p4mcp-server. Perforce P4 MCP server: changelists, files, shelves, workspaces, jobs, code reviews, and streams. This page covers its container image (ghcr.io/perforce/p4mcp-server:2026.3.2996147).

Is the Perforce P4 MCP Server server safe to use?

Perforce P4 MCP Server scores 48 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Perforce P4 MCP Server server expose?

Perforce P4 MCP Server exposes 15 tools: query_server, query_workspaces, modify_workspaces, query_files, modify_files, and 10 more. Their descriptions and schemas cost roughly 3,293 tokens of context every time the server is loaded.

Is the Perforce P4 MCP Server server still maintained?

Perforce P4 MCP Server is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.