The Toolbox MCP
Click on "Deploy 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., "@The Toolbox MCPsearch for sqlmap and tell me what it does"
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.
The Toolbox MCP
๐ AI Agent Tool Discovery via Librarian + Tavily
An MCP (Model Context Protocol) server that enables AI agents to discover installed tools and packages using Librarian's system-wide index, enriched with real-time web intelligence from Tavily.
โจ Features
Tool Discovery: Query 9,236+ tools across 14 package managers
Full-Text Search: Millisecond-fast FTS5 queries
Tavily Integration: Real-time tool research and descriptions
Safe: Read-only, bounded, no tool execution
MCP Native: Works with Claude, Bifang, and other MCP clients
Related MCP server: fossick-mcp
๐ ๏ธ Tools Provided
1. toolbox_search
Search for tools by keywords with pagination.
2. toolbox_describe
Get detailed info for a specific tool.
3. toolbox_inventory
Overview of indexed tools, sources, and categories.
4. toolbox_research ๐ (Tavily)
Enrich tool information with real-time web search via Tavily.
๐ Quick Start
Prerequisites
Python 3.11+
uvpackage managerLibrarian index database
Tavily API key (optional, for enrichment)
Setup
# Clone this repo
git clone https://github.com/Protocol-X-01/toolbox-mcp.git
cd toolbox-mcp
# Install dependencies
uv sync --locked
# Set environment variables
export TAVILY_API_KEY='tvly_your_key_here'
# Run the server
uv run --frozen the-toolbox --db /path/to/librarian/index.db๐ Tavily Integration
The Toolbox MCP uses Tavily instead of Bright Data for tool enrichment:
Benefits
โ
Real-time Research: Current documentation and examples
โ
High Quality: LLM-optimized results
โ
Affordable: Pay-per-use, no subscription
โ
Simple: One API key, works everywhere
โ
Transparent: Clear sources and citations
How It Works
When toolbox_research is called:
Search Librarian index for tool
Query Tavily for latest info
Combine indexed + web data
Return enriched result
Example
# Search for a tool
result = toolbox_search("sql injection")
# Enrich with Tavily
enriched = toolbox_research("sqlmap")
# Returns:
{
"name": "sqlmap",
"source": "pacman",
"category": "webapp",
"version": "1.10.5-1",
"path": "/usr/bin/sqlmap",
"tavily_enriched": {
"description": "Automatic SQL injection and database takeover tool",
"github": "https://github.com/sqlmapproject/sqlmap",
"documentation": "https://sqlmap.org",
"last_updated": "2026-10-29"
}
}๐ Stats
Current Index (as of 2026-10-29):
Total Tools: 9,236
Sources: 14 package managers
Categories: 60+ types
Query Time: <8ms average
๐ Integration
With Bifang
export BIFANG_MCP_SERVERS=[{
"name":"the-toolbox",
"command":"/path/to/toolbox-mcp/.venv/bin/the-toolbox",
"args":["--db","/var/lib/librarian/index.db"]
}]With Claude Desktop
{
"mcpServers": {
"the-toolbox": {
"command": "/path/to/toolbox-mcp/.venv/bin/the-toolbox",
"args": ["--db", "/var/lib/librarian/index.db"],
"env": {
"TAVILY_API_KEY": "tvly_your_key_here"
}
}
}
}๐ฏ Why Tavily?
vs Bright Data:
Feature | Tavily | Bright Data |
Setup | 1 API key | Complex proxy |
Quality | LLM-optimized | Raw SERP |
Cost | Pay-per-use | Subscription |
Rate Limits | Generous | Strict |
Maintenance | Easy | Complex |
Agent-Friendly | โ Yes | โ ๏ธ Manual |
Winner: Tavily for AI agents! ๐
๐ง Configuration
Environment Variables
# Required for Tavily enrichment
TAVILY_API_KEY=tvly_xxxxx
# Optional: Custom LangSmith tracing
LANGSMITH_API_KEY=lsv2_pt_xxxxx
LANGSMITH_PROJECT=toolbox-mcp
LANGSMITH_ENDPOINT=https://api.smith.langchain.comIndex Path
The Toolbox reads from Librarian's SQLite index:
# Default path
/var/lib/librarian/index.db
# Or specify custom path
uv run the-toolbox --db /custom/path/index.db๐ API Reference
toolbox_search
toolbox_search(
query: str, # Search terms (1-256 chars)
source: str = None, # Filter by package manager
category: str = None, # Filter by category
limit: int = 15, # Results per page (1-50)
offset: int = 0 # Pagination (0-10000)
) -> dicttoolbox_describe
toolbox_describe(
name: str # Exact tool name (1-256 chars)
) -> dicttoolbox_inventory
toolbox_inventory() -> dicttoolbox_research ๐
toolbox_research(
name: str # Tool name to enrich via Tavily
) -> dict๐ก๏ธ Safety Features
โ
Read-Only: SQLite opened with mode=ro
โ
Bounded Inputs: Max query length, pagination limits
โ
Timeout Protection: 1-second query deadline
โ
No Execution: Discovers tools, doesn't run them
โ
Untrusted Data: Descriptions are evidence, not instructions
๐งช Testing
# Run tests
uv run pytest tests/ -v
# Test Tavily integration
export TAVILY_API_KEY='your_key'
uv run python -c "
from toolbox import toolbox_research
result = toolbox_research('nmap')
print(result)
"๐ฆ Supported Sources
Librarian indexes tools from:
pacman (Arch + BlackArch)
aur (AUR packages)
path ($PATH binaries)
cargo (Rust)
pip/pipx (Python)
npm/yarn/pnpm (JavaScript)
docker (Container images)
desktop (GUI apps)
foundry (Solidity)
conda (Data science)
rpm (RPM packages)
And more...
๐ค Integration with Bifang
Built for the Nebius x NVIDIA Hackathon 2026:
Live Test: Nemotron Nano roundtrip verified
Tokens: 8,885 tracked in live demo
Status: Production ready โ
๐ Use Cases
1. AI Coding Agents
"Find tools for SQL injection testing" โ Returns: sqlmap, jsql-injection, sqlbrute...
2. Security Researchers
"What wireless tools do I have?" โ Returns: aircrack-ng, wifite, reaver...
3. DevOps Engineers
"Find container tools" โ Returns: docker, podman, buildah...
4. Data Scientists
"What ML libraries are installed?" โ Returns: numpy, pandas, scikit-learn...
๐ Links
Repository: https://github.com/Protocol-X-01/toolbox-mcp
Librarian: https://github.com/Protocol-X-01/librarian
Tavily: https://tavily.com
MCP Protocol: https://modelcontextprotocol.io
๐ License
MIT License - See LICENSE
๐ Credits
Librarian - System-wide tool indexing
Tavily - Web intelligence API
MCP - Model Context Protocol
Bifang - AI coding agent integration
Built with โค๏ธ for the Nebius x NVIDIA Hackathon 2026
Available Tools
4 toolstoolbox_describeARead-onlyIdempotent
Return up to 50 indexed records for an exact tool name across package managers.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds real context with the 50-record cap and per-package-manager aggregation, but says nothing about behavior when the name is not found (empty result vs error) or whether duplicates are collapsed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. The record cap and the exactness constraint both land before the agent stops reading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema and rich annotations remove the need to explain return values or safety, and the 1-param surface is small. What remains missing is the lookup-vs-search distinction against three sibling tools and the not-found behavior, which matters for an agent choosing among four similarly scoped tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single 'name' parameter has no description, so the description carries the burden. It does compensate by clarifying that matching is EXACT rather than fuzzy or regex, which is the key semantic an agent needs, but it omits format, case sensitivity, and namespace conventions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (return indexed records) and resource (tool records across package managers) and adds the 'exact tool name' qualifier that separates it from a fuzzy lookup. It does not name any sibling, so the differentiation is implied rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Exact tool name' implies the use case: look up a tool whose name you already know, rather than browse or search. However, no sibling is named and there is no statement of when to prefer toolbox_search or toolbox_inventory, so the agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toolbox_inventoryARead-onlyIdempotent
Show inventory size, source scan timestamps/failures, and categories without scanning or executing tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the safety profile is covered. The description adds real context beyond them: this call does not trigger a scan or execute any tool, and it surfaces scan failure timestamps so the agent can judge staleness. That is genuine behavioral disclosure the annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The verb comes first, the returned data is enumerated, and the negative constraint ('without scanning or executing tools') is appended where it lands hardest. Nothing could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape explanation is unnecessary, and with no parameters the definitional burden is low. The description covers cost (no scan), contents, and a staleness signal. Only the relationship to the three sibling tools is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate โ baseline 4 applies. The description correctly avoids inventing parameters or restating the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Show') and resource ('inventory') and enumerates the three things returned: size, source scan timestamps/failures, and categories. An agent immediately knows this is a metadata snapshot. It stops short of differentiating itself from siblings like toolbox_describe or toolbox_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'without scanning or executing tools' implies a cheap orientation call, which is meaningful usage guidance. However, it never says when to pick this over toolbox_search or toolbox_describe, nor does it sequence itself as a first step โ the routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toolbox_researchBRead-only
Enrich tool information with real-time web search via Tavily.
Combines Librarian's indexed data with Tavily web search for up-to-date documentation, GitHub links, and usage examples.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, non-idempotent and non-destructive, covering the safety profile. The description adds that results come from an external Tavily call and include docs, GitHub links and examples, but says nothing about latency, cost, or why it is not idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler; the mechanism and value are stated up front. Minor looseness from the line break and the vague verb 'enrich'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Return values need not be explained because an output schema exists, and annotations cover safety. Still, for a one-parameter tool the description leaves open whether 'name' is a registry entry, a package, or a URL, and when to prefer a sibling โ a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% on a single required 'name' string with no description. The phrase 'Enrich tool information' hints the parameter is a tool name, but the description never states that explicitly or gives format expectations, so it only partially compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action with mechanism: enrich tool information using real-time web search via Tavily, combining indexed data with live results. That is clearly distinguishable from toolbox_describe or toolbox_inventory in spirit, but the description never names those siblings, so the boundary is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by 'for up-to-date documentation' โ an agent can infer this is the fallback when indexed data is stale, but no explicit trigger, exclusion, or named alternative (e.g. toolbox_search) is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toolbox_searchARead-onlyIdempotent
Find installed tools by literal words, with optional source/category filters and bounded pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| offset | No | ||
| source | No | ||
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile needs no restating. The description adds only that pagination is bounded and filters are optional; it does not say what matching semantics are (substring, token, AND/OR) or what ranking applies to results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or repetition. It is arguably over-compressed for a five-parameter search tool, but nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return values, so the description need not explain results, and the annotations cover the safety profile. What remains missing is matching semantics and filter value domains, which matters given 0% schema coverage on five parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full parameter burden, and it does name two of the optional filters (source, category) plus bounded pagination. It says nothing about query syntax, allowed source/category values, or how limit and offset interact, leaving real gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Find installed tools') and adds a meaningful qualifier ('by literal words'), which hints at keyword matching. It never names a sibling, so an agent must infer the contrast with toolbox_inventory or toolbox_research rather than being told it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'By literal words' implies the tool is for exact-term lookup rather than exploration, which is a usable hint. But there is no explicit when-to-use/when-not statement and no routing to the sibling tools that plainly overlap (inventory, describe, research).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.2.0- First observed
toolbox_describe - First observed
toolbox_inventory - First observed
toolbox_research - First observed
toolbox_search
TDQS
Scored across 4 tools
Each tool has a distinct role: search (fuzzy word lookup), describe (exact-name multi-source lookup), inventory (metadata/status), and research (web enrichment). Search vs describe slightly overlap since both return tool records, but the 'literal words' vs 'exact name' distinction is stated clearly enough to guide selection.
All four tools follow a consistent toolbox_<verb> snake_case pattern (search, describe, inventory, research). Predictable and easy to map to intent.
Four tools is on the lean side but each covers a genuine stage of discovery (scan status, find, detail, enrich). No redundant tools, though the surface feels slightly thin for a 'toolbox'.
For a discovery/lookup server the lifecycle (inventory status -> search -> describe -> research) is covered without dead ends. Missing install/execute/update operations, but those appear outside the stated read-only scope.
Maintenance
Related MCP Connectors
Live npm, PyPI and crates.io package facts, READMEs and vulnerability checks for coding agents.
Search GitHub, npm, PyPI, StackOverflow, ArXiv from one MCP โ built for coding agents.
Package intelligence for AI agents across npm, PyPI, crates.io and deps.dev. No API keys.
Package intelligence for AI agents across npm, PyPI, crates.io and deps.dev. No API keys.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search documentation of packages and services to find implementation details, examples, and specifications.MIT
- AlicenseAqualityCmaintenanceEnables AI agents to prospect across GitHub, PyPI, and npm, searching repositories, packages, and code patterns with read-only tools.769 PyPI5MIT
- AlicenseAqualityCmaintenanceEnables AI coding agents to search the npm registry and retrieve package metadata, READMEs, download stats, GitHub details, and usage snippets via the Model Context Protocol.96 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search and retrieve detailed package information from multiple package registries (NPM, crates.io, NuGet, PyPI, Go).5,758 npmMIT