tylerwilliamwick/toolstream
MCP proxy with semantic routing that reduces LLM tool token overhead
Platform-specific configuration:
{
"mcpServers": {
"toolstream": {
"command": "npx",
"args": [
"-y",
"toolstream"
]
}
}
}Add the config above to .claude/settings.json under the mcpServers key.
[](https://github.com/tylerwilliamwick/toolstream/actions/workflows/ci.yml) [](LICENSE) [](https://nodejs.org)
Every time Claude Code starts a conversation, it loads the full list of tools from every connected service. If you have GitHub, Jira, Confluence, and a few other services connected, that can mean 100+ tool definitions sent to the model on every single turn, costing tens of thousands of tokens before you've typed a word.
ToolStream fixes this. It sits between Claude Code and your services, and instead of loading everything upfront, it figures out which tools are relevant based on what you're talking about. If you're discussing a Jira ticket, the Jira tools appear. If you're working with files, the file tools appear. Everything else stays out of the way.
Result: 90%+ fewer tokens spent on tool definitions, with no loss of capability.
flowchart TD
Client["Claude Code"]
TS["ToolStream\n─────────────────\nRoutes the right tools\nto the right conversation"]
GH["GitHub\n(26 tools)"]
AT["Atlassian\n(Jira + Confluence, 72 tools)"]
OB["Obsidian\n(14 tools)"]
OT["Other services..."]
NT["Notifications\n(optional)"]
Client -- "4 tools visible to Claude" --> TS
TS -- "connects to" --> GH
TS -- "connects to (with credentials)" --> AT
TS -- "connects to" --> OB
TS -- "coLoading reviews...