loading…
Search for a command to run...
loading…
Enables dynamic tool discovery and loading for Claude using BM25, regex, and semantic search algorithms. It supports managing a catalog of over 10,000 tools wit
Enables dynamic tool discovery and loading for Claude using BM25, regex, and semantic search algorithms. It supports managing a catalog of over 10,000 tools with minimal context overhead and provides a REST API for tool management.
The Problem: When you give Claude 50+ tools, two things break:
The Solution: Instead of loading all tools upfront, Claude searches for tools and loads only what it needs.
Without Tool Search: With Tool Search:
┌─────────────────────┐ ┌─────────────────────┐
│ Load 100 tools │ │ Load 1 search tool │
│ (20K tokens) │ │ (200 tokens) │
│ │ │ │
│ Claude picks wrong │ │ Claude searches: │
│ tool 30% of time │ │ "weather" → 2 tools │
│ │ │ │
│ Context nearly full │ │ 95% context free │
└─────────────────────┘ └─────────────────────┘
tool_search_bm25, tool_search_semantic, tool_search_regex)Three search methods:
get_weather, get_forecast)send_email)get_.* finds all getter tools)Or manually:
heroku create my-tool-search
heroku buildpacks:set heroku/python
git push heroku main
heroku ai:models:create claude-4-sonnet --as INFERENCE
curl -X POST https://your-app.herokuapp.com/tools \
-H "Content-Type: application/json" \
-d '{
"name": "get_weather",
"description": "Get current weather for a location",
"input_schema": {
"type": "object",
"properties": {"location": {"type": "string"}},
"required": ["location"]
}
}'
export INFERENCE_KEY=$(heroku config:get INFERENCE_KEY -a my-tool-search)
export INFERENCE_URL=$(heroku config:get INFERENCE_URL -a my-tool-search)
curl -s "$INFERENCE_URL/v1/agents/heroku" \
-H "Authorization: Bearer $INFERENCE_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-4-sonnet",
"messages": [{"role": "user", "content": "Find tools for checking weather"}],
"tools": [{"type": "mcp", "name": "mcp-tool-search/tool_search_semantic"}]
}'
| Endpoint | Description |
|---|---|
POST /tools |
Register a tool |
GET /tools |
List all tools |
DELETE /tools/{name} |
Remove a tool |
GET /health |
Health check |
| Tool | Use Case |
|---|---|
tool_search_bm25 |
Find tools by keywords |
tool_search_semantic |
Find tools by meaning |
tool_search_regex |
Find tools by pattern |
list_all_tools |
List all registered tools |
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"heroku-mcp-tool-search-server": {
"command": "npx",
"args": []
}
}
}