Skip to content

P4 MCP Server 2026.1 - Stream Tools

Choose a tag to compare

@hjain-perforce hjain-perforce released this 27 Apr 08:19

What's New

Stream Operations

P4 MCP Server now supports a full suite of Perforce P4 stream operations:

  • Detect whether a workspace is stream-based or classic.
  • List streams and their structure (name, type, parent, path).
  • Switch a workspace to a different stream (with open-file safety checks; requires confirmation before executing).
  • Create a new stream from a parent, with type and duplicate-name validation.
  • Edit an existing stream spec safely.
  • Guard against stream deletion that would affect active workspaces.
  • Validate file operations against stream context before executing.
  • Detect when a stream spec resolve is required.
  • Propagate changes between streams (merge, copy, interchanges) with preview support.
  • View integration status between streams (p4 istat).

Admin and User Controls for MCP Tools

Administrators can now enable or disable the P4 MCP server, toolsets, and individual tools globally, per P4 group, or per individual user using p4 property. The MCP server checks properties in this order. Each property is resolved independently by P4 using the standard resolution rules (highest -s wins, then user > group > global at equal sequence, then alphabetically-first group name).

# Global controls
p4 property -a -n mcp.enabled -v true
p4 property -a -n mcp.toolsets.write -v false
p4 property -a -n mcp.toolsets.allowed -v "files,changelists,streams"

# Per-group toolset permissions
p4 property -a -n mcp.toolset.files.enabled -v true -g developers
p4 property -a -n mcp.toolset.workspace.write -v false -g reviewers

# Tool-specific overrides
p4 property -a -n mcp.toolset.files.tools -v "query_files,query_diff" -g reviewers

# Emergency global disable
p4 property -a -n mcp.enabled -v false

See the updated README for the full property reference and examples.

Remote MCP Server Deployment via HTTP

P4 MCP Server can now be deployed centrally on a shared host using HTTP transport and a shared read-only Perforce account, giving multiple users MCP access without a per-user installation or local binary. See the README for setup instructions and known limitations.

Linux Pre-Built Binary

P4 MCP Server now ships a pre-built Linux binary (Ubuntu 20.04+) alongside the existing macOS and Windows binaries. Linux users no longer need to build from source. The CI/CD pipeline has been updated to publish p4-mcp-server-linux.tar.gz on every release.

SSL / Custom CA Support

New CLI flags and environment variables allow use in environments with self-signed or internal CA certificates for P4 Code Review and P4 Code Review API connections:

--ssl-no-verify          Disable SSL certificate verification
--ca-bundle <path>       Path to a CA bundle file

P4MCP_SSL_VERIFY=false   Env var equivalent of --ssl-no-verify
P4MCP_CA_BUNDLE=<path>   Env var equivalent of --ca-bundle
P4MCP_TLS_CA_MODE=certifi  Use certifi bundle instead of OS trust store

Priority order: CLI args > env vars > default (verification enabled).

MCP Registry Discovery

P4 MCP Server is now published to the MCP Registry with a server.json manifest, making it discoverable by MCP-compatible clients (VS Code, Copilot, Claude, Cursor). A pre-built Docker image is available at ghcr.io/perforce/p4mcp-server – no local build required. The README has been updated to use the published image as the primary installation path.

Confirmation Prompts for Destructive Operations

Destructive operations (file delete, changelist delete, workspace delete, shelve delete, stream delete, review actions) now use MCP elicitation to prompt for explicit user confirmation before executing. The prompt describes exactly what will be affected. If the user cancels, no operation is performed. The separate execute_delete tool has been removed.

Lightweight Perforce Skill Profile

A new guide under docs/skills/ documents a minimal recommended tool subset for IDE agent use. The lightweight profile reduces LLM context size and improves tool invocation reliability in constrained environments.

FastMCP 3 and Search Transforms

Upgraded to FastMCP 3. Search Transforms are now enabled, filtering the visible tool list based on query context and reducing tool catalog token cost for connected MCP clients.

Docker: Non-Root Execution and Flexible Argument Passing

  • Container now runs as mcpuser instead of root, reducing potential impact in the event of a container escape. P4TICKETS path updated to /home/mcpuser/.p4tickets; volume mount paths updated from /root to /home/mcpuser.
  • ENTRYPOINT and CMD split so additional arguments can be passed to the server at container runtime without overriding the entrypoint.

Bug Fixes

  • Removed unnecessary workspace ownership check that blocked valid operations on shared workspaces.
  • Destructive operations now correctly enforce the user_confirmed flag before execution.
  • Fixed safety gate bypass in modify_reviews where obliterate actions did not require approval.
  • Removed unused _get_public_ip() method that made outbound calls to an external service to resolve the developer IP.
  • Fixed unintended Perforce user creation when an arbitrary string was supplied as P4USER.
  • Corrected product name from P4MCP to P4 MCP in the GitHub About section.

Security


Internal / Infrastructure

  • Refactored server.py, models.py, handlers.py into modular toolset files – no behaviour changes.

New Contributors


Full Changelog: 2025.2.2901372...v2026.1.2933350