Skip to main content

pipen-mcp

A pipen CLI plugin that exposes pipen processes and pipelines as MCP (Model Context Protocol) tools, allowing AI assistants to discover and run bioinformatics pipelines.

Overview

pipen-mcp bridges pipen's process/pipeline ecosystem with AI assistants that support the Model Context Protocol. Once installed, any namespace registered via the pipen_cli_run entry point group is automatically discoverable and executable by an MCP-compatible client (e.g., Claude, VS Code Copilot, Cursor).

Installation

pip install pipen-mcp

pipen-mcp requires Python ≥ 3.10 and depends on:

Usage

pipen-mcp adds an mcp subcommand to the pipen CLI:

pipen mcp [--transport {stdio,sse,streamable-http}] [--host HOST] [--port PORT]
Option Description Default
--transport MCP transport (stdio, sse, or streamable-http) stdio
--host Host to bind to (SSE / streamable-http only) 127.0.0.1
--port Port to listen on (SSE / streamable-http only) 8520

stdio (default)

Suitable for direct integration with MCP clients that launch the server as a subprocess:

pipen mcp

SSE

Starts an HTTP server with Server-Sent Events transport:

pipen mcp --transport sse --host 0.0.0.0 --port 8520

Streamable HTTP

Starts an HTTP server with the streamable-HTTP transport:

pipen mcp --transport streamable-http --host 0.0.0.0 --port 8520

MCP Tools

The server exposes four tools that support a progressive-disclosure workflow:

Tool Description
get_namespaces List all available namespaces. Start here to discover what is installed.
get_processes List all processes/pipelines available in a namespace.
get_process Get the full argument schema for a specific process/pipeline.
run_process Execute a process/pipeline with a list of CLI arguments.

Typical workflow

1. get_namespaces()
   → "delim", "bam", "rnaseq", ...

2. get_processes("delim")
   → RowsBinder (proc): Bind rows of input files
   → ColsBinder (proc): Bind columns of input files

3. get_process("delim", "RowsBinder")
   → Required:
       --in.infiles <list[str]>  Input files
   → Optional:
       --envs.sep <str> (default: '\t')  Separator
       --outdir <str>  Output directory
       ...

4. run_process("delim", "RowsBinder", [
       "--in.infiles", "/tmp/a.csv,/tmp/b.csv",
       "--envs.sep", ",",
       "--outdir", "/tmp/out"
   ])
   → Pipeline output / logs

VS Code / Copilot Integration

Add the server to your MCP configuration (~/.vscode/mcp.json or ~/.vscode-server/data/User/mcp.json):

{
  "servers": {
    "pipen-mcp": {
      "type": "stdio",
      "command": "pipen",
      "args": ["mcp"]
    }
  }
}

Or for SSE:

{
  "servers": {
    "pipen-mcp": {
      "type": "sse",
      "url": "http://127.0.0.1:8520/sse"
    }
  }
}

Authoring a Namespace

Any package can register processes/pipelines with pipen-mcp by declaring a pipen_cli_run entry point:

# pyproject.toml
[project.entry-points."pipen_cli_run"]
myns = "mypackage.ns.myns"

The referenced module should contain Proc subclasses (with an input attribute) or ProcGroup subclasses. Use pipen-annotate to document arguments — annotated fields are exposed in get_process output and used to build the tool schema.

# mypackage/ns/myns.py
"""My namespace — tools for processing text files."""
from pipen import Proc
from pipen_annotate import annotate

@annotate
class MyProc(Proc):
    """Concatenate rows from multiple files.

    Input:
        infiles (list): Input files to concatenate

    Envs:
        sep (str): Column separator. Default: ","
    """
    input = "infiles:files"
    output = "outfile:file:{{in.infiles[0] | stem}}_concat.tsv"
    script = "..."

License

MIT

Release files for pipen-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 pipen-mcp 0.1.0
File Size Uploaded
pipen_mcp-0.1.0.tar.gz 140.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pipen-mcp 0.1.0
File Interpreter ABI Platform
pipen_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 149.4 kB

Release files / pipen_mcp-0.1.0.tar.gz

Download URL pipen_mcp-0.1.0.tar.gz
Size 140.4 kB
Tags Source
SHA-256 checksum
How to use checksums
5b99df1ccbd5bb7a2a83ffdbfe213f0506e54d051a6443de83f38286696fac98
BLAKE2b-256 checksum
How to use checksums
5b12f4b84289e052f9e253afc08c41b0abc479bc1e51b050f1ab0318f1cf3a7b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / pipen_mcp-0.1.0-py3-none-any.whl

Download URL pipen_mcp-0.1.0-py3-none-any.whl
Size 9.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cda69b3767179f60d68798b996bac0e9b9257dd029eb791110fac694e1e8fe19
BLAKE2b-256 checksum
How to use checksums
0dd042cda235cb6785fd959ba0c1d60640553135f5880ff6275283ed26571588
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

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