Skip to main content

ico-mcp

CI Python License

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_run what 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.

The Live Board

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)

Source distribution for ico-mcp 0.1.0
File Size Uploaded Provenance
ico_mcp-0.1.0.tar.gz 87.0 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for ico-mcp 0.1.0
File Interpreter ABI Platform
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page