Skip to main content
Glama
Adriftnote

Tool Box MCP Server

by Adriftnote

Tool Box MCP Server

Central registry for AI tools with Vector Search + Knowledge Graph for intelligent tool discovery and chaining.

Features

  • Vector Search: Semantic tool discovery via ChromaDB

  • Knowledge Graph: Tool relationships and dependency traversal

  • Tool Chaining: Execute multi-step MCP tool pipelines with data transformations

  • Progressive Disclosure: Load only what's needed, 90%+ token savings

  • Unified Registry: MCP Servers, Skills, Tools, Commands in one place

Related MCP server: executor

Quick Start

# Clone
git clone https://github.com/Adriftnote/tool-box-mcp.git
cd tool-box-mcp

# Install dependencies
npm install

# Run setup (initializes ChromaDB and sample data)
./scripts/setup.sh

# Start server
npm start

Tools (11 total)

Tool

Description

toolhub_search

Find tools by natural language query

toolhub_expand

Explore tool dependencies via Knowledge Graph

toolhub_cluster

Get complete tool set for a task

toolhub_register

Add new tools to registry

toolhub_delete

Remove tools from registry

toolhub_list

List all registered tools

toolhub_execute

Auto-generate and execute chain from query

toolhub_chain

Execute sequential MCP tool pipeline

toolhub_prepare_chain

Analyze chain before execution (schemas, skills, transforms)

toolhub_discover

Refresh chainable tools from MCP servers

toolhub_chainable

List tools available for chaining

Installation

Prerequisites

  • Node.js 18+

  • Python 3.8+ (for ChromaDB)

  • pip (Python package manager)

Step 1: Clone and Install

git clone https://github.com/Adriftnote/tool-box-mcp.git
cd tool-box-mcp
npm install

Step 2: Run Setup

# This installs Python dependencies and initializes ChromaDB
./scripts/setup.sh

Step 3: Configure MCP Client

Add to your Claude Code or MCP client settings:

{
  "mcpServers": {
    "tool-box": {
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/tool-box-mcp/dist/index.js"]
    }
  }
}

Configuration

Data Files

After installation, configure these files in the data/ directory:

File

Purpose

mcp-config.json

MCP servers to chain with

knowledge-graph.json

Tool relationships

chromadb/

Vector search database

Environment Variables (Optional)

Override default paths with environment variables:

TOOLHUB_GRAPH_PATH       # Knowledge Graph JSON path
TOOLHUB_MCP_CONFIG       # MCP config path
TOOLHUB_PYTHON_PATH      # Python interpreter path

Usage Examples

1. Search Tools

toolhub_search({
  query: "data analysis excel",
  limit: 10,
  include_graph: true
})

2. Execute Tool Chain

toolhub_chain({
  mcpPath: [
    {
      toolName: "sqlite_read_query",
      toolArgs: "{\"query\": \"SELECT * FROM metrics LIMIT 10\"}",
      outputTransform: "sqlite→2d"
    },
    {
      toolName: "document_create_excel",
      toolArgs: "{\"filepath\": \"/tmp/report.xlsx\", \"content\": \"CHAIN_RESULT\"}"
    }
  ]
})

3. Register New Tool

toolhub_register({
  name: "my-mcp-server",
  type: "MCP_Server",
  description: "My custom MCP server for data processing"
})

Architecture

┌─────────────────────────────────────────────┐
│  Claude Code / AI Agent                     │
└─────────────────────────────────────────────┘
                    │ MCP Call
                    ▼
┌─────────────────────────────────────────────┐
│  Tool Box MCP Server                        │
│  ┌─────────────────────────────────────┐   │
│  │ HybridSearchService                 │   │
│  │ ├─ VectorSearchService (ChromaDB)   │   │
│  │ └─ GraphSearchService (JSON)        │   │
│  ├─────────────────────────────────────┤   │
│  │ ToolDiscoveryService                │   │
│  │ └─ Chain Execution + Transforms     │   │
│  └─────────────────────────────────────┘   │
└─────────────────────────────────────────────┘
         │                    │
         ▼                    ▼
┌───────────────┐    ┌───────────────┐
│  ChromaDB     │    │  Knowledge    │
│  (data/)      │    │  Graph JSON   │
└───────────────┘    └───────────────┘

Data Transforms

Built-in transforms for chain data flow:

Transform

Description

sqlite→2d

SQLite results to 2D array

json→object

Parse JSON string to object

object→array

Wrap object in array

flatten

Flatten nested arrays

first

Extract first element

keys

Get object keys

values

Get object values

Development

# Build from source
npm run build

# Run server
npm start

# Type check
npm run typecheck

Project Structure

tool-box-mcp/
├── dist/                 # Compiled JavaScript (included)
├── src/
│   ├── index.ts          # Main server entry
│   ├── schemas/          # Zod input schemas
│   └── services/         # Search, chain, transform services
├── scripts/
│   ├── setup.sh          # Initial setup script
│   └── register-tool.py  # Tool registration utility
├── data/
│   ├── chromadb/         # Vector database
│   ├── knowledge-graph.json
│   └── mcp-config.json
└── package.json

Troubleshooting

"ChromaDB not found"

pip install chromadb sentence-transformers

"Python not found"

Set the Python path:

export TOOLHUB_PYTHON_PATH=/usr/bin/python3

"No tools found"

Run setup to initialize sample data:

./scripts/setup.sh

License

ISC

Available Tools

4 tools
toolhub_clusterGet Tool ClusterA
Read-onlyIdempotent

Get a complete tool cluster for a task query.

This combines vector search and graph expansion to return a complete set of tools needed for a task. Includes primary tools (semantic matches) and their dependencies (graph expansion), plus usage context.

Args:

  • query (string): Natural language task description

  • include_context (boolean): Include usage patterns and examples (default: true)

  • response_format ('json' | 'markdown'): Output format

Returns: { "primary": [ { "name": "n8n-workflow-builder", "type": "MCP_Server", ... } ], "dependencies": [ { "name": "n8n-node-templates", "type": "Skill", ... } ], "context": { "usagePatterns": ["Use MCP servers for data operations", ...], "examples": ["Primary workflow: n8n-workflow-builder - ...", ...] }, "stats": { "totalTools": 7, "tokenEstimate": 7000, "savingsPercent": 92.1 } }

Use this tool for complete task setup - returns everything needed to start working.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural language query to find a complete tool cluster
include_contextNoWhether to include usage context and examples
response_formatNoOutput formatjson

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds behavioral context by explaining that the tool returns a complete set of tools including primary and dependencies, and provides a sample output structure. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a one-sentence title, a brief explanation of how it works, then clearly labelled Args and Returns sections. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has three parameters with full schema coverage, and the description provides a detailed output example including fields like primary, dependencies, context, and stats. Although no output schema exists, the example sufficiently describes the return value for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description repeats parameter definitions with slight elaboration (e.g., 'Natural language task description' for query). Since schema already provides descriptions, the description adds marginal value. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get a complete tool cluster for a task query.' It explains it combines vector search and graph expansion to return primary tools, dependencies, and context. This distinguishes it from siblings like toolhub_search (likely semantic matches only) and toolhub_expand (graph expansion on a single tool).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use this tool for complete task setup - returns everything needed to start working.' This gives clear guidance on when to use it, but does not explicitly mention when not to use it or compare with alternatives beyond the description of what it returns.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toolhub_expandExpand Tool GraphA
Read-onlyIdempotent

Expand a tool to find its dependencies via Knowledge Graph.

Given a tool name, traverse the Knowledge Graph to find related tools, requirements, and dependencies. Useful for understanding what other tools are needed to complete a task.

Args:

  • tool_name (string): Name of the tool to expand (e.g., 'n8n-workflow-builder')

  • depth (number): Traversal depth (default: 2, max: 4)

  • relation_types (string[]): Filter by relation types (optional)

  • response_format ('json' | 'markdown'): Output format

Relation types:

  • REQUIRES: Tool A requires Tool B to function

  • WORKS_WITH: Tools that commonly work together

  • EXECUTABLE_VIA: Tool can be executed via another tool

  • OUTPUTS_TO: Tool outputs data to another tool

  • BENEFITS_FROM: Tool benefits from using another tool

Returns: { "tool": "n8n-workflow-builder", "dependencies": [ { "name": "n8n-node-templates", "type": "Skill", "relation": "BENEFITS_FROM" } ], "totalCount": 4 }

Use this tool when you know a primary tool and need to find related tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNoHow many levels of relationships to traverse
tool_nameYesName of the tool to expand (e.g., 'n8n-workflow-builder')
relation_typesNoFilter by relationship types (e.g., ['REQUIRES', 'WORKS_WITH'])
response_formatNoOutput formatjson

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint=true, destructiveHint=false), the description adds significant behavior context: traversal depth limits (default 2, max 4), relation types (REQUIRES, WORKS_WITH, etc.), example output, and explanation of how dependencies are returned. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections for arguments, relation types, returns, and usage tip. It is informative but slightly verbose; could be more concise by merging the argument list with the existing schema documentation. Still, every sentence adds useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description provides an example JSON response, lists all relation types, and explains the depth and filter parameters. For a tool with 4 parameters, this is sufficiently complete for an agent to understand inputs and outputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema description coverage is 100%, the description adds value by providing an example of tool_name ('n8n-workflow-builder'), explaining relation types, and showing the response format. This goes beyond the schema's basic property descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Expand a tool to find its dependencies via Knowledge Graph.' It uses a specific verb ('expand') and resource ('tool'), and distinguishes itself from sibling tools like toolhub_search, toolhub_health, and toolhub_cluster by focusing on dependency discovery.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear usage guideline: 'Use this tool when you know a primary tool and need to find related tools.' However, it does not explicitly mention when not to use it or directly compare with alternatives, such as using toolhub_search for broader search instead of dependency traversal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toolhub_healthHealth CheckA
Read-onlyIdempotent

Check Tool Hub service status.

Returns:

  • chromadb: Connection status to vector database

  • knowledgeGraph: Knowledge graph file status

  • toolCount: Number of registered tools

  • version: Server version

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, destructiveHint=false. The description adds value by detailing the return fields (chromadb, knowledgeGraph, toolCount, version), providing context on what the tool checks. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, consisting of a brief sentence and a bullet list of return fields. Every part is informative with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple health check tool with no parameters and no output schema, the description sufficiently explains the return structure. It could mention typical use or that it's a lightweight check, but overall it is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema coverage is 100%. The description does not need to add parameter meaning. A baseline score of 4 is appropriate for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks service status and lists the returned fields. The verb 'Check' with resource 'Tool Hub service status' is specific and distinguishes from siblings like search, expand, and cluster.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives. However, the purpose is clear and the tool has no parameters, making it suitable as a lightweight health check. No usage caveats or exclusions are mentioned.

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. Dates show when Glama detected each change.

  1. 4 tool updatesv1.0.0
    • First observedtoolhub_cluster
    • First observedtoolhub_expand
    • First observedtoolhub_health
    • First observedtoolhub_search

TDQS

A4.3/5.0
Disambiguation4/5

Each tool has a clear primary function: search, expand, health, and cluster. However, toolhub_cluster combines search and graph expansion, which might cause some confusion with using search and expand separately, but descriptions clarify the distinction.

Naming Consistency4/5

All tools share the 'toolhub_' prefix, providing consistency. However, the second part mixes verbs (search, expand) and nouns (health, cluster), which is a minor deviation from an ideal verb_noun pattern.

Tool Count5/5

Four tools is well-scoped for a tool discovery server. Each tool serves a distinct and necessary purpose without unnecessary bloat.

Completeness4/5

The tool set covers the core functions: searching, expanding dependencies, health checking, and full cluster retrieval. A minor gap is the lack of a direct tool for listing all registered tools or browsing categories, but search with broad queries may partially address this.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    An integration layer for AI agents that provides a catalog of tools from various sources (OpenAPI, GraphQL, MCP, etc.) and can be used as an MCP server for compatible agents.
    3,623
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    MCP server registry and marketplace that enables dynamic discovery, installation, and activation of tools at runtime, allowing AI agents to use new tools without restarting.
    126
    7
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Federating gateway for AI agents to discover and call tools from multiple MCP servers with intelligent search and dynamic tool registration.
    39
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Adriftnote/tool-box-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server