coding-tools-mcp 0.1.5__tar.gz → 0.1.7__tar.gz

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.
@@ -1,9 +1,46 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.2
2
2
  Name: coding-tools-mcp
3
- Version: 0.1.5
3
+ Version: 0.1.7
4
4
  Summary: Workspace-confined coding tools exposed as an MCP server.
5
5
  Author: Coding Tools MCP Contributors
6
- License-Expression: LicenseRef-Coding-Tools-MCP-Source-Available
6
+ License: Coding Tools MCP Source-Available License v1.0
7
+
8
+ Copyright (c) 2026 Coding Tools MCP Contributors.
9
+ All rights reserved except as expressly granted below.
10
+
11
+ 1. Permitted Use
12
+
13
+ You may view, clone, build, run, and modify the Software solely for internal
14
+ evaluation, development, testing, and security review.
15
+
16
+ 2. Restrictions
17
+
18
+ Without prior written permission from the copyright holders, you may not:
19
+
20
+ - distribute, publish, sublicense, sell, lease, or otherwise transfer the
21
+ Software or modified versions of the Software;
22
+ - provide the Software or modified versions as a hosted, managed, or
23
+ software-as-a-service offering for third parties;
24
+ - use the Software or modified versions for production commercial purposes;
25
+ - remove or alter copyright, license, or attribution notices;
26
+ - use the project name, trademarks, or branding to imply endorsement.
27
+
28
+ 3. Contributions
29
+
30
+ Unless a separate written agreement says otherwise, any contribution submitted
31
+ to this project may be used by the copyright holders under this license and
32
+ under any future license chosen by the copyright holders.
33
+
34
+ 4. No Warranty
35
+
36
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
37
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
38
+ FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL THE
39
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER
40
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM,
41
+ OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
42
+ SOFTWARE.
43
+
7
44
  Project-URL: Homepage, https://github.com/xyTom/coding-tools-mcp
8
45
  Project-URL: Documentation, https://github.com/xyTom/coding-tools-mcp/tree/main/docs
9
46
  Project-URL: Source, https://github.com/xyTom/coding-tools-mcp
@@ -18,7 +55,6 @@ Requires-Dist: ruff<0.16,>=0.15; extra == "dev"
18
55
  Requires-Dist: typing_extensions>=4.12; extra == "dev"
19
56
  Provides-Extra: image
20
57
  Requires-Dist: Pillow>=10.0; extra == "image"
21
- Dynamic: license-file
22
58
 
23
59
  # Coding Tools MCP
24
60
 
@@ -37,12 +73,17 @@ It is not a prompt wrapper. It does not expose external agent accounts, memory,
37
73
  - [MCP client configuration](docs/mcp-client-config.md)
38
74
  - [Remote MCP](docs/remote-mcp.md)
39
75
  - [Tools and schemas](docs/tools-and-schemas.md)
76
+ - [Permission modes](docs/permission-modes.md)
77
+ - [Exec command recipes](docs/exec-command-recipes.md)
78
+ - [Docker sandbox](docs/docker.md)
40
79
  - [Security policy](SECURITY.md)
80
+ - [Security boundary](docs/security-boundary.md)
41
81
  - [CI and test commands](docs/ci-and-tests.md)
42
82
  - [Dogfood](docs/dogfood.md)
43
83
  - [SWE-bench evaluation](docs/swe-bench.md)
44
84
  - [Known limitations](docs/limitations.md)
45
85
  - [Troubleshooting](docs/troubleshooting.md)
86
+ - [Exec troubleshooting](docs/troubleshooting-exec.md)
46
87
  - [Competitive analysis](docs/competitive-analysis.md)
47
88
  - Normative MCP runtime profile: [docs/profile-v0.1.md](docs/profile-v0.1.md)
48
89
 
@@ -89,15 +130,19 @@ uvx coding-tools-mcp --stdio --workspace /path/to/repo
89
130
  If you are working from this checkout instead of a published package:
90
131
 
91
132
  ```bash
92
- cd /root/coding-tools-mcp
93
- python -m pip install -e ".[dev]"
94
- coding-tools-mcp --workspace /path/to/repo --host 127.0.0.1 --port 8765
133
+ make start
95
134
  ```
96
135
 
97
- Install the optional image extra when you want `view_image` auto-resize support:
136
+ Pass a different workspace, host, port, or extra server flags with Make variables:
98
137
 
99
138
  ```bash
100
- python -m pip install -e ".[image]"
139
+ make start MCP_WORKSPACE=/path/to/repo MCP_PORT=8000 MCP_ARGS="--permission-mode trusted"
140
+ ```
141
+
142
+ If dependencies are missing, install the runtime in editable mode:
143
+
144
+ ```bash
145
+ python -m pip install -e ".[dev]"
101
146
  ```
102
147
 
103
148
  HTTP endpoint:
@@ -106,6 +151,12 @@ HTTP endpoint:
106
151
  http://127.0.0.1:8765/mcp
107
152
  ```
108
153
 
154
+ Install the optional image extra when you want `view_image` auto-resize support:
155
+
156
+ ```bash
157
+ python -m pip install -e ".[image]"
158
+ ```
159
+
109
160
  Stdio:
110
161
 
111
162
  ```bash
@@ -114,13 +165,25 @@ coding-tools-mcp --stdio --workspace /path/to/repo
114
165
 
115
166
  Set `CODING_TOOLS_MCP_TRACE=1` to emit redacted JSON tool-call trace events to stderr for local debugging. Logs stay off stdout so stdio JSON-RPC remains clean.
116
167
 
117
- If your MCP client does not support permission elicitation and you explicitly want permission-gated operations to run, start with:
168
+ By default, `exec_command` passes a core shell environment only. For local toolchains that depend on inherited environment variables, such as MSVC developer prompts, start with:
169
+
170
+ ```bash
171
+ CODING_TOOLS_MCP_SHELL_ENV_INHERIT=all coding-tools-mcp --workspace /path/to/repo
172
+ ```
173
+
174
+ `inherit=all` still filters secret-looking and loader/startup variables unless dangerous mode is also enabled. For local development with dependency downloads, shell expansion, and inline interpreter snippets, use:
175
+
176
+ ```bash
177
+ coding-tools-mcp --permission-mode trusted --workspace /path/to/repo
178
+ ```
179
+
180
+ `--allow-network` remains available as a compatibility flag when you only want to open network-looking commands. If your MCP client does not support permission elicitation and you explicitly want to disable `exec_command` permission gates inside an isolated container or VM, start with:
118
181
 
119
182
  ```bash
120
- coding-tools-mcp --dangerously-skip-all-permissions --workspace /path/to/repo
183
+ coding-tools-mcp --permission-mode dangerous --workspace /path/to/repo
121
184
  ```
122
185
 
123
- This auto-grants permission-gated operations such as network-looking commands, destructive commands, shell expansion, and sensitive env passed through `exec_command`. Workspace path boundaries still apply.
186
+ This disables `exec_command` permission gates such as network-looking commands, destructive command checks, shell expansion, inline scripts, and sensitive env checks. Workspace path boundaries for direct file tools still apply. `--dangerously-skip-all-permissions` remains as a compatibility alias.
124
187
 
125
188
  ## MCP Client Examples
126
189
 
@@ -184,7 +247,7 @@ scripts/tunnel.sh ngrok /path/to/repo
184
247
  scripts/tunnel.sh devtunnel /path/to/repo
185
248
  ```
186
249
 
187
- For clients that support custom headers, use bearer-token auth with `Authorization: Bearer <token>`. For MCP clients that speak OAuth 2.1 Authorization Code + PKCE, use `CODING_TOOLS_MCP_AUTH_MODE=oauth` with `scripts/tunnel.sh` (or `scripts/install.sh --auth-mode oauth`); the only env var you need to set is `CODING_TOOLS_MCP_SERVER_URL` (which must match the tunnel's stable public URL), and the script prints generated `CLIENT_ID`/`CLIENT_SECRET`/`PASSWORD` values on startup. Clients that cannot send custom bearer headers and do not speak OAuth should use anonymous `read-only` mode only for local/testing tunnels, or be placed behind an external auth proxy for production use.
250
+ For clients that support custom headers, use bearer-token auth with `Authorization: Bearer <token>`. For MCP clients that speak OAuth 2.1 Authorization Code + PKCE, use `CODING_TOOLS_MCP_AUTH_MODE=oauth` with `scripts/tunnel.sh` (or `scripts/install.sh --auth-mode oauth`). The server can infer its OAuth issuer from the tunnel request URL, so one-shot tunnels like cloudflared work without setting `CODING_TOOLS_MCP_SERVER_URL` before startup; set it only when you want to pin a stable issuer. The script prints a generated OAuth password, accepts any non-empty client_id by default, and lets you opt into `CODING_TOOLS_MCP_OAUTH_CLIENT_ID`/`CODING_TOOLS_MCP_OAUTH_CLIENT_SECRET` only when you need to lock down a confidential client. Clients that cannot send custom bearer headers and do not speak OAuth should use anonymous `read-only` mode only for local/testing tunnels, or be placed behind an external auth proxy for production use.
188
251
 
189
252
  See [docs/remote-mcp.md](docs/remote-mcp.md) for the exact modes and security notes.
190
253
 
@@ -226,9 +289,9 @@ For input/output schemas and result envelopes, see [docs/tools-and-schemas.md](d
226
289
 
227
290
  The runtime binds one workspace root per server process. Paths are workspace-relative by default. Absolute paths, `..` traversal, and symlink escapes are rejected. Recursive listing/search excludes `.git`, `.reference`, `node_modules`, `target`, `dist`, build outputs, virtualenvs, and common caches by default.
228
291
 
229
- `exec_command` runs under policy controls with workspace-bound cwd, timeout, output caps, sensitive-value and loader/startup environment rejection, destructive command checks, network-looking command checks, shell-expansion permission gates, indirect absolute-path checks, cancellation/kill cleanup, session deadline watchdogs, and bounded session buffers. On Linux hosts with Landlock support it also applies filesystem confinement; on Windows, macOS, or Linux hosts without Landlock, command results include a warning and external sandboxing is required before running untrusted commands. This is still not a complete OS/container sandbox; see [SECURITY.md](SECURITY.md).
292
+ `exec_command` runs under policy controls with workspace-bound cwd, configurable shell environment inheritance, timeout, output caps, sensitive-value and loader/startup environment rejection, destructive command checks, network-looking command checks, shell-expansion permission gates, indirect absolute-path checks, cancellation/kill cleanup, session deadline watchdogs, and bounded session buffers. On Linux hosts with Landlock support it also applies filesystem confinement; on Windows, macOS, or Linux hosts without Landlock, command results include a warning and external sandboxing is required before running untrusted commands. This is still not a complete OS/container sandbox; see [SECURITY.md](SECURITY.md).
230
293
 
231
- `--dangerously-skip-all-permissions` disables the permission gates above for operators who accept that risk. Do not use it for untrusted workspaces or untrusted MCP clients.
294
+ `--permission-mode safe` is the default. `--permission-mode trusted` opens local-development gates while keeping secret filtering and destructive-command checks. `--permission-mode dangerous` disables `exec_command` permission gates for operators who accept that risk inside an isolated runner. Do not use dangerous mode for untrusted workspaces or untrusted MCP clients.
232
295
 
233
296
  ## Compliance
234
297
 
@@ -1,25 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: coding-tools-mcp
3
- Version: 0.1.5
4
- Summary: Workspace-confined coding tools exposed as an MCP server.
5
- Author: Coding Tools MCP Contributors
6
- License-Expression: LicenseRef-Coding-Tools-MCP-Source-Available
7
- Project-URL: Homepage, https://github.com/xyTom/coding-tools-mcp
8
- Project-URL: Documentation, https://github.com/xyTom/coding-tools-mcp/tree/main/docs
9
- Project-URL: Source, https://github.com/xyTom/coding-tools-mcp
10
- Project-URL: Issues, https://github.com/xyTom/coding-tools-mcp/issues
11
- Requires-Python: >=3.11
12
- Description-Content-Type: text/markdown
13
- License-File: LICENSE
14
- Requires-Dist: PyJWT>=2.8
15
- Provides-Extra: dev
16
- Requires-Dist: mypy<2.2,>=2.1; extra == "dev"
17
- Requires-Dist: ruff<0.16,>=0.15; extra == "dev"
18
- Requires-Dist: typing_extensions>=4.12; extra == "dev"
19
- Provides-Extra: image
20
- Requires-Dist: Pillow>=10.0; extra == "image"
21
- Dynamic: license-file
22
-
23
1
  # Coding Tools MCP
24
2
 
25
3
  Coding Tools MCP is a model-neutral coding-agent runtime MCP server. It exposes local coding primitives to any MCP client:
@@ -37,12 +15,17 @@ It is not a prompt wrapper. It does not expose external agent accounts, memory,
37
15
  - [MCP client configuration](docs/mcp-client-config.md)
38
16
  - [Remote MCP](docs/remote-mcp.md)
39
17
  - [Tools and schemas](docs/tools-and-schemas.md)
18
+ - [Permission modes](docs/permission-modes.md)
19
+ - [Exec command recipes](docs/exec-command-recipes.md)
20
+ - [Docker sandbox](docs/docker.md)
40
21
  - [Security policy](SECURITY.md)
22
+ - [Security boundary](docs/security-boundary.md)
41
23
  - [CI and test commands](docs/ci-and-tests.md)
42
24
  - [Dogfood](docs/dogfood.md)
43
25
  - [SWE-bench evaluation](docs/swe-bench.md)
44
26
  - [Known limitations](docs/limitations.md)
45
27
  - [Troubleshooting](docs/troubleshooting.md)
28
+ - [Exec troubleshooting](docs/troubleshooting-exec.md)
46
29
  - [Competitive analysis](docs/competitive-analysis.md)
47
30
  - Normative MCP runtime profile: [docs/profile-v0.1.md](docs/profile-v0.1.md)
48
31
 
@@ -89,15 +72,19 @@ uvx coding-tools-mcp --stdio --workspace /path/to/repo
89
72
  If you are working from this checkout instead of a published package:
90
73
 
91
74
  ```bash
92
- cd /root/coding-tools-mcp
93
- python -m pip install -e ".[dev]"
94
- coding-tools-mcp --workspace /path/to/repo --host 127.0.0.1 --port 8765
75
+ make start
95
76
  ```
96
77
 
97
- Install the optional image extra when you want `view_image` auto-resize support:
78
+ Pass a different workspace, host, port, or extra server flags with Make variables:
98
79
 
99
80
  ```bash
100
- python -m pip install -e ".[image]"
81
+ make start MCP_WORKSPACE=/path/to/repo MCP_PORT=8000 MCP_ARGS="--permission-mode trusted"
82
+ ```
83
+
84
+ If dependencies are missing, install the runtime in editable mode:
85
+
86
+ ```bash
87
+ python -m pip install -e ".[dev]"
101
88
  ```
102
89
 
103
90
  HTTP endpoint:
@@ -106,6 +93,12 @@ HTTP endpoint:
106
93
  http://127.0.0.1:8765/mcp
107
94
  ```
108
95
 
96
+ Install the optional image extra when you want `view_image` auto-resize support:
97
+
98
+ ```bash
99
+ python -m pip install -e ".[image]"
100
+ ```
101
+
109
102
  Stdio:
110
103
 
111
104
  ```bash
@@ -114,13 +107,25 @@ coding-tools-mcp --stdio --workspace /path/to/repo
114
107
 
115
108
  Set `CODING_TOOLS_MCP_TRACE=1` to emit redacted JSON tool-call trace events to stderr for local debugging. Logs stay off stdout so stdio JSON-RPC remains clean.
116
109
 
117
- If your MCP client does not support permission elicitation and you explicitly want permission-gated operations to run, start with:
110
+ By default, `exec_command` passes a core shell environment only. For local toolchains that depend on inherited environment variables, such as MSVC developer prompts, start with:
111
+
112
+ ```bash
113
+ CODING_TOOLS_MCP_SHELL_ENV_INHERIT=all coding-tools-mcp --workspace /path/to/repo
114
+ ```
115
+
116
+ `inherit=all` still filters secret-looking and loader/startup variables unless dangerous mode is also enabled. For local development with dependency downloads, shell expansion, and inline interpreter snippets, use:
117
+
118
+ ```bash
119
+ coding-tools-mcp --permission-mode trusted --workspace /path/to/repo
120
+ ```
121
+
122
+ `--allow-network` remains available as a compatibility flag when you only want to open network-looking commands. If your MCP client does not support permission elicitation and you explicitly want to disable `exec_command` permission gates inside an isolated container or VM, start with:
118
123
 
119
124
  ```bash
120
- coding-tools-mcp --dangerously-skip-all-permissions --workspace /path/to/repo
125
+ coding-tools-mcp --permission-mode dangerous --workspace /path/to/repo
121
126
  ```
122
127
 
123
- This auto-grants permission-gated operations such as network-looking commands, destructive commands, shell expansion, and sensitive env passed through `exec_command`. Workspace path boundaries still apply.
128
+ This disables `exec_command` permission gates such as network-looking commands, destructive command checks, shell expansion, inline scripts, and sensitive env checks. Workspace path boundaries for direct file tools still apply. `--dangerously-skip-all-permissions` remains as a compatibility alias.
124
129
 
125
130
  ## MCP Client Examples
126
131
 
@@ -184,7 +189,7 @@ scripts/tunnel.sh ngrok /path/to/repo
184
189
  scripts/tunnel.sh devtunnel /path/to/repo
185
190
  ```
186
191
 
187
- For clients that support custom headers, use bearer-token auth with `Authorization: Bearer <token>`. For MCP clients that speak OAuth 2.1 Authorization Code + PKCE, use `CODING_TOOLS_MCP_AUTH_MODE=oauth` with `scripts/tunnel.sh` (or `scripts/install.sh --auth-mode oauth`); the only env var you need to set is `CODING_TOOLS_MCP_SERVER_URL` (which must match the tunnel's stable public URL), and the script prints generated `CLIENT_ID`/`CLIENT_SECRET`/`PASSWORD` values on startup. Clients that cannot send custom bearer headers and do not speak OAuth should use anonymous `read-only` mode only for local/testing tunnels, or be placed behind an external auth proxy for production use.
192
+ For clients that support custom headers, use bearer-token auth with `Authorization: Bearer <token>`. For MCP clients that speak OAuth 2.1 Authorization Code + PKCE, use `CODING_TOOLS_MCP_AUTH_MODE=oauth` with `scripts/tunnel.sh` (or `scripts/install.sh --auth-mode oauth`). The server can infer its OAuth issuer from the tunnel request URL, so one-shot tunnels like cloudflared work without setting `CODING_TOOLS_MCP_SERVER_URL` before startup; set it only when you want to pin a stable issuer. The script prints a generated OAuth password, accepts any non-empty client_id by default, and lets you opt into `CODING_TOOLS_MCP_OAUTH_CLIENT_ID`/`CODING_TOOLS_MCP_OAUTH_CLIENT_SECRET` only when you need to lock down a confidential client. Clients that cannot send custom bearer headers and do not speak OAuth should use anonymous `read-only` mode only for local/testing tunnels, or be placed behind an external auth proxy for production use.
188
193
 
189
194
  See [docs/remote-mcp.md](docs/remote-mcp.md) for the exact modes and security notes.
190
195
 
@@ -226,9 +231,9 @@ For input/output schemas and result envelopes, see [docs/tools-and-schemas.md](d
226
231
 
227
232
  The runtime binds one workspace root per server process. Paths are workspace-relative by default. Absolute paths, `..` traversal, and symlink escapes are rejected. Recursive listing/search excludes `.git`, `.reference`, `node_modules`, `target`, `dist`, build outputs, virtualenvs, and common caches by default.
228
233
 
229
- `exec_command` runs under policy controls with workspace-bound cwd, timeout, output caps, sensitive-value and loader/startup environment rejection, destructive command checks, network-looking command checks, shell-expansion permission gates, indirect absolute-path checks, cancellation/kill cleanup, session deadline watchdogs, and bounded session buffers. On Linux hosts with Landlock support it also applies filesystem confinement; on Windows, macOS, or Linux hosts without Landlock, command results include a warning and external sandboxing is required before running untrusted commands. This is still not a complete OS/container sandbox; see [SECURITY.md](SECURITY.md).
234
+ `exec_command` runs under policy controls with workspace-bound cwd, configurable shell environment inheritance, timeout, output caps, sensitive-value and loader/startup environment rejection, destructive command checks, network-looking command checks, shell-expansion permission gates, indirect absolute-path checks, cancellation/kill cleanup, session deadline watchdogs, and bounded session buffers. On Linux hosts with Landlock support it also applies filesystem confinement; on Windows, macOS, or Linux hosts without Landlock, command results include a warning and external sandboxing is required before running untrusted commands. This is still not a complete OS/container sandbox; see [SECURITY.md](SECURITY.md).
230
235
 
231
- `--dangerously-skip-all-permissions` disables the permission gates above for operators who accept that risk. Do not use it for untrusted workspaces or untrusted MCP clients.
236
+ `--permission-mode safe` is the default. `--permission-mode trusted` opens local-development gates while keeping secret filtering and destructive-command checks. `--permission-mode dangerous` disables `exec_command` permission gates for operators who accept that risk inside an isolated runner. Do not use dangerous mode for untrusted workspaces or untrusted MCP clients.
232
237
 
233
238
  ## Compliance
234
239
 
@@ -1,3 +1,3 @@
1
1
  """Coding Tools MCP server package."""
2
2
 
3
- __version__ = "0.1.5"
3
+ __version__ = "0.1.7"