ico-mcp
An MCP server on top of ICO with which an agent builds data pipelines from its own operators. The agent writes operators, small typed Python functions, and composes them into pipelines as JSON specs; the server checks, runs and profiles them. Operators that proved themselves in runs become the domain's stable code through a pull request a human reviews, and the next task starts from them instead of a blank script.
- Work accumulates. Each task adds operators and pipelines to the domain's library instead of one-off scripts.
- Errors before the run. Types are checked at every link before anything runs, so a broken pipeline does not burn GPU time.
- Fewer tokens. The agent finds operators as compact cards by input and output type instead of reading code, runs saved pipelines by name, and gets data back as paths; long runs go on in the background.
- Visible runs. The Live Board shows the plan and the progress of every
node, the profiler where time and memory go,
sample_runwhat flows out of a node; a run can be cancelled between items. - Local or GPU. The same pipeline runs here or on a RunPod GPU: the job carries the operators' code, model weights are pinned assets.
search_operators → validate → run → save_pipeline → crystallize → PR
a step is missing → propose_operator, propose_types
How it is built
flowchart TB
A["agent"] -- "MCP tools" --> S["ico-mcp server, Live Board"]
S --> kernels
subgraph kernels["kernels"]
direction LR
K["main: catalog, validate, plans"] ~~~ J["one per run"] ~~~ X["remote: RunPod GPU"]
end
kernels -- "operator code" --> D
S -- "crystallize: pull request" --> D
subgraph D["domain repository"]
direction LR
P["video: stable"] ~~~ Q["video_draft: drafts"] ~~~ L["pipelines, assets"]
end
Server. Speaks MCP over stdio, never imports operator code, hosts the Live Board and keeps the runs.
Kernels. Child processes in the domain's environment that import the operators: a main one for the catalog and validation, one per run (so a run can be cancelled alone), and a remote one that sends a run with its operators' code to a RunPod Serverless GPU.
Domain. A repository of its own, created by ico-mcp init: stable and
draft packages, saved pipelines, pinned model weights (assets), notes for
agents.
Crystallization. crystallize moves the drafts a pipeline uses into the
stable package, checks them (pyright strict, examples, saved pipelines
validate) and opens a pull request with the operator cards and the runs that
used them.
Tools
| Tool | Does |
|---|---|
search_operators, get_operator |
find operators by input / output type, text, tags; a card with the source |
list_types, get_type |
domain types with fields and docstrings |
validate |
type-check a spec; issues carry their place in the spec |
run, run_status, wait_run, cancel_run, sample_run |
run a spec or a saved pipeline, locally or on a target; follow, stop, sample it |
dashboard |
the URL of the Live Board |
save_pipeline, list_pipelines, get_pipeline, delete_pipeline |
saved, validated specs with parameters |
propose_operator, propose_types, delete_module |
write, edit or remove a draft module |
crystallize, wait_crystallize |
a pull request that makes drafts stable |
assets_status, fetch_assets |
the weights a pipeline needs, here or on a target |
volume_up, volume_down |
the network volume of an order on a RunPod target |
environment, guide, reload, server_status |
what operators see, the reference for agents, reload after a merge, a stale server |
Setup
Requires Python 3.11 or 3.12 and uv;
gh for crystallize. Create a domain:
uvx ico-mcp init /abs/path/to/ico-mcp-video --package video
It depends on ico-mcp and apriori-ico
(ICO). Add the domain's dependencies to its pyproject.toml, uv sync
there, and connect it:
claude mcp add video -- uv run --project /abs/path/to/ico-mcp-video ico-mcp --root /abs/path/to/ico-mcp-video
In the Claude desktop app, put the same server into
claude_desktop_config.json with the absolute path of uv.
For development, check out ICO next to this repository (../ico) and run
uv sync and make ci here; ico-mcp init from this checkout makes a
domain that uses both checkouts.
Design notes: docs/design/ico-mcp.md. The guide for agents: src/ico_mcp/agent-guide.md.
License
Apache License 2.0, see LICENSE.
Metadata
Release files for ico-mcp 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 | |
|---|---|---|---|---|
| ico_mcp-0.1.0.tar.gz | 87.0 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ico_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 188.5 kB
Release files / ico_mcp-0.1.0.tar.gz
| Download URL | ico_mcp-0.1.0.tar.gz |
|---|---|
| Size | 87.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a7ab3dcd5472fd22174e45e58f259e3b5240e9f63af3e476ee9f1052d6fd35ef
|
|
BLAKE2b-256 checksum How to use checksums |
4ffb45ab387f3e7e2d1bc18e35355f5928330909a4ae767d657cacba594f633d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logRelease files / ico_mcp-0.1.0-py3-none-any.whl
| Download URL | ico_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 101.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
34bb6ffe6d9753a9a92b87a107f35da36db54d150c0e1f849c233071212180bf
|
|
BLAKE2b-256 checksum How to use checksums |
2ad514d4d027c963d67f0bc9f081b8fa2a81dc0e8ddaf41630a8d28ed709f934
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logSecurity for ico-mcp 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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for ico_mcp-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logA 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.