Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Heroku MCP Tool Search Serverfind a tool that can summarize long PDF documents"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Tool Search Server
The Problem: When you give Claude 50+ tools, two things break:
Context bloat - Tool definitions eat 10-20K tokens, leaving less room for actual work
Selection accuracy - Claude gets confused and picks wrong tools when there are too many
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 │
└─────────────────────┘ └─────────────────────┘How It Works
You register your tools with this server (via REST API)
Claude gets access to search tools (
tool_search_bm25,tool_search_semantic,tool_search_regex)When Claude needs a tool, it searches → gets back tool names → uses them
Three search methods:
BM25 - Keyword matching ("weather" finds
get_weather,get_forecast)Semantic - Meaning-based ("send a message" finds
send_email)Regex - Pattern matching (
get_.*finds all getter tools)
Deploy to Heroku
Or manually:
heroku create my-tool-search
heroku buildpacks:set heroku/python
git push heroku main
heroku ai:models:create claude-4-sonnet --as INFERENCERegister Your Tools
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"]
}
}'Test It
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"}]
}'API Reference
Endpoint | Description |
| Register a tool |
| List all tools |
| Remove a tool |
| Health check |
MCP Tools
Tool | Use Case |
| Find tools by keywords |
| Find tools by meaning |
| Find tools by pattern |
| List all registered tools |
This server cannot be installed
Resources
Looking for Admin?
Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to authenticate as an admin.