Skip to main content

MCI Toolsets

Toolsets are collections of tools organized into reusable, shareable files. They provide a way to structure tools by domain, share them across projects, and apply filtering to control which tools are loaded in main mci.json file.

What are Toolsets?

A toolset is a separate MCI schema file that contains a collection of related tools. Unlike main entry files, toolsets:
  • Are stored in a library directory (default: ./mci)
  • Contain only tool definitions (no top-level configuration)
  • Can be shared across multiple projects
  • Support schema-level filtering when loaded

Toolsets vs Main Schema Files

Main Entry File (mci.json)

Can contain:
  • schemaVersion (required)
  • metadata (optional)
  • tools (optional)
  • toolsets (optional)
  • mcp_servers (optional)
  • libraryDir (optional)
  • directoryAllowList (optional)
  • enableAnyPaths (optional)

Toolset File (./mci/weather.mci.json)

Can contain:
  • schemaVersion (required)
  • metadata (optional - for documentation only)
  • tools (required)
Cannot contain:
  • toolsets
  • mcp_servers
  • libraryDir
  • directoryAllowList
  • enableAnyPaths
Key Differences:

Creating Toolsets

Basic Toolset

Create a file in your toolsets directory: ./mci/github.mci.json:

Domain-Organized Toolsets

Organize toolsets by domain or purpose: ./mci/database.mci.json:

Loading Toolsets

Toolsets are loaded in the main schema file using the toolsets field.

Basic Loading

With Custom Library Directory

Toolset Resolving

MCI resolves toolset names using a flexible system that supports both files and directories.

Resolution Order

When you reference a toolset by name (e.g., "weather"), MCI looks for it in this order:
  1. Directory: {libraryDir}/weather/ - If found, loads all .mci.json files in the directory
  2. Direct File: {libraryDir}/weather
  3. With Extension: {libraryDir}/weather.mci.json
  4. YAML Files: Also checks .mci.yaml and .mci.yml, when extension not specified

File-Based Toolset

Reference:
Resolves to: ./mci/weather.mci.json

Directory-Based Toolset

You can Reference:
Resolves to: All .mci.json files in ./mci/github/ And in some main files, reference only issues:

Nested Directories

Reference:

Multiple Files in Directory

When loading from a directory, all .mci.json files are loaded: ./mci/monitoring/status.mci.json:
./mci/monitoring/metrics.mci.json:
Loading:
Result: Both check_health and get_metrics tools are loaded. Important Notes:
  • Only tools are merged from directory toolsets
  • Metadata is NOT merged (used for documentation only)
  • All files must use the same schemaVersion
  • Schema version mismatch will raise an error

Schema-Level Filtering

Apply filters when loading toolsets to control which tools are registered.

Filter Types

Examples

Include Only Specific Tools:
Result: Only get_weather and get_forecast tools are loaded from the weather toolset. Exclude Dangerous Tools:
Result: All database tools except the excluded ones are loaded. Filter by Tags (Include):
Result: Only tools tagged with "read" or "search" are loaded. Filter by Tags (Exclude):
Result: All tools except those tagged with "write", "delete", or "admin" are loaded.

Combining Multiple Toolsets with Different Filters

Sharing Toolsets

Toolsets are designed to be shared across projects and teams.

Sharing Within Organization

Project Structure:
Using Symlinks:

Sharing via Git Submodules

Sharing via Package Manager

npm Example:
In your schema:

Best Practices

1. Organize by Domain

2. Use Tags for Categorization

Then filter by tags:

3. Document Toolsets

4. Version Toolsets

Use semantic versioning in metadata:

5. Keep Toolsets Focused

Each toolset should focus on a single domain: ✓ Good:
  • github.mci.json - GitHub API tools
  • slack.mci.json - Slack API tools
  • monitoring.mci.json - Monitoring tools
✗ Avoid:
  • misc.mci.json - Mixed unrelated tools
  • everything.mci.json - Too broad

Summary

  • Toolsets organize tools into reusable collections
  • Main Schema Files configure applications and reference toolsets
  • Toolset Files contain only tool definitions
  • Resolving supports both files and directories
  • Filtering controls which tools are loaded from toolsets
  • Sharing enables reuse across projects and teams
Toolsets make it easy to organize, maintain, and share tools across your organization.