Skip to content
Conduit

mcp server

claude-code-available-tools

Your Claude Code setup is powerful, but hard to see at a glance. This tool fixes that. A fast, interactive TUI that scans your global and project configurations, showing every slash command, subagent,

AndreaBonn/claude-code-available-toolscommunitylistedunreviewednot running here yet

Set up

Runs on your computer. Pick your agent and operating system.

Before you start

  • uv (`curl -LsSf https://astral.sh/uv/install.sh | sh`)
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "claude-code-available-tools": {
      "command": "uvx",
      "args": [
        "cctools"
      ]
    }
  }
}

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Oct 14, 2026

English | Italiano

Claude Code Available Tools by Bonn

Interactive explorer for Claude Code tools and configuration. Scans and displays slash commands, subagents, skills, MCP servers, hooks, and environment variables from both global (~/.claude/) and project-level (.claude/) configurations.

CI Tests Coverage Ruff License Security Policy

Features

  • Three display modes: full-screen TUI (Textual), inline text report (Rich), and external terminal window
  • Scans global and project-level Claude Code configurations
  • Visual scope indicators: green for global, yellow for project resources
  • Live filtering and auto-refresh (3s interval) in TUI mode
  • Minimal YAML frontmatter parser with no external YAML dependency
  • Cross-platform: Linux, macOS, Windows
  • Integrates as /tools slash command inside Claude Code sessions
Slash CommandsSubagents
SkillsMCP Servers

Architecture

%%{init: {'theme': 'default'}}%%
graph LR
    classDef core fill:#2563eb,stroke:#1d4ed8,color:#fff
    classDef engine fill:#059669,stroke:#047857,color:#fff
    classDef data fill:#d97706,stroke:#b45309,color:#fff
    classDef ext fill:#6b7280,stroke:#4b5563,color:#fff

    cli["cli.py<br/>Entry Point"]:::core

    subgraph display["Display Backends"]
        direction TB
        tui["tui.py<br/>Textual TUI"]:::core
        inline_mod["inline.py<br/>Rich Report"]:::core
    end

    terminal["terminal.py<br/>Terminal Detection"]:::ext
    ext_term(["External Terminal"]):::ext

    scanner["scanner.py<br/>Discovery Engine"]:::engine

    subgraph config["Configuration Sources"]
        direction TB
        global_cfg["~/.claude/<br/>Global Config"]:::data
        project_cfg[".claude/<br/>Project Config"]:::data
    end

    cli --> tui
    cli --> inline_mod
    cli --> terminal
    terminal -.-> ext_term

    tui --> scanner
    inline_mod --> scanner

    scanner --> global_cfg
    scanner --> project_cfg

For detailed diagrams (scanner discovery, CLI dispatch, CI pipeline) see Architecture docs.

Installation

Requires Python 3.10+ and one of: pipx, uv, or pip.

# Clone the repository
git clone https://github.com/AndreaBonn/claude-code-available-tools.git
cd claude-code-available-tools

# Run the universal installer (auto-detects OS)
./install.sh

# Or use platform-specific installers
./installers/install_linux.sh       # Linux
./installers/install_macos.sh       # macOS
.\install.bat                       # Windows

The installer does four things:

  1. Checks for Python 3.10+
  2. Installs the cctools package (via pipx, uv, or pip)
  3. Copies the /tools slash command to ~/.claude/commands/tools.md
  4. Runs a smoke test

Manual installation:

pip install .
# or
pipx install .
# or
uv tool install .

Platform support

OSTUIInlineExternalInstaller
LinuxYesYesgnome-terminal, konsole, xfce4-terminal, xterminstall_linux.sh
macOSYesYesTerminal.app via osascriptinstall_macos.sh
WindowsYesYesNot availableinstall_windows.ps1

Usage

# Auto mode (TUI if terminal >= 80 columns, otherwise inline)
cctools

# Explicit modes
cctools --mode tui
cctools --mode inline
cctools --mode external

# Filter resources by name or description
cctools --mode inline --filter mcp

From within a Claude Code session:

/tools                  # Opens TUI in external terminal
/tools inline           # Prints report in chat
/tools tui              # Opens TUI in current terminal
/tools inline mcp       # Filtered inline report

TUI keybindings

KeyAction
/Open filter bar
EscapeClose filter, clear filter text
rManual refresh
qQuit

Configuration

cctools reads existing Claude Code configuration files. No additional configuration is required.

The only optional environment variable is CLAUDE_CONFIG_DIR, which overrides the default ~/.claude/ config directory. The scanner also detects CLAUDE_* and ANTHROPIC_* variables from the shell environment.

Custom hook descriptions

Claude Code hooks don't natively include a display description. You can add an optional description field to any hook definition, and cctools will use it as the display text instead of the raw command:

{
  "hooks": {
    "PreToolUse": [{
      "matcher": "Bash",
      "hooks": [{
        "type": "command",
        "command": "./scripts/validate.sh",
        "description": "Validate input before Bash execution"
      }]
    }]
  }
}

Without description, cctools shows [command] ./scripts/validate.sh. With it, the human-readable text is displayed instead.

Custom MCP server descriptions

Similarly, MCP server entries don't include a display description. You can add an optional description field to any server definition:

{
  "mcpServers": {
    "my-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["@mcp/my-server"],
      "description": "Project knowledge base and search"
    }
  }
}

Without description, cctools shows [stdio] npx @mcp/my-server. With it, the human-readable text is displayed instead. Claude Code ignores unknown fields, so this does not affect MCP functionality.

Testing

uv sync --dev
uv run pytest tests/ -v --cov=cctools
uv run ruff check src/ tests/
uv run ruff format src/ tests/

Contributing

Contributions are welcome via pull request. Before submitting:

  1. Run tests and ensure they pass
  2. Run ruff check and ruff format
  3. Run mypy for type checking
  4. Keep commits focused and descriptive

Security

For vulnerability reports, see the security policy.

License

Released under the Apache License 2.0 -- see LICENSE.

Author

Andrea Bonacci -- @AndreaBonn

Support the project

Claude Code Available Tools is free to use. If it helps you and you want to give something back, you can leave a tip via PayPal. The amount is up to you and it is entirely optional.

Donate with PayPal


If this project is useful to you, a star on GitHub is appreciated.

↑↓ navigate openesc close