Skip to main content

MCP orchestrator — connect unlimited Model Context Protocol servers through 8 meta-tools. Progressive tool discovery keeps your AI agent's context window small.

Project description

slop-mcp

PyPI version License: MIT

MCP orchestrator that aggregates multiple Model Context Protocol servers behind 8 meta-tools. Connect any number of MCPs without bloating your agent's context window.

Without slop-mcp:  50 MCPs x 20 tools = 1,000 tool definitions in context
With slop-mcp:     50 MCPs x 20 tools = 8 tool definitions in context

Install

uvx slop-mcp serve

Or install globally:

pip install slop-mcp

Also available via npm (npx @standardbeagle/slop-mcp), Go, and binary releases.

Configure

Add to Claude Desktop:

{
  "mcpServers": {
    "slop": {
      "command": "uvx",
      "args": ["slop-mcp", "serve"]
    }
  }
}

Add to Claude Code:

claude mcp add slop-mcp -- uvx slop-mcp serve

Windows users: Use cmd /c to wrap the command if path handling corrupts the args:

{
  "mcpServers": {
    "slop": {
      "command": "cmd",
      "args": ["/c", "uvx", "slop-mcp", "serve"]
    }
  }
}

Define MCP servers in .slop-mcp.kdl:

mcp "github" {
    transport "sse"
    url "https://mcp.github.com/sse"
}

mcp "jira" {
    transport "streamable"
    url "https://mcp.atlassian.com/v2/mcp"
}

mcp "lci" {
    command "lci" "mcp"
}

The 8 Meta-Tools

Tool Purpose
search_tools Fuzzy search across all connected MCP tools
execute_tool Run any tool on any connected MCP
get_metadata Inspect tool schemas and MCP capabilities
run_slop Execute multi-tool scripts without round-trips
manage_mcps Add or remove MCP servers at runtime
auth_mcp OAuth authentication for MCPs that need it
slop_reference Browse SLOP built-in functions
slop_help Get detailed help for a SLOP function

Examples

Cross-MCP orchestration with SLOP

Chain tools across multiple MCPs in a single run_slop call — intermediate results stay out of the agent's context:

# Create Jira tasks from unread emails matching a filter
emails = gmail.search_messages(query: "label:action-needed is:unread")
for email in emails {
    jira.create_issue(
        project: "OPS",
        summary: email["subject"],
        description: format("From: {}\n\n{}", email["from"], email["snippet"]),
        issue_type: "Task"
    )
    gmail.modify_message(id: email["id"], remove_labels: ["UNREAD"])
}
emit(created: len(emails))
# Agent sees only: {"created": 4}
# Index codebase structure into persistent memory for future sessions
results = lci.search(query: "public API endpoints")
endpoints = results
    | map(|r| {"path": r["file"], "name": r["symbol"], "kind": r["kind"]})
    | filter(|r| r["kind"] == "function")
mem_save("project", "api_endpoints", endpoints,
    description: "Public API endpoint inventory")
emit(indexed: len(endpoints))
# Generate a visual report from code analysis
stats = lci.search(query: "struct")
by_package = stats
    | map(|r| r["file"] | split("/") | first())
    | group_by(|pkg| pkg)
chart_data = by_package
    | items()
    | map(|pair| {"label": pair[0], "value": len(pair[1])})
    | sorted(|a, b| b["value"] - a["value"])
banana.create_chart(type: "bar", title: "Structs by Package", data: chart_data)

Features

  • Progressive discovery — agents find tools via search_tools, not by loading everything upfront
  • SLOP scripting — chain tool calls across MCPs and process results in a single run_slop call
  • Lazy connections — MCP servers connect asynchronously with tool metadata caching
  • Persistent memory — disk-backed mem_save/mem_load/mem_search across sessions
  • Three-tier config — project-local > project > user config merging with KDL
  • OAuth support — browser-based auth for MCPs like Figma, GitHub, Linear, Jira
  • All transports — stdio, SSE, and streamable HTTP

Documentation

standardbeagle.github.io/slop-mcp

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

slop_mcp-0.14.0.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

slop_mcp-0.14.0-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

Details for the file slop_mcp-0.14.0.tar.gz.

File metadata

  • Download URL: slop_mcp-0.14.0.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for slop_mcp-0.14.0.tar.gz
Algorithm Hash digest
SHA256 65bbd61f10c53e9941c9beb29ee9705bbcf37869626159999d5d1aa71c7b1ad8
MD5 eda4e7664205a5a99c6988a10e9bc42d
BLAKE2b-256 29108a72cff010e8907addf97daf383668878d08d608655295d92e231c4913ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for slop_mcp-0.14.0.tar.gz:

Publisher: release.yml on standardbeagle/slop-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file slop_mcp-0.14.0-py3-none-any.whl.

File metadata

  • Download URL: slop_mcp-0.14.0-py3-none-any.whl
  • Upload date:
  • Size: 5.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for slop_mcp-0.14.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b2ec5b13c96714867bc4d59c94031da6193a2d804bc2fa5b5679f0683d75fcaa
MD5 07d73fc01749300be4ebb68d5f902ee9
BLAKE2b-256 429be63decee5969c2bd2f7587b42a325c201845613154259881ec8e075b7c85

See more details on using hashes here.

Provenance

The following attestation bundles were made for slop_mcp-0.14.0-py3-none-any.whl:

Publisher: release.yml on standardbeagle/slop-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page