boxxkite-mcp 0.2.3__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.
- boxxkite_mcp-0.2.3/PKG-INFO +124 -0
- boxxkite_mcp-0.2.3/README.md +107 -0
- boxxkite_mcp-0.2.3/pyproject.toml +33 -0
- boxxkite_mcp-0.2.3/setup.cfg +4 -0
- boxxkite_mcp-0.2.3/src/boxxkite_mcp/__init__.py +7 -0
- boxxkite_mcp-0.2.3/src/boxxkite_mcp/server.py +680 -0
- boxxkite_mcp-0.2.3/src/boxxkite_mcp.egg-info/PKG-INFO +124 -0
- boxxkite_mcp-0.2.3/src/boxxkite_mcp.egg-info/SOURCES.txt +11 -0
- boxxkite_mcp-0.2.3/src/boxxkite_mcp.egg-info/dependency_links.txt +1 -0
- boxxkite_mcp-0.2.3/src/boxxkite_mcp.egg-info/entry_points.txt +2 -0
- boxxkite_mcp-0.2.3/src/boxxkite_mcp.egg-info/requires.txt +7 -0
- boxxkite_mcp-0.2.3/src/boxxkite_mcp.egg-info/top_level.txt +1 -0
- boxxkite_mcp-0.2.3/tests/test_server.py +990 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: boxxkite-mcp
|
|
3
|
+
Version: 0.2.3
|
|
4
|
+
Summary: MCP server exposing a hosted boxxkite control-plane (sandbox lifecycle, exec, files) as native tools for MCP-compatible clients (Claude Code, Claude Desktop, Codex, Cursor, etc.).
|
|
5
|
+
License: Apache-2.0
|
|
6
|
+
Project-URL: Homepage, https://github.com/EvAlssment/boxxkite
|
|
7
|
+
Project-URL: Repository, https://github.com/EvAlssment/boxxkite
|
|
8
|
+
Project-URL: Issues, https://github.com/EvAlssment/boxxkite/issues
|
|
9
|
+
Requires-Python: >=3.10
|
|
10
|
+
Description-Content-Type: text/markdown
|
|
11
|
+
Requires-Dist: boxxkite-client
|
|
12
|
+
Requires-Dist: mcp>=1.2
|
|
13
|
+
Provides-Extra: dev
|
|
14
|
+
Requires-Dist: pytest>=8; extra == "dev"
|
|
15
|
+
Requires-Dist: pytest-asyncio>=0.24; extra == "dev"
|
|
16
|
+
Requires-Dist: ruff>=0.6; extra == "dev"
|
|
17
|
+
|
|
18
|
+
# boxxkite-mcp
|
|
19
|
+
|
|
20
|
+
[](https://pypi.org/project/boxxkite-mcp/)
|
|
21
|
+
|
|
22
|
+
An MCP server over a hosted boxxkite control-plane — lets any MCP-compatible
|
|
23
|
+
client (Claude Code, Claude Desktop, Codex, Cursor, etc.) attach a real
|
|
24
|
+
sandboxed code-execution backend as a native tool source, zero custom
|
|
25
|
+
integration code.
|
|
26
|
+
|
|
27
|
+
> **Prefer no local install?** A control-plane deployment built from this
|
|
28
|
+
> repo also exposes a **remote** Streamable HTTP MCP endpoint directly at
|
|
29
|
+
> `https://your-control-plane.example.com/mcp/` — add that URL to your MCP
|
|
30
|
+
> client's config instead of installing this package. See
|
|
31
|
+
> [`docs/HOSTED-MCP-DESIGN.md`](https://github.com/EvAlssment/boxxkite/blob/main/docs/HOSTED-MCP-DESIGN.md).
|
|
32
|
+
> Use this package when you want the MCP server process running on your own
|
|
33
|
+
> machine instead.
|
|
34
|
+
|
|
35
|
+
## Install
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
pip install boxxkite-mcp
|
|
39
|
+
# or, to run it as a standalone MCP server without a project venv:
|
|
40
|
+
pipx install boxxkite-mcp
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Configuration
|
|
44
|
+
|
|
45
|
+
Two required environment variables:
|
|
46
|
+
|
|
47
|
+
| Variable | Meaning |
|
|
48
|
+
|---|---|
|
|
49
|
+
| `BOXXKITE_BASE_URL` | Base URL of the boxxkite control-plane |
|
|
50
|
+
| `BOXXKITE_API_KEY` | A `bxk_live_...` API key for your account |
|
|
51
|
+
|
|
52
|
+
## Run
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
BOXXKITE_BASE_URL=https://your-control-plane.example.com \
|
|
56
|
+
BOXXKITE_API_KEY=bxk_live_... \
|
|
57
|
+
boxxkite-mcp
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Speaks MCP over stdio — point an MCP client's config at the `boxxkite-mcp` command.
|
|
61
|
+
|
|
62
|
+
## Tools
|
|
63
|
+
|
|
64
|
+
Sandbox lifecycle and exec/file tools — `create_sandbox`, `destroy_sandbox`,
|
|
65
|
+
`get_sandbox`, `list_sandboxes`, `exec`, `file_create`, `view`, `str_replace`,
|
|
66
|
+
`ls`, `glob`, `grep` — every per-sandbox tool takes `session_id` as a
|
|
67
|
+
parameter, so the calling agent owns the full lifecycle within one
|
|
68
|
+
conversation.
|
|
69
|
+
|
|
70
|
+
Custom image tools (build a sandbox image with extra packages baked in,
|
|
71
|
+
then pass its id as `create_sandbox`'s `image_id`) — `create_sandbox_image`,
|
|
72
|
+
`get_sandbox_image`, `list_sandbox_images`, `delete_sandbox_image`.
|
|
73
|
+
|
|
74
|
+
Independent storage volume tools (create persistent storage mountable into
|
|
75
|
+
one or more sandboxes via `create_sandbox`'s `volume_mounts`) —
|
|
76
|
+
`create_sandbox_volume`, `get_sandbox_volume`, `list_sandbox_volumes`,
|
|
77
|
+
`delete_sandbox_volume`.
|
|
78
|
+
|
|
79
|
+
Outbound-MCP connection tools (grant a sandbox network egress to a curated
|
|
80
|
+
MCP catalog entry via `create_sandbox`'s `mcp_connection_names` — see
|
|
81
|
+
[`docs/OUTBOUND-MCP-DESIGN.md`](https://github.com/EvAlssment/boxxkite/blob/main/docs/OUTBOUND-MCP-DESIGN.md);
|
|
82
|
+
there is no MCP-proxy transport yet, so this only widens network reachability,
|
|
83
|
+
it doesn't yet let the sandbox speak MCP protocol to the destination) —
|
|
84
|
+
`create_mcp_connection`, `list_mcp_connections`, `delete_mcp_connection`.
|
|
85
|
+
|
|
86
|
+
Language-server (LSP) tools for code intelligence inside a sandbox — start a
|
|
87
|
+
language server, open a file into it, request completions at a position, then
|
|
88
|
+
stop it — `lsp_start`, `lsp_open`, `lsp_completion`, `lsp_stop`. Like the other
|
|
89
|
+
per-sandbox tools, each takes `session_id`.
|
|
90
|
+
|
|
91
|
+
That's **26 tools** in total.
|
|
92
|
+
|
|
93
|
+
## Security
|
|
94
|
+
|
|
95
|
+
`exec` runs arbitrary shell commands with no client-side allowlist — the
|
|
96
|
+
isolation boundary is the sandbox itself (see the root repo's `SECURITY.md`),
|
|
97
|
+
not these MCP tools' argument validation. `exec`/`view` results are returned
|
|
98
|
+
to the calling LLM as plain, unsanitized text — treat sandbox output as
|
|
99
|
+
untrusted input, the same as a web-fetch or file-read tool's result.
|
|
100
|
+
|
|
101
|
+
## Related tools
|
|
102
|
+
|
|
103
|
+
Moving an in-progress local Claude Code/Codex CLI/opencode session (full
|
|
104
|
+
conversation history) into a fresh boxxkite sandbox is **not** something
|
|
105
|
+
this MCP server can do as a tool call: a handoff adapter needs to read
|
|
106
|
+
local, on-disk CLI session state (e.g. Claude Code's
|
|
107
|
+
`~/.claude/projects/...` files) on the *user's own machine*, while an MCP
|
|
108
|
+
tool call runs wherever the MCP client invokes it, and `boxxkite-mcp` itself
|
|
109
|
+
is a thin proxy to the hosted control-plane with no access to the calling
|
|
110
|
+
agent's local filesystem. That's handled instead by a separate, local-only
|
|
111
|
+
companion CLI, `boxxkite-handoff` — see
|
|
112
|
+
[`../docs/handoff-adapters.md`](../docs/handoff-adapters.md) and
|
|
113
|
+
[`../handoff-cli/README.md`](../handoff-cli/README.md) for how it works.
|
|
114
|
+
Not yet published to PyPI.
|
|
115
|
+
|
|
116
|
+
## Development
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
pip install -e ".[dev]"
|
|
120
|
+
pytest tests/
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
See the [root README](https://github.com/EvAlssment/boxxkite#readme) for
|
|
124
|
+
what boxxkite is and the full self-hosting story.
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# boxxkite-mcp
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/boxxkite-mcp/)
|
|
4
|
+
|
|
5
|
+
An MCP server over a hosted boxxkite control-plane — lets any MCP-compatible
|
|
6
|
+
client (Claude Code, Claude Desktop, Codex, Cursor, etc.) attach a real
|
|
7
|
+
sandboxed code-execution backend as a native tool source, zero custom
|
|
8
|
+
integration code.
|
|
9
|
+
|
|
10
|
+
> **Prefer no local install?** A control-plane deployment built from this
|
|
11
|
+
> repo also exposes a **remote** Streamable HTTP MCP endpoint directly at
|
|
12
|
+
> `https://your-control-plane.example.com/mcp/` — add that URL to your MCP
|
|
13
|
+
> client's config instead of installing this package. See
|
|
14
|
+
> [`docs/HOSTED-MCP-DESIGN.md`](https://github.com/EvAlssment/boxxkite/blob/main/docs/HOSTED-MCP-DESIGN.md).
|
|
15
|
+
> Use this package when you want the MCP server process running on your own
|
|
16
|
+
> machine instead.
|
|
17
|
+
|
|
18
|
+
## Install
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
pip install boxxkite-mcp
|
|
22
|
+
# or, to run it as a standalone MCP server without a project venv:
|
|
23
|
+
pipx install boxxkite-mcp
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Configuration
|
|
27
|
+
|
|
28
|
+
Two required environment variables:
|
|
29
|
+
|
|
30
|
+
| Variable | Meaning |
|
|
31
|
+
|---|---|
|
|
32
|
+
| `BOXXKITE_BASE_URL` | Base URL of the boxxkite control-plane |
|
|
33
|
+
| `BOXXKITE_API_KEY` | A `bxk_live_...` API key for your account |
|
|
34
|
+
|
|
35
|
+
## Run
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
BOXXKITE_BASE_URL=https://your-control-plane.example.com \
|
|
39
|
+
BOXXKITE_API_KEY=bxk_live_... \
|
|
40
|
+
boxxkite-mcp
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Speaks MCP over stdio — point an MCP client's config at the `boxxkite-mcp` command.
|
|
44
|
+
|
|
45
|
+
## Tools
|
|
46
|
+
|
|
47
|
+
Sandbox lifecycle and exec/file tools — `create_sandbox`, `destroy_sandbox`,
|
|
48
|
+
`get_sandbox`, `list_sandboxes`, `exec`, `file_create`, `view`, `str_replace`,
|
|
49
|
+
`ls`, `glob`, `grep` — every per-sandbox tool takes `session_id` as a
|
|
50
|
+
parameter, so the calling agent owns the full lifecycle within one
|
|
51
|
+
conversation.
|
|
52
|
+
|
|
53
|
+
Custom image tools (build a sandbox image with extra packages baked in,
|
|
54
|
+
then pass its id as `create_sandbox`'s `image_id`) — `create_sandbox_image`,
|
|
55
|
+
`get_sandbox_image`, `list_sandbox_images`, `delete_sandbox_image`.
|
|
56
|
+
|
|
57
|
+
Independent storage volume tools (create persistent storage mountable into
|
|
58
|
+
one or more sandboxes via `create_sandbox`'s `volume_mounts`) —
|
|
59
|
+
`create_sandbox_volume`, `get_sandbox_volume`, `list_sandbox_volumes`,
|
|
60
|
+
`delete_sandbox_volume`.
|
|
61
|
+
|
|
62
|
+
Outbound-MCP connection tools (grant a sandbox network egress to a curated
|
|
63
|
+
MCP catalog entry via `create_sandbox`'s `mcp_connection_names` — see
|
|
64
|
+
[`docs/OUTBOUND-MCP-DESIGN.md`](https://github.com/EvAlssment/boxxkite/blob/main/docs/OUTBOUND-MCP-DESIGN.md);
|
|
65
|
+
there is no MCP-proxy transport yet, so this only widens network reachability,
|
|
66
|
+
it doesn't yet let the sandbox speak MCP protocol to the destination) —
|
|
67
|
+
`create_mcp_connection`, `list_mcp_connections`, `delete_mcp_connection`.
|
|
68
|
+
|
|
69
|
+
Language-server (LSP) tools for code intelligence inside a sandbox — start a
|
|
70
|
+
language server, open a file into it, request completions at a position, then
|
|
71
|
+
stop it — `lsp_start`, `lsp_open`, `lsp_completion`, `lsp_stop`. Like the other
|
|
72
|
+
per-sandbox tools, each takes `session_id`.
|
|
73
|
+
|
|
74
|
+
That's **26 tools** in total.
|
|
75
|
+
|
|
76
|
+
## Security
|
|
77
|
+
|
|
78
|
+
`exec` runs arbitrary shell commands with no client-side allowlist — the
|
|
79
|
+
isolation boundary is the sandbox itself (see the root repo's `SECURITY.md`),
|
|
80
|
+
not these MCP tools' argument validation. `exec`/`view` results are returned
|
|
81
|
+
to the calling LLM as plain, unsanitized text — treat sandbox output as
|
|
82
|
+
untrusted input, the same as a web-fetch or file-read tool's result.
|
|
83
|
+
|
|
84
|
+
## Related tools
|
|
85
|
+
|
|
86
|
+
Moving an in-progress local Claude Code/Codex CLI/opencode session (full
|
|
87
|
+
conversation history) into a fresh boxxkite sandbox is **not** something
|
|
88
|
+
this MCP server can do as a tool call: a handoff adapter needs to read
|
|
89
|
+
local, on-disk CLI session state (e.g. Claude Code's
|
|
90
|
+
`~/.claude/projects/...` files) on the *user's own machine*, while an MCP
|
|
91
|
+
tool call runs wherever the MCP client invokes it, and `boxxkite-mcp` itself
|
|
92
|
+
is a thin proxy to the hosted control-plane with no access to the calling
|
|
93
|
+
agent's local filesystem. That's handled instead by a separate, local-only
|
|
94
|
+
companion CLI, `boxxkite-handoff` — see
|
|
95
|
+
[`../docs/handoff-adapters.md`](../docs/handoff-adapters.md) and
|
|
96
|
+
[`../handoff-cli/README.md`](../handoff-cli/README.md) for how it works.
|
|
97
|
+
Not yet published to PyPI.
|
|
98
|
+
|
|
99
|
+
## Development
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
pip install -e ".[dev]"
|
|
103
|
+
pytest tests/
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
See the [root README](https://github.com/EvAlssment/boxxkite#readme) for
|
|
107
|
+
what boxxkite is and the full self-hosting story.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "boxxkite-mcp"
|
|
7
|
+
version = "0.2.3"
|
|
8
|
+
description = "MCP server exposing a hosted boxxkite control-plane (sandbox lifecycle, exec, files) as native tools for MCP-compatible clients (Claude Code, Claude Desktop, Codex, Cursor, etc.)."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = { text = "Apache-2.0" }
|
|
11
|
+
requires-python = ">=3.10"
|
|
12
|
+
dependencies = [
|
|
13
|
+
"boxxkite-client",
|
|
14
|
+
"mcp>=1.2",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
[project.optional-dependencies]
|
|
18
|
+
dev = ["pytest>=8", "pytest-asyncio>=0.24", "ruff>=0.6"]
|
|
19
|
+
|
|
20
|
+
[project.scripts]
|
|
21
|
+
boxxkite-mcp = "boxxkite_mcp.server:main"
|
|
22
|
+
|
|
23
|
+
[project.urls]
|
|
24
|
+
Homepage = "https://github.com/EvAlssment/boxxkite"
|
|
25
|
+
Repository = "https://github.com/EvAlssment/boxxkite"
|
|
26
|
+
Issues = "https://github.com/EvAlssment/boxxkite/issues"
|
|
27
|
+
|
|
28
|
+
[tool.setuptools.packages.find]
|
|
29
|
+
where = ["src"]
|
|
30
|
+
|
|
31
|
+
[tool.pytest.ini_options]
|
|
32
|
+
asyncio_mode = "auto"
|
|
33
|
+
testpaths = ["tests"]
|