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

Perforce P4 MCP server for version control and P4 DAM digital asset management.

37 Trust /100

Last scanned (10 hours ago)

Scores higher than 37% of OCI servers

Category Version Control

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
  • No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
  • Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.Unverified
  • Install-script risk not yet assessed.Unverified
  • Dependency health could not be checked: this artifact ships no SBOM or dependency manifest, so there is no dependency list to read.Unverified
Provenance & Transparency35
Schema Quality & AI Usability57
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 3427 tokens (~228/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 Management10
  • Stability observed for 3 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.

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.

  • 5 Nov 26 +1

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

  • 3 Nov 26 +1

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

  • 2 Nov 26 35

    First indexed and scored.

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 5 Nov 2026 · Analysed oci/ghcr.io/perforce/p4mcp-server@2026.4.3126709

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,427 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_id––Changelist ID - required for most actions except create
descriptionstring–Changelist description - required for create, optional for update
file_paths––File 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
changeliststring–Changelist ID or 'default'
file_paths––Full depot or client or local paths
forceboolean–Force operation - use with caution
modestring–Resolve mode: auto(-am), safe(-as), force(-af), preview(-n), theirs(-at), yours(-ay)
source_paths––Source paths - required for move action
target_paths––Target 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 ~491

Create/update/delete reviews (WRITE permission)

NameTypeReqDescription
actionstringyesReview modification action. To delete/obliterate review, use 'obliterate' action which requires approval
body––Comment body (required for add_comment, reply_comment)
change_id––Changelist ID (required for create, append_change, replace_with_change)
cleanup––Perform cleanup for approved:commit/committed transitions
comment_content––Content lines used to anchor an inline comment to the correct diff position (add_comment). Supply the code line the comment is on plus the four preceding lines, each terminated with a newline charact…
comment_file_path––File path for inline comment
comment_id––Comment ID (reply_comment, edit_comment, mark_comment_read/unread)
comment_left_line––Left diff line number for inline comment
comment_right_line––Right diff line number for inline comment
comment_version––Review version for comment attachment
description––Review description (optional on create)
fix_status––Job fix status when transitioning
jobs––Associated job IDs for transition
max_reviewsinteger–Maximum number of inactive reviews to archive (0 = no limit)
new_author––New author username (update_author)
new_description––New review description (update_description)
not_updated_since––ISO date (YYYY-MM-DD) threshold for archive_inactive
notify––Notification mode
participant_group_names––List of participant group names
participant_groups_required––List of required participant groups
participant_user_names––List of participant usernames
participant_users_required––List of required participant usernames
required_reviewers––List of required reviewers
review_id––Review ID (required for most actions except create, archive_inactive)
reviewer_group_names––List of reviewer group names
reviewer_groups_required––List of required reviewer groups
reviewers––List of reviewers
task_state––Task state. add_comment accepts only 'open'|'comment'; edit_comment additionally accepts 'addressed'|'verified'
transition––Transition target state
version––Review version (optional for vote)
vote_value––Vote 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_paths––File paths for shelve/unshelve/update/delete
forceboolean–Force operation - use with caution
target_changeliststring–Target 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_roots––Alternate root paths (create_workspace)
branch––Branch spec name for integrate/populate (-b flag)
changelist––Changelist for edit_spec, shelve_spec, unshelve_spec, or propagation, 'default' not allowed for edit_spec/shelve_spec/unshelve_spec
description––Stream or workspace description
file_paths––File paths for propagation
forceboolean–Force operation
host––Host restriction (create_workspace)
ignored––Ignored paths
integrate_around_deletedboolean–Integrate around deleted revisions (-Di flag)
max_files––Limit number of files processed (-m flag)
name––Short display name for the stream
options––Stream options: 'allsubmit/ownersubmit unlocked/locked toparent/notoparent fromparent/nofromparent'
output_baseboolean–Show base revision with each scheduled resolve (-Ob flag for merge/integrate) or display list of files created (-o flag for populate)
parent––Parent stream (required for non-mainline create)
parent_stream––Override parent stream for propagation (-P flag)
parent_view––Parent view treatment: 'inherit' or 'noinherit'
paths––Stream view paths (e.g. ['share ...', 'isolate dir/...'])
previewboolean–Preview only, don't make changes (-n flag)
quietboolean–Suppress informational messages (-q flag)
remapped––Remapped paths
resolve_mode––Resolve mode for resolve_spec: 'auto', 'accept_theirs', 'accept_yours'
reverseboolean–Reverse direction (-r flag)
root––Workspace root directory (create_workspace)
schedule_branch_resolveboolean–Schedule 'branch resolves' instead of branching new target files automatically (-Rb flag)
skip_cherry_pickedboolean–Skip cherry-picked revisions already integrated (-Rs flag)
source_path––Source path for populate
stream_name––Stream depot path (e.g. '//depot/main'). Also used as -S flag for propagation.
stream_type––Stream type (required for create): mainline, development, sparsedev, release, sparserel, task, virtual
target_changelist––Target changelist for unshelve_spec
target_path––Target path for populate
virtualboolean–Copy using virtual stream (-v flag, copy only)
workspace––Workspace name for switch
workspace_name––Workspace 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_description––Workspace description
workspace_line_end––Line ending style (local, unix, win, mac)
workspace_namestringyesWorkspace name
workspace_options––Workspace options
workspace_root––Root path of the workspace
workspace_view––View 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_id––Changelist ID - required for get action
depot_path––Filter by depot path - for list action
max_results––Maximum 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.
status––Filter by status - for list action
user––Filter by user - for list action
workspace_name––Filter by workspace - for list action

Structured output declared, but exposes no named fields.

No examples provided.

query_files ~235

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_insensitiveboolean–Case-insensitive matching for grep action
diff2boolean–Use p4 diff2 for depot-to-depot diff, false for mixed diff
file2––Second file path - required for diff action
file_pathstringyesPrimary file path - required for all actions
max_results––Maximum 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.
pattern––Search or grep pattern - required for search and grep actions
ranges––Optional line ranges for the content action only. Each inner list is a [start, end] pair, 1-based inclusive. When set, the response carries a 'chunks' array with one entry per range instead of the wh…

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_id––Changelist ID - required for list_jobs action
job_id––Job ID - required for get_job action
max_resultsinteger–Maximum 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
after––Review ID to seek to for pagination (list action). Reviews up to and including this ID are excluded.
after_updated––Return reviews updated on the day before this date/time in seconds since epoch (list action). Mutually exclusive with 'after'.
comments_fields––Comma-separated list of fields to return for comments action
fields––List of fields to return for list/get actions
from_version––Starting version for files action
include_transitions––Include allowed state transitions in get action response
keywords––Search keyword(s) to filter reviews (list action). Use with keywords_fields.
keywords_fields––Fields to search keywords in (list action). Valid: changes, author, participants, hasReviewer, description, updated, projects, state, testStatus, pending, groups, id
max_resultsinteger–Maximum number of results to return
projects––Filter by project name(s) (list action)
result_order––Set to 'updated' to return most recently updated reviews first (list action)
review_id––Review ID - required for get, transitions, files_readby, files, comments, activity actions
state––Filter by review state(s) (list action). Valid: needsRevision, needsReview, approved, approved:isPending, approved:commit, approved:notPending, rejected, archived
to_version––Ending version for files action
up_voters––List 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_id––Changelist ID - required for diff and files actions
max_resultsinteger–Maximum number of results to return
user––Filter 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_streamsboolean–Include virtual streams in 'list' results
at_change––Changelist number for historical stream spec
both_directionsboolean–Show integration status in both directions (-a flag for integration_status)
changelist––Changelist for validate_submit
fields––Fields to return for 'list' (e.g. ['Stream', 'Owner', 'Name', 'Type'])
file_paths––File paths for validate_file or interchanges
filter––Filter expression string for 'list' (-F flag). Supports &, |, and parentheses. E.g. 'Parent=//Ace/MAIN&(Type=development|Type=release)'
force_refreshboolean–Force istat to assume cache is stale and search for pending integrations (-c flag)
limit––Max changelists (interchanges)
long_outputboolean–Full changelist descriptions (interchanges)
max_results––Maximum number of results to return. Bounds 'list' and 'list_workspaces' and also caps 'children' via 'p4 streams -m N'. Omit for unbounded results.
reverseboolean–Reverse comparison direction (interchanges)
stream_name––Stream depot path (e.g. '//depot/main'). Required for most actions.
stream_path––Stream path pattern(s) for 'list' (e.g. ['//depot/...'])
template––Template workspace for get_workspace
unloadedboolean–Include unloaded streams/workspaces
user––Filter workspaces by user (list_workspaces)
view_without_editboolean–View locked stream without opening for edit (-v flag)
viewmatch––Single depot file path to filter streams whose views contain this path
workspace––Workspace 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_resultsinteger–Maximum number of results to return
user––Filter by user - optional for list action
workspace_name––Workspace name - required for get, type, status actions

Structured output declared, but exposes no named fields.

No examples provided.

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 -e P4PORT -e P4USER -e P4CLIENT -e P4PASSWD -e P4DAM_API_KEY ghcr.io/perforce/p4mcp-server:2026.4.3126709. 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

# add to Claude Code
claude mcp add perforce-p4mcp-server -- docker run --rm -i -e P4PORT -e P4USER -e P4CLIENT -e P4PASSWD -e P4DAM_API_KEY ghcr.io/perforce/p4mcp-server:2026.4.3126709

This image reads P4PORT, P4USER, P4CLIENT, P4PASSWD and P4DAM_API_KEY. Set them in your client's env block for this server; docker run -e passes each one through to the container.

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 for version control and P4 DAM digital asset management. This page covers its container image (ghcr.io/perforce/p4mcp-server).

Is the Perforce P4 MCP Server server safe to use?

Perforce P4 MCP Server scores 37 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,427 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 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.