mcpstack


Namemcpstack JSON
Version 0.0.2 PyPI version JSON
download
home_pageNone
SummaryMCPStack: a generic, composable stack for building and running MCP tool pipelines.
upload_time2025-08-20 01:55:12
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseNone
keywords mcp model-context-protocol pipelines llm tooling cli scikit-learn-pipelines
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <!--suppress HtmlDeprecatedAttribute -->
<div align="center">
  <h1 align="center">
    MCPStack
    <br>
  </h1>
  <h4 align="center">Stack & Orchestrate MCP Tools β€” The Scikit-Learn-Pipeline Way, For LLMs</h4>
</div>

<div align="center">

<a href="https://pre-commit.com/">
  <img alt="pre-commit" src="https://img.shields.io/badge/pre--commit-enabled-1f6feb?style=for-the-badge&logo=pre-commit">
</a>
<img alt="ruff" src="https://img.shields.io/badge/Ruff-lint%2Fformat-9C27B0?style=for-the-badge&logo=ruff&logoColor=white">
<img alt="python" src="https://img.shields.io/badge/Python-3.9%2B-3776AB?style=for-the-badge&logo=python&logoColor=white">
<img alt="pytest coverage" src="https://img.shields.io/badge/Coverage-77%25-brightgreen?style=for-the-badge&logo=pytest">
<img alt="license" src="https://img.shields.io/badge/License-MIT-success?style=for-the-badge">

<div align="center">
  <h1 align="center">
    <picture>
      <source media="(prefers-color-scheme: dark)" srcset="assets/COVER_dark.png">
      <source media="(prefers-color-scheme: light)" srcset="assets/COVER.png">
      <img alt="Fallback image description" src="assets/COVER.png">
    </picture>
  </h1>
</div>

</div>

> [!IMPORTANT]
> πŸ“£Come Check Out Our MCPs Marketplace, on the documentation!
> πŸŽ‰ MCPStack MIMIC MCP tool, available!

## <a id="about-the-project"></a>πŸ’‘ About The Project

`MCPStack` is a **`Scikit-Learn-Like` Pipeline orchestrator** for Model Context Protocols (MCPs).
It allows you to **stack multiple MCP tools together** into a pipeline of interest and expose them directly
into your favourite LLM environment, such as **Claude Desktop**.

Think of it as **`scikit-learn` pipelines, but for Large Language Models**:
* In `scikit-learn`, you chain `preprocessors`, `transformers`, and `estimators`.
* In `MCPStack`, you chain MCP tools of interest. If some tools are not of interest, you simply do not include them in the pipeline.

The LLM cannot use a tool that is not included in the pipeline.  This makes orchestration both **powerful** and **secure**.
This permits sophisticated compositions in which the LLM can only access the tools you specify – no more, no less.

**Wait, what is a Model Context Protocol (MCP) β€” In layman's terms ?**

The Model Context Protocol (MCP) standardises interactions with machine learning (Large Language) models,
enabling tools and libraries to communicate successfully with a uniform workflow.

---

## Installation

> [!NOTE]
> MCPStack is the orchestrator β€” it comes with core utilities and validated tools.
> All validated tools are listed under `mcp_tools` in the `pyproject.toml` and are auto-registered via
> `[project.entry-points."mcpstack.tools"]`.

### Clone the repository

```bash
git clone https://github.com/MCP-Pipeline/MCPStack.git
cd MCPStack
```

### Install dependencies

Using UV (recommended):

```bash
uv sync
```

Using pip:

```bash
pip install -e .[dev]
```

### Install pre-commit hooks

Via UV:

```bash
uv run pre-commit install
```

Via pip:

```bash
pre-commit install
```

## πŸ–₯️ CLI Workflow

You can manage and run your MCP pipelines directly from the CLI with the `mcpstack` command.
Every command is run with `uv run mcpstack` (or just `mcpstack` if installed globally).

<img src="assets/readme/help.png" width="61.8%" align="left" style="border-radius: 10px;"/>

### `Help`

Display all available CLI options, from utilities to building your pipeline, run with `--help`.

<br clear="left">

<br />

<img src="assets/readme/utils.gif" width="61.8%" align="right" style="border-radius: 10px;"/>

### `Utilities`

List all validated tools available in your environment via `list-tools` and the presets via `list-presets`.
A preset is an already configured pipeline that you can run in one command line rather than building it from scratch.
Useful for experiments reproduction.

<br clear="right">

<br />

<img src="assets/readme/pipeline.gif" width="61.8%" align="left" style="border-radius: 10px;"/>

### `Your First Pipeline`

Create a pipeline from scratch with more than one MCPs in it! `pipeline <tool_name> --new/to-pipeline <json_output>`.

<br clear="left">

<br />

<img src="assets/readme/configure_tool_add_to_pipeline.gif" width="61.8%" align="right" style="border-radius: 10px;"/>

### `MCP Tool Configuration`

You can configure yoru MCP tools before adding it to your pipelines. `tools <tool_name> configure <flags avail/of interest>` then `pipeline <tool_name> --tool-config <path_to_configured_tool> ...`.

<br clear="right">

<br />

<img src="assets/readme/build_with_claude.gif" width="61.8%" align="left" style="border-radius: 10px;"/>

### `Run Pipeline In Claude`

As soon as you have built your pipeline, you can run it via many ways. One is within a LLM environment like Claude Desktop.
`build --pipeline <pipeline_path> --config-type <config_type_avail.>` β€” Open Claude Desktop now!

<br clear="left">

<br />

<img src="assets/readme/run_with_fast_mcp.gif" width="61.8%" align="right" style="border-radius: 10px;"/>

### `Run W/ FastMCP`

You can also run your pipeline with FastMCP, allowing you to connect to various LLMs avenues.

<br clear="right">

<br />

<img src="assets/readme/more.gif" width="61.8%" align="left" style="border-radius: 10px;"/>

### `Many Other CLIs Options`

More options are available, such as `search` for MCP tools or presets via a prompt query, run with presets,
search for MCP tools
help commands via `tools <tool_name> --help`, and more.

<br clear="left">

<br />

## βš™οΈ Programmatic Workflow

For those wanted to integrate MCPStack into their Python workflow, or simply prefer
to play with programmatic pathways, MCPStack provides a Python API to build and run pipelines, very similarly;
with chaining-based methods for an intuitive and smooth programmatic API exp.

<img src="assets/readme/with_tools.png" width="61.8%" align="left" style="border-radius: 10px;"/>

### `Your First Pipeline`

Build your first pipeline programmatically by stacking MCP tools together via `with_tool(.)` or `with_tools(...)` methods.
Of course, you can configure each tool before adding through `with_tool(.)`.

<br clear="left">

<br />

<img src="assets/readme/with_preset.png" width="61.8%" align="right" style="border-radius: 10px;"/>

### `With Presets`

You can also use presets to build your pipeline, which is a pre-configured pipeline that you can run in one line of
code rather than stacking `with_tool(...)` methods. Great for experiments reproduction.

<br clear="right">

<br />

<img src="assets/readme/build_save_and_run.png" width="61.8%" align="left" style="border-radius: 10px;"/>

### `Build, Save, & Run!`

Once a pipeline's r eady, you can build, save and run it via many ways. `build(.)` preps your pipeline,
validate & prepare it for running. `Save(.)` pipeline to a file, and `run(.)` via FastMCP.

<br clear="left">

<br />

<img src="assets/readme/more_chaining_methods.png" width="61.8%" align="right" style="border-radius: 10px;"/>

### `Many Other APIs`

More chaining methods are available, such as `with_config(...)` to configure the whole `MNCPStack` instance,
`with_tools(...)` which suppresses the need to call `with_tool(...)` multiple times, etc.

<br clear="left">

<br />

<img src="assets/readme/create_your_tool.png" width="51.8%" align="left" style="border-radius: 10px;"/>

### `Create Your Tool`

You can also create your own MCP tool with the [`mcpstack-tool-builder` CLI](https://github.com/MCP-Pipeline/MCPStack-Tool-Builder), which will generate a skeleton for you to fill in.

That means, creating the `actions` your MCP tool will allow LLMs to perform, and a `CLI` to
initialise it, configure it, and run it. More in the documentation.

<br clear="left">

<br />

## πŸ” License

MIT β€” see **[LICENSE](LICENSE)**.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "mcpstack",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "mcp, model-context-protocol, pipelines, llm, tooling, cli, scikit-learn-pipelines",
    "author": null,
    "author_email": "Provost Simon <sgp29@kent.ac.uk>",
    "download_url": "https://files.pythonhosted.org/packages/5d/bd/2e445549837a7ff4794127330dab509baeb33c984d9c0f504d46d7515642/mcpstack-0.0.2.tar.gz",
    "platform": null,
    "description": "<!--suppress HtmlDeprecatedAttribute -->\n<div align=\"center\">\n  <h1 align=\"center\">\n    MCPStack\n    <br>\n  </h1>\n  <h4 align=\"center\">Stack & Orchestrate MCP Tools \u2014 The Scikit-Learn-Pipeline Way, For LLMs</h4>\n</div>\n\n<div align=\"center\">\n\n<a href=\"https://pre-commit.com/\">\n  <img alt=\"pre-commit\" src=\"https://img.shields.io/badge/pre--commit-enabled-1f6feb?style=for-the-badge&logo=pre-commit\">\n</a>\n<img alt=\"ruff\" src=\"https://img.shields.io/badge/Ruff-lint%2Fformat-9C27B0?style=for-the-badge&logo=ruff&logoColor=white\">\n<img alt=\"python\" src=\"https://img.shields.io/badge/Python-3.9%2B-3776AB?style=for-the-badge&logo=python&logoColor=white\">\n<img alt=\"pytest coverage\" src=\"https://img.shields.io/badge/Coverage-77%25-brightgreen?style=for-the-badge&logo=pytest\">\n<img alt=\"license\" src=\"https://img.shields.io/badge/License-MIT-success?style=for-the-badge\">\n\n<div align=\"center\">\n  <h1 align=\"center\">\n    <picture>\n      <source media=\"(prefers-color-scheme: dark)\" srcset=\"assets/COVER_dark.png\">\n      <source media=\"(prefers-color-scheme: light)\" srcset=\"assets/COVER.png\">\n      <img alt=\"Fallback image description\" src=\"assets/COVER.png\">\n    </picture>\n  </h1>\n</div>\n\n</div>\n\n> [!IMPORTANT]\n> \ud83d\udce3Come Check Out Our MCPs Marketplace, on the documentation!\n> \ud83c\udf89 MCPStack MIMIC MCP tool, available!\n\n## <a id=\"about-the-project\"></a>\ud83d\udca1 About The Project\n\n`MCPStack` is a **`Scikit-Learn-Like` Pipeline orchestrator** for Model Context Protocols (MCPs).\nIt allows you to **stack multiple MCP tools together** into a pipeline of interest and expose them directly\ninto your favourite LLM environment, such as **Claude Desktop**.\n\nThink of it as **`scikit-learn` pipelines, but for Large Language Models**:\n* In `scikit-learn`, you chain `preprocessors`, `transformers`, and `estimators`.\n* In `MCPStack`, you chain MCP tools of interest. If some tools are not of interest, you simply do not include them in the pipeline.\n\nThe LLM cannot use a tool that is not included in the pipeline.  This makes orchestration both **powerful** and **secure**.\nThis permits sophisticated compositions in which the LLM can only access the tools you specify \u2013 no more, no less.\n\n**Wait, what is a Model Context Protocol (MCP) \u2014 In layman's terms ?**\n\nThe Model Context Protocol (MCP) standardises interactions with machine learning (Large Language) models,\nenabling tools and libraries to communicate successfully with a uniform workflow.\n\n---\n\n## Installation\n\n> [!NOTE]\n> MCPStack is the orchestrator \u2014 it comes with core utilities and validated tools.\n> All validated tools are listed under `mcp_tools` in the `pyproject.toml` and are auto-registered via\n> `[project.entry-points.\"mcpstack.tools\"]`.\n\n### Clone the repository\n\n```bash\ngit clone https://github.com/MCP-Pipeline/MCPStack.git\ncd MCPStack\n```\n\n### Install dependencies\n\nUsing UV (recommended):\n\n```bash\nuv sync\n```\n\nUsing pip:\n\n```bash\npip install -e .[dev]\n```\n\n### Install pre-commit hooks\n\nVia UV:\n\n```bash\nuv run pre-commit install\n```\n\nVia pip:\n\n```bash\npre-commit install\n```\n\n## \ud83d\udda5\ufe0f CLI Workflow\n\nYou can manage and run your MCP pipelines directly from the CLI with the `mcpstack` command.\nEvery command is run with `uv run mcpstack` (or just `mcpstack` if installed globally).\n\n<img src=\"assets/readme/help.png\" width=\"61.8%\" align=\"left\" style=\"border-radius: 10px;\"/>\n\n### `Help`\n\nDisplay all available CLI options, from utilities to building your pipeline, run with `--help`.\n\n<br clear=\"left\">\n\n<br />\n\n<img src=\"assets/readme/utils.gif\" width=\"61.8%\" align=\"right\" style=\"border-radius: 10px;\"/>\n\n### `Utilities`\n\nList all validated tools available in your environment via `list-tools` and the presets via `list-presets`.\nA preset is an already configured pipeline that you can run in one command line rather than building it from scratch.\nUseful for experiments reproduction.\n\n<br clear=\"right\">\n\n<br />\n\n<img src=\"assets/readme/pipeline.gif\" width=\"61.8%\" align=\"left\" style=\"border-radius: 10px;\"/>\n\n### `Your First Pipeline`\n\nCreate a pipeline from scratch with more than one MCPs in it! `pipeline <tool_name> --new/to-pipeline <json_output>`.\n\n<br clear=\"left\">\n\n<br />\n\n<img src=\"assets/readme/configure_tool_add_to_pipeline.gif\" width=\"61.8%\" align=\"right\" style=\"border-radius: 10px;\"/>\n\n### `MCP Tool Configuration`\n\nYou can configure yoru MCP tools before adding it to your pipelines. `tools <tool_name> configure <flags avail/of interest>` then `pipeline <tool_name> --tool-config <path_to_configured_tool> ...`.\n\n<br clear=\"right\">\n\n<br />\n\n<img src=\"assets/readme/build_with_claude.gif\" width=\"61.8%\" align=\"left\" style=\"border-radius: 10px;\"/>\n\n### `Run Pipeline In Claude`\n\nAs soon as you have built your pipeline, you can run it via many ways. One is within a LLM environment like Claude Desktop.\n`build --pipeline <pipeline_path> --config-type <config_type_avail.>` \u2014 Open Claude Desktop now!\n\n<br clear=\"left\">\n\n<br />\n\n<img src=\"assets/readme/run_with_fast_mcp.gif\" width=\"61.8%\" align=\"right\" style=\"border-radius: 10px;\"/>\n\n### `Run W/ FastMCP`\n\nYou can also run your pipeline with FastMCP, allowing you to connect to various LLMs avenues.\n\n<br clear=\"right\">\n\n<br />\n\n<img src=\"assets/readme/more.gif\" width=\"61.8%\" align=\"left\" style=\"border-radius: 10px;\"/>\n\n### `Many Other CLIs Options`\n\nMore options are available, such as `search` for MCP tools or presets via a prompt query, run with presets,\nsearch for MCP tools\nhelp commands via `tools <tool_name> --help`, and more.\n\n<br clear=\"left\">\n\n<br />\n\n## \u2699\ufe0f Programmatic Workflow\n\nFor those wanted to integrate MCPStack into their Python workflow, or simply prefer\nto play with programmatic pathways, MCPStack provides a Python API to build and run pipelines, very similarly;\nwith chaining-based methods for an intuitive and smooth programmatic API exp.\n\n<img src=\"assets/readme/with_tools.png\" width=\"61.8%\" align=\"left\" style=\"border-radius: 10px;\"/>\n\n### `Your First Pipeline`\n\nBuild your first pipeline programmatically by stacking MCP tools together via `with_tool(.)` or `with_tools(...)` methods.\nOf course, you can configure each tool before adding through `with_tool(.)`.\n\n<br clear=\"left\">\n\n<br />\n\n<img src=\"assets/readme/with_preset.png\" width=\"61.8%\" align=\"right\" style=\"border-radius: 10px;\"/>\n\n### `With Presets`\n\nYou can also use presets to build your pipeline, which is a pre-configured pipeline that you can run in one line of\ncode rather than stacking `with_tool(...)` methods. Great for experiments reproduction.\n\n<br clear=\"right\">\n\n<br />\n\n<img src=\"assets/readme/build_save_and_run.png\" width=\"61.8%\" align=\"left\" style=\"border-radius: 10px;\"/>\n\n### `Build, Save, & Run!`\n\nOnce a pipeline's r eady, you can build, save and run it via many ways. `build(.)` preps your pipeline,\nvalidate & prepare it for running. `Save(.)` pipeline to a file, and `run(.)` via FastMCP.\n\n<br clear=\"left\">\n\n<br />\n\n<img src=\"assets/readme/more_chaining_methods.png\" width=\"61.8%\" align=\"right\" style=\"border-radius: 10px;\"/>\n\n### `Many Other APIs`\n\nMore chaining methods are available, such as `with_config(...)` to configure the whole `MNCPStack` instance,\n`with_tools(...)` which suppresses the need to call `with_tool(...)` multiple times, etc.\n\n<br clear=\"left\">\n\n<br />\n\n<img src=\"assets/readme/create_your_tool.png\" width=\"51.8%\" align=\"left\" style=\"border-radius: 10px;\"/>\n\n### `Create Your Tool`\n\nYou can also create your own MCP tool with the [`mcpstack-tool-builder` CLI](https://github.com/MCP-Pipeline/MCPStack-Tool-Builder), which will generate a skeleton for you to fill in.\n\nThat means, creating the `actions` your MCP tool will allow LLMs to perform, and a `CLI` to\ninitialise it, configure it, and run it. More in the documentation.\n\n<br clear=\"left\">\n\n<br />\n\n## \ud83d\udd10 License\n\nMIT \u2014 see **[LICENSE](LICENSE)**.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "MCPStack: a generic, composable stack for building and running MCP tool pipelines.",
    "version": "0.0.2",
    "project_urls": {
        "Changelog": "https://github.com/MCP-Pipeline/MCPStack/releases",
        "Documentation": "https://github.com/MCP-Pipeline/MCPStack",
        "Homepage": "https://github.com/MCP-Pipeline/",
        "Issues": "https://github.com/MCP-Pipeline/MCPStack/issues",
        "Repository": "https://github.com/MCP-Pipeline/MCPStack"
    },
    "split_keywords": [
        "mcp",
        " model-context-protocol",
        " pipelines",
        " llm",
        " tooling",
        " cli",
        " scikit-learn-pipelines"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4786d5d7d3f2ebf2b17c564c1771d8b011c7ba6a9bc7ff3b66e6cef0c5bf2acf",
                "md5": "afd6324129cfdf016bebfb8fd1cc78f3",
                "sha256": "07c9f9e265116820a8a7fc6bf20fa3aade1af3acb6679e76ede2895df9eaa24f"
            },
            "downloads": -1,
            "filename": "mcpstack-0.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "afd6324129cfdf016bebfb8fd1cc78f3",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 40204,
            "upload_time": "2025-08-20T01:55:10",
            "upload_time_iso_8601": "2025-08-20T01:55:10.818295Z",
            "url": "https://files.pythonhosted.org/packages/47/86/d5d7d3f2ebf2b17c564c1771d8b011c7ba6a9bc7ff3b66e6cef0c5bf2acf/mcpstack-0.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5dbd2e445549837a7ff4794127330dab509baeb33c984d9c0f504d46d7515642",
                "md5": "01d9fb431b334ca016ae89a9c90910c6",
                "sha256": "de8b1d6f6591833239612bad0c785fd6bc21653aff132d25961b5ebb1a4af6a9"
            },
            "downloads": -1,
            "filename": "mcpstack-0.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "01d9fb431b334ca016ae89a9c90910c6",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 38546,
            "upload_time": "2025-08-20T01:55:12",
            "upload_time_iso_8601": "2025-08-20T01:55:12.302692Z",
            "url": "https://files.pythonhosted.org/packages/5d/bd/2e445549837a7ff4794127330dab509baeb33c984d9c0f504d46d7515642/mcpstack-0.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-20 01:55:12",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "MCP-Pipeline",
    "github_project": "MCPStack",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "mcpstack"
}
        
Elapsed time: 1.28650s