slop-mcp
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_slopcall - Lazy connections — MCP servers connect asynchronously with tool metadata caching
- Persistent memory — disk-backed
mem_save/mem_load/mem_searchacross 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
dev.standardbeagle.com/slop-mcp
License
MIT
Metadata
Release files for slop-mcp 0.15.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| slop_mcp-0.15.0.tar.gz | 5.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| slop_mcp-0.15.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.2 kB
Release files / slop_mcp-0.15.0.tar.gz
| Download URL | slop_mcp-0.15.0.tar.gz |
|---|---|
| Size | 5.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3674d1ae37c24b39f10baff4e19ac67cdd3b3ee4e398d7d325555b68f8588098
|
|
BLAKE2b-256 checksum How to use checksums |
15b42ceb9eff4f4efd8847553fcc556ec4e82cd625e49c0b4a3fddfc4886cc6e
|
| 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 5, 2026.
Transparency logRelease files / slop_mcp-0.15.0-py3-none-any.whl
| Download URL | slop_mcp-0.15.0-py3-none-any.whl |
|---|---|
| Size | 6.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bc660cf72e1f037b3957d71d0953899e12d6089bd15e37cf973fd15d03596eab
|
|
BLAKE2b-256 checksum How to use checksums |
6ca2deaf5982284c56f736f30a329c6b79ae2395443f5eceacd98fe6456a210c
|
| 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 5, 2026.
Transparency log