Model-tiered content pipeline MCP server — cheap models seed, expensive models verify
Project description
Sprout MCP
Drop your Opus bill 80%. Model-tiered content pipeline for MCP — cheap models seed work, expensive models verify it.
Sprout routes tasks to the right model tier automatically. Haiku drafts, Sonnet fact-checks, Opus verifies. Every chunk tracks provenance, confidence, and cost.
Install
uvx sprout-mcp
Or add to Claude Code's MCP config (~/.claude/settings.json):
{
"mcpServers": {
"sprout": {
"command": "uvx",
"args": ["sprout-mcp"]
}
}
}
How It Works
Haiku (seed) → Sonnet (watered) → Opus (sprouted)
Draft Fact-check Verify
$0.005/M $0.015/M $0.075/M
- Seed — Haiku drafts content cheaply (summarization, extraction, first passes)
- Water — Sonnet reviews and fact-checks the seeds
- Sprout — Opus deep-verifies only what passed Sonnet's review
Instead of running everything through Opus at $75/M output tokens, most work stays at Haiku's $5/M. Only the final verification — typically 10-20% of total work — touches Opus.
Tools (13)
| Tool | Description |
|---|---|
submit_chunk |
Store content with provenance (model, task type, sources) |
get_review_queue |
List chunks needing review, filtered by confidence/project |
mark_reviewed |
Promote (seed→watered→sprouted) or reject chunks |
recommend_model |
Get model recommendation for a task type |
get_stats |
Dashboard of chunk counts, confidence levels, token usage |
export_chunks |
Export verified chunks as JSON |
opus_test |
Generate structured review summary for batch verification |
schedule_task |
Schedule tasks to run at a specific time or delay |
list_scheduled |
View pending scheduled tasks |
cancel_scheduled |
Cancel a pending scheduled task |
configure_routing |
Add/update routing rules at runtime |
get_cost_report |
Estimated spend per model with real pricing |
retry_on_error |
Track failed attempts with backoff guidance |
Configuration
Environment Variables
| Variable | Default | Description |
|---|---|---|
SPROUT_DB_PATH |
~/.sprout/sprout.db |
SQLite database location |
SPROUT_CONFIG |
(none) | Path to JSON config file for custom routes and pricing |
SPROUT_MAX_RETRIES |
3 |
Max retry attempts before giving up |
SPROUT_RETRY_BACKOFF |
2.0 |
Exponential backoff base (seconds) |
Custom Config File
Create a JSON file and point SPROUT_CONFIG at it:
{
"routes": {
"code_review": { "tier": "sonnet", "reason": "Code analysis needs reasoning" },
"translation": { "tier": "haiku", "reason": "Straightforward language task" }
},
"pricing": {
"custom-model": 10.00
}
}
Default Routing Table
| Task Type | Tier | Why |
|---|---|---|
biography_synthesis |
haiku | Factual summarization |
council_description |
haiku | Historical summarization |
document_synopsis |
haiku | Content summarization |
json_validation |
haiku | Structural verification |
summarization |
haiku | General summarization |
data_extraction |
haiku | Structured extraction |
fact_check_first_pass |
sonnet | Cross-reference claims |
code_review |
sonnet | Code analysis |
fact_check_final |
opus | Deep factual verification |
theological_analysis |
opus | Domain expertise required |
complex_analysis |
opus | Deep reasoning required |
Unknown task types default to haiku — start cheap, escalate if needed.
Example Workflow
You: Use recommend_model for "biography_synthesis"
Sprout: biography_synthesis → haiku-4.5 (Factual summarization)
You: Use submit_chunk to store the Haiku output
Sprout: Stored chunk abc12345 [seed] for person-001.biography
You: Use get_review_queue to see what needs fact-checking
Sprout: 1 chunk pending review
You: Use mark_reviewed to promote after Sonnet fact-checks it
Sprout: Chunk abc12345 → watered (verified by sonnet-4.6)
You: Use get_cost_report
Sprout: haiku-4.5: ~1,300 tokens (1 chunk) — $0.0065
Total: $0.0065
Development
git clone https://github.com/mepsopti/sprout-mcp.git
cd sprout-mcp
uv sync --extra dev
uv run pytest
Support
If Sprout saves you money on your AI bill, consider buying me a coffee:
License
MIT
mcp-name: io.github.mepsopti/sprout-mcp
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
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 sprout_mcp-0.1.4.tar.gz.
File metadata
- Download URL: sprout_mcp-0.1.4.tar.gz
- Upload date:
- Size: 70.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a91499298902a73b49ea8d9e9b8e917f67c1935e353d0c69bb8ef6ba6c2ba960
|
|
| MD5 |
df21b07583836168e9a6bbc7ee6d4353
|
|
| BLAKE2b-256 |
748ec247f01d45ee827ab2fb158df85071ea39d728b7db6cd238c898eed064ac
|
File details
Details for the file sprout_mcp-0.1.4-py3-none-any.whl.
File metadata
- Download URL: sprout_mcp-0.1.4-py3-none-any.whl
- Upload date:
- Size: 16.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed1dd4aaf57017597016547d2c413e42fd9fb45bcf091c2b87a11dc21e151d7d
|
|
| MD5 |
004e5922e6422c542453ed77a07e4565
|
|
| BLAKE2b-256 |
efa9b1e3ca4765706092468c52a72401d73f9d262c795302ad8e560120705036
|