P4 MCP Server 2026.1 - Stream Tools
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
mcpuserinstead ofroot, reducing potential impact in the event of a container escape.P4TICKETSpath updated to/home/mcpuser/.p4tickets; volume mount paths updated from/rootto/home/mcpuser. ENTRYPOINTandCMDsplit 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_confirmedflag before execution. - Fixed safety gate bypass in
modify_reviewswhere 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
P4MCPtoP4 MCPin the GitHub About section.
Security
- CVE-2026-24486: resolved
- CVE-2026-28802: Authlib upgraded to 1.6.7
Internal / Infrastructure
- Refactored
server.py,models.py,handlers.pyinto modular toolset files – no behaviour changes.
New Contributors
- @vzegnameta made their first contribution in #14
- @hjain-perforce made their first contribution in #28
- @LuNHans made their first contribution in #20
Full Changelog: 2025.2.2901372...v2026.1.2933350