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.13.0.tar.gz (5.0 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.13.0-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for slop_mcp-0.13.0.tar.gz
Algorithm Hash digest
SHA256 f17cbfe8cf88ef10b42b4a923d02f06f7f518bb76588ee0b78ef7f37f2761437
MD5 c99359888904b8ddb0f55920a1190d5a
BLAKE2b-256 cf742e2f6bb63df7b216c39766e48b5956fbc98d6da8d938ea4d3f817f3e4c44

See more details on using hashes here.

Provenance

The following attestation bundles were made for slop_mcp-0.13.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.13.0-py3-none-any.whl.

File metadata

  • Download URL: slop_mcp-0.13.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.7

File hashes

Hashes for slop_mcp-0.13.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d1aa31144e22f6c3bd8ff175ac986f49db12376d2799d53bee4a7ad67e2639ec
MD5 d0497ee011d07c0eafbdde0280995a07
BLAKE2b-256 7b413e8c784bd1bf251972571329c6aae823b841506a014d53c41bedf541e3b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for slop_mcp-0.13.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