Skip to content

dhruvvarshney1/fanout-mcp

v0.1.0Apache-2.0

Run many independent subtasks in parallel on cheap, local or open-source models and return only the distilled result.

fanout

Fan out 5–30 independent subtasks to cheap or local models, then keep only the distilled result. The engine is a plain async library; the MCP server is the thin integration layer.

Animated demo placeholder — add docs/assets/demo.gif before release.

Why it exists

WorkloadObserved local resultPractical effect
Six src/ files, 9B reasoning model6 usable answers in 85s with thinking off3.5× faster than 2 answers in 300s with thinking on
5–30 independent tasksconcurrency capped per profileparallel work without unbounded provider load
Long outputstruncated or reference return modesless context; full results remain retrievable

Measure spend and savings on your own run with fanout report; the table is a local smoke benchmark, not a promise about another model or machine.

Install in 60 seconds

For Claude Code:

/plugin marketplace add dhruvvarshney1/fanout-mcp
/plugin install fanout-mcp@fanout

For Codex:

codex plugin marketplace add dhruvvarshney1/fanout-mcp
codex plugin add fanout-mcp@fanout

Anywhere else, register this stdio server:

uvx --from git+https://github.com/dhruvvarshney1/fanout-mcp fanout-mcp

uv must be on PATH. The package includes default provider settings, so the server starts without a repository-relative config or working-directory assumption. See installation by harness and the local setup guide.

What the server provides

Tools: fan_out, setup_providers(), list_profiles(), validate_providers(), and get_result(run_id, task_id).

Use fan_out for independent extraction, classification, summarization, rewriting, or rule checks. Do not use it for dependent tasks, whole-corpus judgment, or only one or two subtasks.

aggregation can be passthrough, concat, vote, rank, or map_reduce. Raw worker output is always stored; return_mode controls how much appears inline: truncated (default), reference, or full.

Configuration

Copy the bundled file when you need custom providers or profiles:

cp src/dhruvvarshney/providers.default.yaml providers.yaml
uv run fanout-mcp

See provider configuration and profiles, the security model, cost accounting, and troubleshooting.

Development

uv sync
uv run ruff check .
uv run mypy --strict src tests
uv run pytest -q

The test suite uses fake providers and in-memory MCP clients; it does not call Ollama or hosted APIs. Real local-provider checks are opt-in under scripts/dogfood/.

Accounting

Every run writes task records and a summary to $FANOUT_LOG (by default under $FANOUT_DATA_DIR). Compare actual usage with a flagship baseline:

uv run fanout report path/to/runs.jsonl --baseline-input-per-1m 3 --baseline-output-per-1m 15

Optional OpenTelemetry support is enabled with uv sync --extra otel and FANOUT_OTEL=1.

License

Apache-2.0. See distribution decisions and the open-core boundary proposal.