<!--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"
}