goldensuite-mcp
One MCP server exposing every Golden Suite tool —
goldenmatch,goldencheck,goldenflow,goldenpipe,infermap,goldenanalysis— under a single endpoint.
pip install goldensuite-mcp
goldensuite-mcp serve --transport http --port 8300
Or via container:
docker run -p 8300:8300 ghcr.io/benseverndev-oss/goldensuite-mcp:latest
What it does
goldensuite-mcp imports each sub-package's MCP tool list and dispatcher, composes them into a single mcp.server.Server instance, and serves them over stdio or Streamable HTTP.
You point your MCP client at one endpoint and get the full Golden Suite — entity resolution, data quality scanning, transforms, pipeline orchestration, schema mapping, and trend analysis & regression detection.
Tool collisions
Tool names register on a first-wins basis. The registration order is:
- goldenmatch — entity resolution (headline package; its tools win collisions)
- goldencheck — data quality scanning
- goldenflow — transforms & standardizers
- goldenpipe — pipeline orchestrator
- infermap — schema mapping
- goldenanalysis — trend analysis & regression detection (registered last)
If two packages register a tool with the same name, the later one is shadowed. Shadowed tools are logged at WARNING level when the server starts, so you can see exactly what happened:
WARNING goldensuite_mcp.server: tool collision: 'profile' from goldenflow shadowed by earlier goldencheck (first-wins)
If you need a shadowed tool, use that package's standalone MCP server instead (e.g. goldenflow mcp-serve).
Curated tool listing (GOLDENSUITE_MCP_TOOLS)
The full suite is ~105 tools. That many in one flat namespace makes an LLM's
tool-selection noticeably worse, so list_tools returns a curated headline
set (~25 tools) by default — the primary verbs of each package. Every other
tool stays fully callable by exact name; the filter only trims what the
client sees when it enumerates tools, never what it can invoke.
Control it with the GOLDENSUITE_MCP_TOOLS env var:
| Value | list_tools returns |
|---|---|
unset / curated |
the ~25 headline tools (default) |
full |
every aggregated tool (~105) |
scan,transform,analyze_data |
exactly those names (whitespace tolerated) |
# See the whole surface
GOLDENSUITE_MCP_TOOLS=full goldensuite-mcp serve
# Only the tools a given workflow needs
GOLDENSUITE_MCP_TOOLS=upload_dataset,agent_deduplicate,scan goldensuite-mcp serve
The curated set lives in CURATED_TOOLS in goldensuite_mcp/server.py.
Discovering hidden tools (suite_find_tools)
Because the curated listing hides ~80 tools, the default surface includes one
discovery tool, suite_find_tools, so a client can find and reach the rest
without switching to full:
// find everything data-quality related
suite_find_tools({ "query": "quality" })
// list one package's whole surface
suite_find_tools({ "package": "goldenmatch" })
// -> [{ name, package, description, inputSchema }, ...]
It returns each matching tool's name, package, description, and input schema.
Call any returned tool by its exact name — hidden tools dispatch normally, they
just aren't listed. (suite_find_tools does not list itself.) This keeps the
default surface small while leaving the full ~105-tool catalog one search away,
instead of collapsing everything into a few overloaded action-style god-tools.
Composite workflows (one-call happy paths)
The aggregator also registers four composite tools that orchestrate the granular sub-package tools into a single call, so an agent doesn't have to chain upload -> configure -> match/dedupe by hand. Each is curated (listed by default) and dispatches against the same aggregated tool table — the granular tools it calls stay individually listed and callable.
| Composite | Chain | Writes |
|---|---|---|
dedupe_file |
upload_dataset -> auto_configure -> agent_deduplicate |
golden CSV |
match_sources |
upload A + upload B -> agent_match_sources |
matches CSV |
assess_file |
upload_dataset -> analyze_data -> scan |
nothing (read-only) |
clean_and_dedupe |
upload_dataset -> one in-process goldenpipe.run() (check -> flow -> dedupe) |
golden CSV |
Each accepts a file either inline (file_content + filename) or as an
already-uploaded server path (file_path); match_sources takes the pair
(file_a* / file_b*).
// dedupe one CSV end-to-end
dedupe_file({ "file_path": "/data/contacts.csv" })
// link two sources
match_sources({ "file_a": "/data/crm.csv", "file_b": "/data/signups.csv" })
// read-only quality + profile check
assess_file({ "file_path": "/data/contacts.csv" })
// normalize then dedupe
clean_and_dedupe({ "file_path": "/data/contacts.csv" })
Merged return shape — every composite returns one uniform envelope:
{
"workflow": "dedupe_file",
"ok": true, // false if a non-degraded step failed
"summary": "5 records -> 3 golden; 1 merged, 0 to review. Written to /data/contacts.golden.csv.",
"steps": [ // one entry per orchestrated step, in order
{ "step": "upload", "ok": true, "path": "/data/contacts.csv" },
{ "step": "auto_configure", "ok": true, "config": { } },
{ "step": "deduplicate", "ok": true, "auto_merge": 1, "review": 0, "golden_path": "/data/contacts.golden.csv" }
],
"config": { }, // when a configure step ran (transparency)
"outputs": { "golden_path": "/data/contacts.golden.csv", "golden_records": 3, "total_records": 5 }
}
A composite short-circuits on the first hard step failure (ok: false,
summary names the failing step). assess_file treats its scan step as
degraded-optional: if goldencheck isn't in the build, scan reports
unavailable but the composite still returns ok: true with the profile intact.
Writes are guarded by GOLDENMATCH_ALLOWED_ROOT like the underlying tools.
Claude Desktop / Claude Code config
{
"mcpServers": {
"goldensuite": {
"command": "goldensuite-mcp",
"args": ["serve"]
}
}
}
Or the hosted variant (when one is published):
{
"mcpServers": {
"goldensuite": {
"url": "https://goldensuite-mcp.example/mcp/"
}
}
}
Why an aggregator?
The Golden Suite ships six Python packages, each with its own MCP server (goldenmatch mcp-serve, goldencheck mcp-serve, …). For a deployer running all six behind one Claude Desktop config, that's six processes and six mounts.
goldensuite-mcp is the convenience option:
- One process, one mount, all the tools
- Identical Tool definitions (no proxying or naming changes)
- Sub-package MCP servers continue to work standalone for narrower deployments
Architecture
┌──────────────────────────────────────────┐
│ goldensuite-mcp Server │
│ (one mcp.server.Server instance) │
└─────────────┬────────────────────────────┘
│ aggregates
┌──────────────────────┼──────────────────────┐
▼ ▼ ▼
goldenmatch.mcp goldencheck.mcp goldenflow.mcp ...
TOOLS + dispatch TOOLS + dispatch TOOLS + handle_tool
Each sub-package exposes its TOOLS list and a dispatcher at module scope (goldenmatch.mcp.server.dispatch, goldencheck.mcp.server._TOOL_HANDLERS, etc.). The aggregator imports those, normalizes Tool format (some are Tool objects, some are dicts), and binds tool names to the right dispatcher.
No subprocess overhead, no IPC. All tool calls execute in-process.
Standalone vs aggregator
| Use case | Recommend |
|---|---|
| Need only one Golden Suite package's tools | <package> mcp-serve (standalone) |
| Want everything in one MCP endpoint | goldensuite-mcp serve |
| Care about tool collisions | Read the WARNING logs at startup, or use standalone |
| Need different versions of sub-packages on different endpoints | Use standalone |
License
MIT — see LICENSE at repo root.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file goldensuite_mcp-0.5.0.tar.gz.
File metadata
- Download URL: goldensuite_mcp-0.5.0.tar.gz
- Upload date:
- Size: 32.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0813d254ced6c02b154fead597e58b286a4e507d87e50ea6f9857596bce5695
|
|
| MD5 |
5c81ee27670f4c77e60369a62b584ab2
|
|
| BLAKE2b-256 |
f0a6d4c9f691933bd73df463f0323ee2110998798b4de0bfc2c551233505ec3b
|
File details
Details for the file goldensuite_mcp-0.5.0-py3-none-any.whl.
File metadata
- Download URL: goldensuite_mcp-0.5.0-py3-none-any.whl
- Upload date:
- Size: 18.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
176af8347f3af38ddeb3be8244489f50985a38fddea08bc8fa050927cc82e9d8
|
|
| MD5 |
e435307f3ca9c75f1c535044bcf359ec
|
|
| BLAKE2b-256 |
c12d9fb26e908cf8c2514c574916a1dbbe53f8c4a0335cb28f76f2670ad4deeb
|