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.
@@ -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
+ [![PyPI](https://img.shields.io/pypi/v/boxxkite-mcp?label=PyPI)](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
+ [![PyPI](https://img.shields.io/pypi/v/boxxkite-mcp?label=PyPI)](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"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,7 @@
1
+ """MCP server for a hosted boxxkite control-plane."""
2
+
3
+ from __future__ import annotations
4
+
5
+ __all__ = ["main"]
6
+
7
+ from .server import main