mcp-perforce-server 2.1.1 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 iPraBhu
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1
+ MIT License
2
+
3
+ Copyright (c) 2026 iPraBhu
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  SOFTWARE.
@@ -1,34 +1,52 @@
1
1
  # MCP Perforce Server Configuration Examples
2
2
 
3
- ## Silent Operation Configuration
3
+ All examples in this document use the default safe profile: read-only enabled and delete disabled.
4
4
 
5
- To prevent VS Code from asking for approval on every command and to hide terminal execution:
5
+ ## Client Config Fields
6
6
 
7
- **Key Settings:**
8
- - `"alwaysAllow": ["p4.*"]` or `"alwaysAllow": true` - Auto-approve all p4 commands
9
- - `"LOG_LEVEL": "error"` - Minimize console output (only show errors)
10
- - `"disabled": false` - Ensure server is enabled
7
+ | Field | Required | Example | Description |
8
+ |---|---|---|---|
9
+ | `command` | Yes | `"mcp-perforce-server"` | Executable to start the MCP server. |
10
+ | `args` | No | `[]` or `["/path/to/dist/server.js"]` | Command arguments (use for local build path). |
11
+ | `env` | No | `{ "P4_READONLY_MODE": "true" }` | Server environment variables. |
12
+ | `alwaysAllow` | Client-specific | `["p4.*"]` or `true` | Auto-approve tool calls to reduce prompts. |
13
+ | `disabled` | Client-specific | `false` | Enables/disables the server entry. |
11
14
 
12
- ## Authentication Configuration
15
+ ## Authentication Options
13
16
 
14
- **Important:** Configure your Perforce credentials using one of these methods:
17
+ | Method | Recommended | How it works |
18
+ |---|---|---|
19
+ | `.p4config` file | Yes | Place Perforce variables in a `.p4config` file in your project/workspace root. |
20
+ | MCP `env` variables | Optional | Put Perforce variables directly in the MCP server config JSON. |
15
21
 
16
- 1. **`.p4config` file** (Recommended) - Create in project root:
17
- ```
18
- P4PORT=perforce-server:1666
19
- P4USER=your-username
20
- P4CLIENT=your-workspace-name
21
- P4PASSWD=your-password
22
- ```
22
+ `.p4config` example:
23
23
 
24
- 2. **Environment variables** in MCP config (see examples below)
24
+ ```ini
25
+ P4PORT=perforce-server:1666
26
+ P4USER=your-username
27
+ P4CLIENT=your-workspace-name
28
+ P4PASSWD=your-password
29
+ ```
30
+
31
+ ## Environment Variables Used In Examples
25
32
 
26
- The server automatically detects and uses these credentials. Passwords are masked in logs for security.
33
+ | Variable | Example Value | Default | Purpose |
34
+ |---|---|---|---|
35
+ | `P4_READONLY_MODE` | `"true"` | `true` | Keeps server in read-only mode. |
36
+ | `P4_DISABLE_DELETE` | `"true"` | `true` | Keeps delete operations disabled. |
37
+ | `LOG_LEVEL` | `"error"` | `warn` | Keeps console output minimal. |
38
+ | `P4PORT` | `"perforce-server:1666"` | unset | Perforce server address (required if not in `.p4config`). |
39
+ | `P4USER` | `"your-username"` | unset | Perforce user (required if not in `.p4config`). |
40
+ | `P4CLIENT` | `"your-workspace-name"` | unset | Perforce client/workspace (required if not in `.p4config`). |
41
+ | `P4PASSWD` | `"your-password"` | unset | Password/ticket (optional depending on server auth). |
42
+ | `P4CHARSET` | `"utf8"` | unset | Optional Perforce charset. |
43
+
44
+ For the complete server configuration table (all supported env vars), see [README.md](README.md#server-configuration-reference).
27
45
 
28
46
  ## VS Code with Claude Dev/Cline
29
47
 
30
- ### Option 1: Using .p4config file (Recommended)
31
- Create a `.p4config` file in your project root, then:
48
+ ### Option 1: Using `.p4config` (Recommended)
49
+
32
50
  ```json
33
51
  {
34
52
  "mcpServers": {
@@ -36,7 +54,7 @@ Create a `.p4config` file in your project root, then:
36
54
  "command": "mcp-perforce-server",
37
55
  "args": [],
38
56
  "env": {
39
- "P4_READONLY_MODE": "false",
57
+ "P4_READONLY_MODE": "true",
40
58
  "P4_DISABLE_DELETE": "true",
41
59
  "LOG_LEVEL": "error"
42
60
  },
@@ -47,7 +65,8 @@ Create a `.p4config` file in your project root, then:
47
65
  }
48
66
  ```
49
67
 
50
- ### Option 2: Direct configuration in MCP config
68
+ ### Option 2: Direct MCP Env Configuration
69
+
51
70
  ```json
52
71
  {
53
72
  "mcpServers": {
@@ -60,7 +79,7 @@ Create a `.p4config` file in your project root, then:
60
79
  "P4CLIENT": "your-workspace-name",
61
80
  "P4PASSWD": "your-password",
62
81
  "P4CHARSET": "utf8",
63
- "P4_READONLY_MODE": "false",
82
+ "P4_READONLY_MODE": "true",
64
83
  "P4_DISABLE_DELETE": "true",
65
84
  "LOG_LEVEL": "error"
66
85
  },
@@ -73,7 +92,8 @@ Create a `.p4config` file in your project root, then:
73
92
 
74
93
  ## Cursor IDE
75
94
 
76
- ### Option 1: Using .p4config file (Recommended)
95
+ ### Option 1: Using `.p4config` (Recommended)
96
+
77
97
  ```json
78
98
  {
79
99
  "mcp": {
@@ -82,7 +102,7 @@ Create a `.p4config` file in your project root, then:
82
102
  "command": "mcp-perforce-server",
83
103
  "args": [],
84
104
  "env": {
85
- "P4_READONLY_MODE": "false",
105
+ "P4_READONLY_MODE": "true",
86
106
  "P4_DISABLE_DELETE": "true",
87
107
  "LOG_LEVEL": "error"
88
108
  },
@@ -93,7 +113,8 @@ Create a `.p4config` file in your project root, then:
93
113
  }
94
114
  ```
95
115
 
96
- ### Option 2: Direct configuration in MCP config
116
+ ### Option 2: Direct MCP Env Configuration
117
+
97
118
  ```json
98
119
  {
99
120
  "mcp": {
@@ -103,10 +124,10 @@ Create a `.p4config` file in your project root, then:
103
124
  "args": [],
104
125
  "env": {
105
126
  "P4PORT": "perforce-server:1666",
106
- "P4USER": "your-username",
127
+ "P4USER": "your-username",
107
128
  "P4CLIENT": "your-workspace-name",
108
129
  "P4PASSWD": "your-password",
109
- "P4_READONLY_MODE": "false",
130
+ "P4_READONLY_MODE": "true",
110
131
  "P4_DISABLE_DELETE": "true",
111
132
  "LOG_LEVEL": "error"
112
133
  },
@@ -119,10 +140,15 @@ Create a `.p4config` file in your project root, then:
119
140
 
120
141
  ## Claude Desktop
121
142
 
122
- ### macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
123
- ### Windows: %APPDATA%\Claude\claude_desktop_config.json
143
+ Config file paths:
144
+
145
+ | Platform | Path |
146
+ |---|---|
147
+ | macOS | `~/Library/Application Support/Claude/claude_desktop_config.json` |
148
+ | Windows | `%APPDATA%\Claude\claude_desktop_config.json` |
149
+
150
+ ### Option 1: Using `.p4config` (Recommended)
124
151
 
125
- ### Option 1: Using .p4config file (Recommended)
126
152
  ```json
127
153
  {
128
154
  "mcpServers": {
@@ -130,7 +156,7 @@ Create a `.p4config` file in your project root, then:
130
156
  "command": "mcp-perforce-server",
131
157
  "args": [],
132
158
  "env": {
133
- "P4_READONLY_MODE": "false",
159
+ "P4_READONLY_MODE": "true",
134
160
  "P4_DISABLE_DELETE": "true",
135
161
  "LOG_LEVEL": "error"
136
162
  },
@@ -140,7 +166,8 @@ Create a `.p4config` file in your project root, then:
140
166
  }
141
167
  ```
142
168
 
143
- ### Option 2: Direct configuration in MCP config
169
+ ### Option 2: Direct MCP Env Configuration
170
+
144
171
  ```json
145
172
  {
146
173
  "mcpServers": {
@@ -150,8 +177,8 @@ Create a `.p4config` file in your project root, then:
150
177
  "env": {
151
178
  "P4PORT": "perforce-server:1666",
152
179
  "P4USER": "your-username",
153
- "P4CLIENT": "your-workspace-name",
154
- "P4_READONLY_MODE": "false",
180
+ "P4CLIENT": "your-workspace-name",
181
+ "P4_READONLY_MODE": "true",
155
182
  "P4_DISABLE_DELETE": "true",
156
183
  "LOG_LEVEL": "error"
157
184
  },
@@ -161,9 +188,9 @@ Create a `.p4config` file in your project root, then:
161
188
  }
162
189
  ```
163
190
 
164
- ## Local Development Setup (if not globally installed)
191
+ ## Local Development Setup (If Not Globally Installed)
165
192
 
166
- Replace the "command" field with the full path to your built server:
193
+ Replace `command` with `node` and point `args` at your built server:
167
194
 
168
195
  ```json
169
196
  {
@@ -172,52 +199,16 @@ Replace the "command" field with the full path to your built server:
172
199
  }
173
200
  ```
174
201
 
175
- ## Safety Configuration Levels
202
+ ## Safety Profile Used In This Document
176
203
 
177
- ### Maximum Safety (Default)
178
- ```json
179
- {
180
- "env": {
181
- "P4_READONLY_MODE": "true",
182
- "P4_DISABLE_DELETE": "true"
183
- }
184
- }
185
- ```
186
-
187
- ### Write-enabled, Delete Protected
188
- ```json
189
- {
190
- "env": {
191
- "P4_READONLY_MODE": "false",
192
- "P4_DISABLE_DELETE": "true"
193
- }
194
- }
195
- ```
204
+ | Profile | `P4_READONLY_MODE` | `P4_DISABLE_DELETE` | Behavior |
205
+ |---|---|---|---|
206
+ | Default safe profile | `true` | `true` | Read-only; write tools and delete operations blocked by default. |
196
207
 
197
- ## Configuration Notes
208
+ ## Troubleshooting
198
209
 
199
- ### Silent Operation
200
- - `"alwaysAllow": ["p4.*"]` - Auto-approves all p4 commands, preventing VS Code approval prompts
201
- - `"alwaysAllow": true` - Auto-approves all commands (Cursor)
202
- - `"LOG_LEVEL": "error"` - Reduces console output to errors only
203
- - `"disabled": false` - Ensures the server is active
204
-
205
- ### Security Levels
206
- - **Safe**: `P4_READONLY_MODE=true, P4_DISABLE_DELETE=true` (read-only)
207
- - **Recommended**: `P4_READONLY_MODE=false, P4_DISABLE_DELETE=true` (write, no delete)
208
- - **Full Access**: `P4_READONLY_MODE=false, P4_DISABLE_DELETE=false` (use with caution)
209
-
210
- ### Troubleshooting
211
- - If commands still show approval prompts, ensure `alwaysAllow` is configured
212
- - If you see terminal output, set `LOG_LEVEL` to `"error"`
213
- - Commands execute silently in the background without terminal windows
214
-
215
- ### Full Access (Use with Caution)
216
- ```json
217
- {
218
- "env": {
219
- "P4_READONLY_MODE": "false",
220
- "P4_DISABLE_DELETE": "false"
221
- }
222
- }
223
- ```
210
+ | Symptom | Check |
211
+ |---|---|
212
+ | Approval prompts still appear | Ensure `alwaysAllow` is configured for your client. |
213
+ | Too much terminal output | Set `LOG_LEVEL` to `"error"`. |
214
+ | Perforce auth/config errors | Verify `P4PORT`, `P4USER`, `P4CLIENT` are set via `.p4config` or MCP `env`. |
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # MCP Perforce Server
1
+ # MCP Perforce Server
2
2
 
3
3
  [![npm version](https://badge.fury.io/js/mcp-perforce-server.svg)](https://www.npmjs.com/package/mcp-perforce-server)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
@@ -18,9 +18,7 @@ npm install -g mcp-perforce-server
18
18
  ## Quick Start
19
19
 
20
20
  1. Make sure `p4` is installed and available in `PATH`.
21
- 2. Configure Perforce credentials using either:
22
- - `.p4config` in your workspace/project root, or
23
- - MCP `env` variables.
21
+ 2. Configure Perforce credentials using either `.p4config` in your workspace/project root, or MCP `env` variables.
24
22
  3. Add MCP server config in your IDE/client.
25
23
 
26
24
  ### Example `.p4config`
@@ -32,7 +30,32 @@ P4CLIENT=your-workspace-name
32
30
  P4PASSWD=your-password
33
31
  ```
34
32
 
35
- ### Global Install MCP Config
33
+ ### Global Install MCP Config (Default Safe Profile)
34
+
35
+ ```json
36
+ {
37
+ "mcpServers": {
38
+ "perforce": {
39
+ "command": "mcp-perforce-server"
40
+ }
41
+ }
42
+ }
43
+ ```
44
+
45
+ ### Local Repo MCP Config (Default Safe Profile)
46
+
47
+ ```json
48
+ {
49
+ "mcpServers": {
50
+ "perforce": {
51
+ "command": "node",
52
+ "args": ["/absolute/path/to/mcp-perforce-server/dist/server.js"]
53
+ }
54
+ }
55
+ }
56
+ ```
57
+
58
+ ### MCP Config (Default Safe Profile + Credentials in `env`)
36
59
 
37
60
  ```json
38
61
  {
@@ -40,25 +63,27 @@ P4PASSWD=your-password
40
63
  "perforce": {
41
64
  "command": "mcp-perforce-server",
42
65
  "env": {
43
- "P4_READONLY_MODE": "false",
44
- "P4_DISABLE_DELETE": "true",
45
- "LOG_LEVEL": "error"
66
+ "P4PORT": "ssl:perforce.example.com:1666",
67
+ "P4USER": "your-username",
68
+ "P4CLIENT": "your-workspace-name",
69
+ "P4PASSWD": "your-password-or-ticket"
46
70
  }
47
71
  }
48
72
  }
49
73
  }
50
74
  ```
51
75
 
52
- ### Local Repo MCP Config
76
+ Defaults are already safe: `P4_READONLY_MODE=true` and `P4_DISABLE_DELETE=true` unless explicitly set to `false`.
77
+
78
+ If you want to pin these explicitly in your client config:
53
79
 
54
80
  ```json
55
81
  {
56
82
  "mcpServers": {
57
83
  "perforce": {
58
- "command": "node",
59
- "args": ["/absolute/path/to/mcp-perforce-server/dist/server.js"],
84
+ "command": "mcp-perforce-server",
60
85
  "env": {
61
- "P4_READONLY_MODE": "false",
86
+ "P4_READONLY_MODE": "true",
62
87
  "P4_DISABLE_DELETE": "true",
63
88
  "LOG_LEVEL": "error"
64
89
  }
@@ -80,24 +105,64 @@ Windows `args` example:
80
105
  }
81
106
  ```
82
107
 
83
- ## Safe Defaults
108
+ ## Default Access Model
84
109
 
85
- - `P4_READONLY_MODE=true`
86
- - `P4_DISABLE_DELETE=true`
87
- - `P4_PERFORMANCE_MODE=fast`
110
+ | Setting | Default | Effect |
111
+ |---|---|---|
112
+ | `P4_READONLY_MODE` | `true` | Blocks all write-capable tools. |
113
+ | `P4_DISABLE_DELETE` | `true` | Blocks `p4.delete` even when write mode is enabled. |
114
+
115
+ Write-capable tools blocked when `P4_READONLY_MODE=true`:
116
+
117
+ | Tool |
118
+ |---|
119
+ | `p4.add`, `p4.edit`, `p4.delete`, `p4.revert`, `p4.sync` |
120
+ | `p4.changelist.create`, `p4.changelist.update`, `p4.changelist.submit`, `p4.submit` |
121
+ | `p4.resolve`, `p4.shelve`, `p4.unshelve` |
122
+ | `p4.copy`, `p4.move`, `p4.integrate`, `p4.merge` |
123
+
124
+ ## Server Configuration Reference
88
125
 
89
- ## Key Environment Variables
126
+ ### Runtime, Safety, and Performance
90
127
 
91
- | Variable | Purpose | Default |
128
+ | Variable | Default | Description |
92
129
  |---|---|---|
93
- | `P4_READONLY_MODE` | Block write operations | `true` |
94
- | `P4_DISABLE_DELETE` | Block delete operations | `true` |
95
- | `P4_PERFORMANCE_MODE` | `fast`, `balanced`, `secure` | `fast` |
96
- | `P4_TIMEOUT_MS` | Command timeout (ms) | mode-based |
97
- | `P4_RESPONSE_CACHE` | Read-result cache | `true` |
98
- | `P4_PRETTY_JSON` | Pretty JSON responses | `false` |
99
- | `P4CONFIG` | Config file name | `.p4config` |
100
- | `LOG_LEVEL` | `error`, `warn`, `info`, `debug` | `warn` |
130
+ | `P4_READONLY_MODE` | `true` | Read-only by default. Set to `false` to enable write-capable tools. |
131
+ | `P4_DISABLE_DELETE` | `true` | Delete operations are disabled by default. Set to `false` to allow `p4.delete`. |
132
+ | `P4_PATH` | `p4` / `p4.exe` | Custom path to Perforce CLI executable. |
133
+ | `P4CONFIG` | `.p4config` | `.p4config` file name used for upward discovery. |
134
+ | `LOG_LEVEL` | `warn` | Logging level: `error`, `warn`, `info`, `debug`. |
135
+ | `P4_PRETTY_JSON` | `false` | Pretty-print JSON responses when `true`. |
136
+ | `P4_PERFORMANCE_MODE` | `fast` | Preset: `fast`, `balanced`, `secure`. |
137
+ | `P4_TIMEOUT_MS` | `5000` / `10000` / `15000` | Command timeout in ms (`fast` / `balanced` / `secure`). |
138
+ | `P4_CONFIG_CACHE_TTL` | `600000` / `300000` / `300000` | `.p4config` cache TTL in ms (`fast` / `balanced` / `secure`). |
139
+ | `P4_RESPONSE_CACHE` | `true` | Enable/disable read-result response cache. |
140
+ | `P4_RESPONSE_CACHE_TTL_MS` | `5000` / `3000` / `1000` | Response cache TTL in ms (`fast` / `balanced` / `secure`). |
141
+ | `P4_RESPONSE_CACHE_MAX_ENTRIES` | `400` / `250` / `100` | Max cached read responses (`fast` / `balanced` / `secure`). |
142
+ | `P4_ENABLE_AUDIT_LOGGING` | `false` / `false` / `true` | Override audit logging (`fast` / `balanced` / `secure`). |
143
+ | `P4_ENABLE_RATE_LIMITING` | `false` / `false` / `true` | Override rate limiting (`fast` / `balanced` / `secure`). |
144
+ | `P4_ENABLE_MEMORY_LIMITS` | `false` / `true` / `true` | Override memory-limit checks (`fast` / `balanced` / `secure`). |
145
+ | `P4_ENABLE_INPUT_SANITIZATION` | `true` | Input sanitization is enabled unless set to `false`. |
146
+ | `P4_MAX_MEMORY_MB` | `512` | Memory limit for command execution and checks. |
147
+ | `P4_AUDIT_RETENTION_DAYS` | `90` | Number of days audit entries are retained. |
148
+ | `P4_RATE_LIMIT_REQUESTS` | `100` | Max requests per rate-limit window. |
149
+ | `P4_RATE_LIMIT_WINDOW_MS` | `600000` | Rate-limit window in milliseconds. |
150
+ | `P4_RATE_LIMIT_BLOCK_MS` | `3600000` | Block duration in milliseconds after exceeding limit. |
151
+
152
+ ### Perforce Connection Variables
153
+
154
+ | Variable | Required | Description |
155
+ |---|---|---|
156
+ | `P4PORT` | Yes | Perforce server address (for example `ssl:perforce.example.com:1666`). |
157
+ | `P4USER` | Yes | Perforce username. |
158
+ | `P4CLIENT` | Yes | Perforce client/workspace name. |
159
+ | `P4PASSWD` | No | Password or ticket (masked in server output). |
160
+ | `P4CHARSET` | No | Character set (for example `utf8`). |
161
+ | `P4COMMANDCHARSET` | No | Command charset override. |
162
+ | `P4LANGUAGE` | No | Localized language setting. |
163
+ | `P4DIFF` | No | Custom diff tool command. |
164
+ | `P4MERGE` | No | Custom merge tool command. |
165
+ | `P4EDITOR` | No | Editor for changelist descriptions/spec forms. |
101
166
 
102
167
  ## Tool Coverage
103
168
 
@@ -124,7 +189,4 @@ npm run test:integration
124
189
 
125
190
  ## License
126
191
 
127
- MIT
128
-
129
-
130
-
192
+ MIT
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/p4/config.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAe;IAC1D,OAAO,CAAC,WAAW,CAAoE;IACvF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2E;IAErG;;OAEG;IACG,UAAU,CAAC,SAAS,GAAE,MAAsB,GAAG,OAAO,CAAC,cAAc,CAAC;IA+C5E;;OAEG;YACW,YAAY;IAgC1B;;OAEG;YACW,eAAe;IA4B7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+BxB;;OAEG;IACG,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW7D;;OAEG;IACG,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QACrD,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,YAAY,EAAE,cAAc,CAAC;KAC9B,CAAC;IAgBF;;OAEG;IACH,mBAAmB,CAAC,YAAY,EAAE,cAAc,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IA4BvF;;OAEG;IACH,eAAe,IAAI,cAAc;IAOjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,GAAE;QAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KACb,GAAG,MAAM;CAyBhB"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/p4/config.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAe;IAC1D,OAAO,CAAC,WAAW,CAAoE;IACvF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2E;IAErG;;OAEG;IACG,UAAU,CAAC,SAAS,GAAE,MAAsB,GAAG,OAAO,CAAC,cAAc,CAAC;IA+C5E;;OAEG;YACW,YAAY;IAgC1B;;OAEG;YACW,eAAe;IA4B7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+BxB;;OAEG;IACG,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW7D;;OAEG;IACG,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QACrD,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,YAAY,EAAE,cAAc,CAAC;KAC9B,CAAC;IAgBF;;OAEG;IACH,mBAAmB,CAAC,YAAY,EAAE,cAAc,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IA4BvF;;OAEG;IACH,eAAe,IAAI,cAAc;IAOjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,GAAE;QAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KACb,GAAG,MAAM;CAyBhB"}
package/dist/p4/config.js CHANGED
@@ -47,6 +47,9 @@ function getDefaultConfigCacheTtl() {
47
47
  return '600000'; // 10 min
48
48
  }
49
49
  }
50
+ function isExplicitFalse(value) {
51
+ return typeof value === 'string' && value.trim().toLowerCase() === 'false';
52
+ }
50
53
  class P4Config {
51
54
  constructor() {
52
55
  this.configCache = new Map();
@@ -234,8 +237,8 @@ class P4Config {
234
237
  */
235
238
  getServerConfig() {
236
239
  return {
237
- readOnlyMode: process.env.P4_READONLY_MODE !== 'false', // Default: true
238
- disableDelete: process.env.P4_DISABLE_DELETE !== 'false', // Default: true
240
+ readOnlyMode: !isExplicitFalse(process.env.P4_READONLY_MODE), // Default: true
241
+ disableDelete: !isExplicitFalse(process.env.P4_DISABLE_DELETE), // Default: true
239
242
  };
240
243
  }
241
244
  /**
@@ -259,26 +262,26 @@ class P4Config {
259
262
  * Create a minimal .p4config file template
260
263
  */
261
264
  static createTemplate(options = {}) {
262
- const template = `# Perforce Configuration
263
- # This file should be placed in your project root directory
264
-
265
- # Server connection
266
- P4PORT=${options.port || 'your-perforce-server:1666'}
267
-
268
- # User credentials
269
- P4USER=${options.user || 'your-username'}
270
-
271
- # Client/workspace name
272
- P4CLIENT=${options.client || 'your-client-name'}
273
-
274
- # Character set (optional)
275
- ${options.charset ? `P4CHARSET=${options.charset}` : '# P4CHARSET=utf8'}
276
-
277
- # Optional: Editor for change descriptions
278
- # P4EDITOR=notepad
279
-
280
- # Optional: Diff tool
281
- # P4DIFF=diff
265
+ const template = `# Perforce Configuration
266
+ # This file should be placed in your project root directory
267
+
268
+ # Server connection
269
+ P4PORT=${options.port || 'your-perforce-server:1666'}
270
+
271
+ # User credentials
272
+ P4USER=${options.user || 'your-username'}
273
+
274
+ # Client/workspace name
275
+ P4CLIENT=${options.client || 'your-client-name'}
276
+
277
+ # Character set (optional)
278
+ ${options.charset ? `P4CHARSET=${options.charset}` : '# P4CHARSET=utf8'}
279
+
280
+ # Optional: Editor for change descriptions
281
+ # P4EDITOR=notepad
282
+
283
+ # Optional: Diff tool
284
+ # P4DIFF=diff
282
285
  `;
283
286
  return template;
284
287
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/p4/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/p4/config.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -1448,17 +1448,17 @@ if (require.main === module) {
1448
1448
  }
1449
1449
  // Handle help flag
1450
1450
  if (process.argv.includes('--help') || process.argv.includes('-h')) {
1451
- console.log(`
1452
- MCP Perforce Server v${packageJson.version}
1453
- ===========================
1454
-
1455
- A production-ready MCP (Model Context Protocol) server for Perforce operations.
1456
-
1457
- Usage:
1458
- mcp-perforce-server Start the MCP server (stdio transport)
1459
- mcp-perforce-server --help Show this help message
1460
- mcp-perforce-server --version Show version information
1461
-
1451
+ console.log(`
1452
+ MCP Perforce Server v${packageJson.version}
1453
+ ===========================
1454
+
1455
+ A production-ready MCP (Model Context Protocol) server for Perforce operations.
1456
+
1457
+ Usage:
1458
+ mcp-perforce-server Start the MCP server (stdio transport)
1459
+ mcp-perforce-server --help Show this help message
1460
+ mcp-perforce-server --version Show version information
1461
+
1462
1462
  Environment Variables:
1463
1463
  P4_READONLY_MODE=false Enable write operations (default: read-only enabled)
1464
1464
  P4_DISABLE_DELETE=false Enable delete operations (default: delete disabled)
@@ -1478,23 +1478,23 @@ Compliance & Security:
1478
1478
  P4_ENABLE_MEMORY_LIMITS=true|false Override memory limits (default in fast mode: false)
1479
1479
  P4_ENABLE_INPUT_SANITIZATION=false Disable input sanitization (default: enabled)
1480
1480
  P4_MAX_MEMORY_MB=1024 Memory limit in MB (default: 512)
1481
- P4_AUDIT_RETENTION_DAYS=365 Audit log retention days (default: 90)
1482
- P4_RATE_LIMIT_REQUESTS=100 Max requests per window (default: 100)
1483
- P4_RATE_LIMIT_WINDOW_MS=600000 Rate limit window ms (default: 10min)
1484
- P4_RATE_LIMIT_BLOCK_MS=3600000 Rate limit block duration ms (default: 1hr)
1485
-
1486
- Configuration:
1487
- Place a .p4config file in your project root or parent directories:
1488
-
1489
- P4PORT=your-server:1666
1490
- P4USER=your-username
1491
- P4CLIENT=your-workspace-name
1492
-
1493
- IDE Integration:
1494
- Configure your IDE's MCP client to use this server.
1495
- See README.md for VS Code and Cursor setup instructions.
1496
-
1497
- For more information: https://github.com/iPraBhu/mcp-perforce-server
1481
+ P4_AUDIT_RETENTION_DAYS=365 Audit log retention days (default: 90)
1482
+ P4_RATE_LIMIT_REQUESTS=100 Max requests per window (default: 100)
1483
+ P4_RATE_LIMIT_WINDOW_MS=600000 Rate limit window ms (default: 10min)
1484
+ P4_RATE_LIMIT_BLOCK_MS=3600000 Rate limit block duration ms (default: 1hr)
1485
+
1486
+ Configuration:
1487
+ Place a .p4config file in your project root or parent directories:
1488
+
1489
+ P4PORT=your-server:1666
1490
+ P4USER=your-username
1491
+ P4CLIENT=your-workspace-name
1492
+
1493
+ IDE Integration:
1494
+ Configure your IDE's MCP client to use this server.
1495
+ See README.md for VS Code and Cursor setup instructions.
1496
+
1497
+ For more information: https://github.com/iPraBhu/mcp-perforce-server
1498
1498
  `);
1499
1499
  process.exit(0);
1500
1500
  }
package/package.json CHANGED
@@ -1,114 +1,114 @@
1
- {
2
- "name": "mcp-perforce-server",
3
- "version": "2.1.1",
4
- "description": "Enterprise-grade MCP (Model Context Protocol) server for Perforce P4 integration with AI assistants. Features 37+ Perforce operations including merge resolution, shelving, advanced search, blame annotations, and comprehensive security with audit logging, rate limiting, input sanitization, and compliance reporting. SOC 2 ready with GDPR/HIPAA-friendly architecture. Created by Pratik Bhuite using vibe coding to solve real-world Perforce automation challenges. Open source, production-ready, and enterprise-compliant.",
5
- "main": "dist/server.js",
6
- "bin": {
7
- "mcp-perforce-server": "dist/server.js"
8
- },
9
- "scripts": {
10
- "build": "tsc",
11
- "dev": "tsc && node dist/server.js",
12
- "start": "node dist/server.js",
13
- "watch": "tsc --watch",
14
- "clean": "rimraf dist",
15
- "test": "node test-server.js",
16
- "test:integration": "npm run build && node integration-test.js",
17
- "prepare": "npm run build",
18
- "prepublishOnly": "npm run clean && npm run build",
19
- "audit-fix": "npm audit fix"
20
- },
21
- "keywords": [
22
- "mcp",
23
- "model-context-protocol",
24
- "perforce",
25
- "p4",
26
- "p4v",
27
- "vcs",
28
- "version-control",
29
- "ai",
30
- "automation",
31
- "claude",
32
- "chatgpt",
33
- "vscode",
34
- "cursor",
35
- "anthropic",
36
- "openai",
37
- "git",
38
- "scm",
39
- "devops",
40
- "enterprise",
41
- "developer-tools",
42
- "code-assistant",
43
- "ai-integration",
44
- "workflow-automation",
45
- "typescript",
46
- "cross-platform",
47
- "windows",
48
- "macos",
49
- "linux",
50
- "production-ready",
51
- "secure",
52
- "open-source",
53
- "community",
54
- "customizable",
55
- "vibe-coding",
56
- "merge-resolution",
57
- "code-review",
58
- "shelving",
59
- "blame",
60
- "grep",
61
- "search",
62
- "job-tracking",
63
- "labels",
64
- "analytics",
65
- "comprehensive",
66
- "37+operations",
67
- "compliance",
68
- "audit-logging",
69
- "rate-limiting",
70
- "input-sanitization",
71
- "memory-limits",
72
- "soc2",
73
- "gdpr",
74
- "hipaa",
75
- "enterprise-security",
76
- "compliance-reporting"
77
- ],
78
- "homepage": "https://github.com/iPraBhu/mcp-perforce-server#readme",
79
- "bugs": {
80
- "url": "https://github.com/iPraBhu/mcp-perforce-server/issues"
81
- },
82
- "repository": {
83
- "type": "git",
84
- "url": "git+https://github.com/iPraBhu/mcp-perforce-server.git"
85
- },
86
- "license": "MIT",
87
- "author": "Pratik Bhuite (https://github.com/iPraBhu)",
88
- "funding": {
89
- "type": "ko-fi",
90
- "url": "https://ko-fi.com/adevguide"
91
- },
92
- "type": "commonjs",
93
- "types": "./dist/server.d.ts",
94
- "files": [
95
- "dist/**/*",
96
- "README.md",
97
- "MCP_CONFIG_EXAMPLES.md",
98
- "LICENSE"
99
- ],
100
- "dependencies": {
101
- "@modelcontextprotocol/sdk": "^1.25.3"
102
- },
103
- "devDependencies": {
104
- "@types/node": "^25.0.10",
105
- "rimraf": "^5.0.10",
106
- "typescript": "^5.7.2"
107
- },
108
- "engines": {
109
- "node": ">=18.0.0"
110
- },
111
- "publishConfig": {
112
- "access": "public"
113
- }
114
- }
1
+ {
2
+ "name": "mcp-perforce-server",
3
+ "version": "2.1.2",
4
+ "description": "Enterprise-grade MCP (Model Context Protocol) server for Perforce P4 integration with AI assistants. Features 37+ Perforce operations including merge resolution, shelving, advanced search, blame annotations, and comprehensive security with audit logging, rate limiting, input sanitization, and compliance reporting. SOC 2 ready with GDPR/HIPAA-friendly architecture. Created by Pratik Bhuite using vibe coding to solve real-world Perforce automation challenges. Open source, production-ready, and enterprise-compliant.",
5
+ "main": "dist/server.js",
6
+ "bin": {
7
+ "mcp-perforce-server": "dist/server.js"
8
+ },
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "dev": "tsc && node dist/server.js",
12
+ "start": "node dist/server.js",
13
+ "watch": "tsc --watch",
14
+ "clean": "rimraf dist",
15
+ "test": "node test-server.js",
16
+ "test:integration": "npm run build && node integration-test.js",
17
+ "prepare": "npm run build",
18
+ "prepublishOnly": "npm run clean && npm run build",
19
+ "audit-fix": "npm audit fix"
20
+ },
21
+ "keywords": [
22
+ "mcp",
23
+ "model-context-protocol",
24
+ "perforce",
25
+ "p4",
26
+ "p4v",
27
+ "vcs",
28
+ "version-control",
29
+ "ai",
30
+ "automation",
31
+ "claude",
32
+ "chatgpt",
33
+ "vscode",
34
+ "cursor",
35
+ "anthropic",
36
+ "openai",
37
+ "git",
38
+ "scm",
39
+ "devops",
40
+ "enterprise",
41
+ "developer-tools",
42
+ "code-assistant",
43
+ "ai-integration",
44
+ "workflow-automation",
45
+ "typescript",
46
+ "cross-platform",
47
+ "windows",
48
+ "macos",
49
+ "linux",
50
+ "production-ready",
51
+ "secure",
52
+ "open-source",
53
+ "community",
54
+ "customizable",
55
+ "vibe-coding",
56
+ "merge-resolution",
57
+ "code-review",
58
+ "shelving",
59
+ "blame",
60
+ "grep",
61
+ "search",
62
+ "job-tracking",
63
+ "labels",
64
+ "analytics",
65
+ "comprehensive",
66
+ "37+operations",
67
+ "compliance",
68
+ "audit-logging",
69
+ "rate-limiting",
70
+ "input-sanitization",
71
+ "memory-limits",
72
+ "soc2",
73
+ "gdpr",
74
+ "hipaa",
75
+ "enterprise-security",
76
+ "compliance-reporting"
77
+ ],
78
+ "homepage": "https://github.com/iPraBhu/mcp-perforce-server#readme",
79
+ "bugs": {
80
+ "url": "https://github.com/iPraBhu/mcp-perforce-server/issues"
81
+ },
82
+ "repository": {
83
+ "type": "git",
84
+ "url": "git+https://github.com/iPraBhu/mcp-perforce-server.git"
85
+ },
86
+ "license": "MIT",
87
+ "author": "Pratik Bhuite (https://github.com/iPraBhu)",
88
+ "funding": {
89
+ "type": "ko-fi",
90
+ "url": "https://ko-fi.com/adevguide"
91
+ },
92
+ "type": "commonjs",
93
+ "types": "./dist/server.d.ts",
94
+ "files": [
95
+ "dist/**/*",
96
+ "README.md",
97
+ "MCP_CONFIG_EXAMPLES.md",
98
+ "LICENSE"
99
+ ],
100
+ "dependencies": {
101
+ "@modelcontextprotocol/sdk": "^1.25.3"
102
+ },
103
+ "devDependencies": {
104
+ "@types/node": "^25.0.10",
105
+ "rimraf": "^5.0.10",
106
+ "typescript": "^5.7.2"
107
+ },
108
+ "engines": {
109
+ "node": ">=18.0.0"
110
+ },
111
+ "publishConfig": {
112
+ "access": "public"
113
+ }
114
+ }