MCP Shipyard
Install the mcp-shipyard distribution and import mcp_shipyard:
python -m pip install mcp-shipyard
shipyard --help
mcp_shipyard manages MCP applications independently of their tool set.
It contains no Exactus, District, Conjure, FastAPI, or Docker imports.
models.py: JSON types, server identity, protocol failures, and outcomes.payloads.py: request envelope decoding and validation.responses.py: protocol and tool result encoding.server.py: negotiation, discovery, authenticated dispatch, and observers.tools.py: tool registration and explicit application authorization.pipelines.py: pipeline request and executor contracts, and tool adapter.stdio.py: bounded newline-delimited transport with caller-owned streams.environments.py: approved profiles, enforceable permissions, and disposable worker lifecycle shared by providers.lease_store.pyandleases.py: durable ownership, expiration, serialization, restart recovery contracts and confirmed worker cleanup.cli.pyand__main__.py: explicit application factory and local principal forpython -m mcp_shipyard serve.__init__.py: public API.features.py: optional terminal, package-install and resource-relay contracts.pyproject.toml: the independently installablemcp-shipyarddistribution.
Applications supply identity, schemas, handlers, and authorization. Monitoring is an injected observer; District can consume those events without becoming the MCP application's protocol core. Pipeline adapters own worker selection, queues, leases, cancellation, and cleanup. The host never interprets arbitrary payload values as executable code. Unexpected application errors propagate; only explicitly configured safe error types become MCP tool-error content.
The Exactus adapter in mcp/exactus_mcp/mcp_server.py now uses this shared
host and registry while retaining its existing tool names and permissions.
Its environment and REST services remain application adapters; importing this
library never imports or starts them. Observer parameters are transient and
must be redacted by a monitor before persistence. Stdio adapters do not close
streams owned by their callers.
Run the independent example from the repository root:
python -m mcp_shipyard serve \
--application examples.tools.mcp_shipyard.echo:create --principal example-user
The application factory and stdio principal are trusted operator configuration. They must never be populated directly from remote request arguments.
Environment callers choose a registered profile and an argv vector. They
cannot override that profile's network, privilege, package, or exposure policy.
Providers must enforce both grants and denials before starting a worker.
The Conjure Docker adapter currently enforces Linux containers, non-root
execution, dropped capabilities, no privilege escalation, bounded CPU/memory,
read-only root, private scratch, bounded output and destruction on every exit.
Network none disables guest networking; internet enables Docker bridge
networking, including reachable private destinations. It is not an Internet-only
firewall. Allow-list egress, privilege grants, managed package installs, resource
publishing and interactive shell installation are refused by this adapter.
VM providers use the same interface, but no audited Windows or macOS template is shipped here. Contract tests for those platform names are not native guest execution evidence. A future VM adapter must clone immutable prepared images and enforce host-side egress plus guest account policy before advertising those capabilities. A shell for a network-isolated guest needs staged artifacts and an explicit control channel; enabling arbitrary networking for bootstrap is unsafe.
Metadata
Release files for mcp-shipyard 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mcp_shipyard-0.1.0.tar.gz | 19.4 kB | Without provenance | Details for mcp_shipyard-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mcp_shipyard-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for mcp_shipyard-0.1.0-py3-none-any.whl |
Total release size: 43.4 kB
Release files / mcp_shipyard-0.1.0.tar.gz
| Download URL | mcp_shipyard-0.1.0.tar.gz |
|---|---|
| Size | 19.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1969c38688f7f4cc17c2ad1681264495d43f265e16aa655180bdaa7b5d2c4a02
|
|
BLAKE2b-256 checksum How to use checksums |
9955c55cf693095df192b008f1958117676a4ff7ee2b132b04221e7f293aece3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.9
|
Release files / mcp_shipyard-0.1.0-py3-none-any.whl
| Download URL | mcp_shipyard-0.1.0-py3-none-any.whl |
|---|---|
| Size | 24.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8719bdc7b3b4dc719f072b818cd3d9fdd2efcba78b0484ba9b2e134c0b449fa7
|
|
BLAKE2b-256 checksum How to use checksums |
3305c4120ce05521a7599382188f68b9c5b213a107fb1293ecbe790394f9f7c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.9
|
Security for mcp-shipyard 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.