Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

shutup-mcp

Experimental MCP tool-list filtering proxy for large tool catalogs.

shutup-mcp sits between an MCP client and one or more MCP servers. It aggregates tool definitions and exposes only the top-k tools that match the current intent.

This repository is an alpha implementation seed. It is useful for experimenting with tool-list compression, but it is not yet a full production MCP gateway.


What It Does

  • Reads a Claude Desktop-style MCP config.
  • Discovers configured MCP servers.
  • Fetches and prefixes upstream tools.
  • Builds a hybrid retrieval index over tool names and descriptions.
  • Filters tools/list results using:
    • explicit CLI intent;
    • a runtime shutup__set_intent tool;
    • fallback behavior when no intent is known.
  • Routes tools/call to the correct upstream server.
  • Supports local embedding backends:
    • sentence-transformers;
    • ollama.

What It Does Not Yet Do

This alpha does not yet provide:

  • full MCP request proxying for every capability;
  • persistent upstream sessions for every server;
  • guaranteed client-side dynamic intent detection across all MCP clients;
  • production authentication or sandboxing;
  • benchmark-backed token or latency claims.

Earlier README versions included strong reduction metrics. Those are removed until reproducible benchmarks are added.


Install

pip install shutup-mcp

For local development:

pip install -e ".[dev]"

CLI Usage

One-shot tool filtering

shutup \
  --config ~/Library/Application\ Support/Claude/claude_desktop_config.json \
  --intent "read and write local files" \
  --top-k 5

This prints a JSON array of filtered tool definitions.

Run as MCP proxy

shutup \
  --config ~/Library/Application\ Support/Claude/claude_desktop_config.json \
  --intent "work with GitHub issues" \
  --serve \
  --top-k 5

If --intent is supplied, tools/list returns only top-k tools matching that intent.

If no intent is supplied, the proxy exposes a small control tool:

shutup__set_intent

Calling this tool updates the current intent, after which tools/list can be filtered.


Claude Desktop Configuration

Example:

{
  "mcpServers": {
    "shutup": {
      "command": "shutup",
      "args": [
        "--config",
        "/absolute/path/to/claude_desktop_config.json",
        "--serve",
        "--intent",
        "work with GitHub issues",
        "--top-k",
        "5"
      ]
    }
  }
}

Example MCP Server Config

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"]
    }
  }
}

Embedder Options

Backend Description Privacy Setup
sentence-transformers Local model such as all-MiniLM-L6-v2 Local after download Downloads model on first use
ollama Ollama embedding model Local Requires Ollama running
fake Deterministic lightweight test embedder Local For tests and CI only

Command Options

shutup --config PATH [--intent TEXT] [--top-k K] [--embedder BACKEND] [--serve]
Option Description Default
--config Path to Claude Desktop MCP config required
--intent Current user task intent none
--top-k Number of tools to expose 5
--embedder sentence-transformers, ollama, or fake sentence-transformers
--serve Run as an MCP stdio proxy false

Runtime Intent Tool

The proxy exposes a control tool:

shutup__set_intent

Input:

{
  "intent": "create and triage GitHub issues"
}

Output:

{
  "ok": true,
  "intent": "create and triage GitHub issues"
}

This provides an explicit client-controlled intent update path.


Testing

pip install -e ".[dev]"
pytest -q

Tests use the lightweight fake embedder and do not download embedding models.


Security Notes

shutup-mcp reads and launches MCP servers from a config file. Treat that config file as executable configuration.

Do not use untrusted server configs.

This project filters tool visibility; it does not enforce policy, authorization, sandboxing, or data-loss prevention.


License

MIT

Metadata

Release files for shutup-mcp 0.3.0a1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for shutup-mcp 0.3.0a1
File Size Uploaded Provenance
shutup_mcp-0.3.0a1.tar.gz 14.9 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for shutup-mcp 0.3.0a1
File Interpreter ABI Platform
shutup_mcp-0.3.0a1-py3-none-any.whl Python 3 none any Details

Total release size: 28.1 kB

Release files / shutup_mcp-0.3.0a1.tar.gz

Download URL shutup_mcp-0.3.0a1.tar.gz
Size 14.9 kB
Tags Source
SHA-256 checksum
How to use checksums
5e836e4b58ec3f15f0cbe73ee927ab0ca92d7d0e19c8700430d6599e210b7ee4
BLAKE2b-256 checksum
How to use checksums
13bee48b02bac578c49e2580b381e8e44218c5e3e1e7add9cdf26e5042577516
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 13, 2026.

Transparency log

Release files / shutup_mcp-0.3.0a1-py3-none-any.whl

Download URL shutup_mcp-0.3.0a1-py3-none-any.whl
Size 13.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
25e13f55b699ede08a702cc88d0c9cef5a03a0b88edf0067a8ee3754835f968e
BLAKE2b-256 checksum
How to use checksums
0660e50ad330d294e2c9999d181ee93b6e2c6b2c93f7b3363cfaaeee61fb10e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 13, 2026.

Transparency log

Security for shutup-mcp 0.3.0a1

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 shutup_mcp-0.3.0a1.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 Sep 13, 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
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