Skip to content
Back to skills

Tools

ASecurity

Manage MCP tools with natural language commands to list, enable, and disable tools and tool groups

  • 223 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 19, 2026
development

Works with

  • cli
  • mcp

Security analysis

A100/100

Scanned September 19, 2026

npx -y skills add first-fluke/fullstack-starter --skill tools --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Tools?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Tools
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/first-fluke-tools-5a092a7a/badge)](https://www.skillsdirectory.com/skills/first-fluke-tools-5a092a7a)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: tools
description: Manage MCP tools with natural language commands to list, enable, and disable tools and tool groups
disable-model-invocation: true
---

- **Response language follows `language` setting in `.agents/oma-config.yaml` if configured.**
- Follow `.agents/skills/_shared/core/execution-policy.md` for authorization, clarification, verification, and completion. Execute required steps on the selected path in dependency order; apply documented branch and skip conditions.
- **Read configuration files BEFORE making changes.**

---

> **Vendor note:** This workflow executes inline (no subagent spawning). All vendors use their native file reading tools to inspect MCP and skill configurations.

---

## Step 1: Parse User Command

Parse the request once. With no arguments, treat `/tools` as a status query:

| Command Pattern | Interpretation |
|-----------------|----------------|
| No arguments, "current status", "list", "show" | Query: display status in Step 2, then end |
| "memory tools only", "enable only {group}" | Set only that group's tools in `available_tools` |
| "disable {tool}", "turn off {tool}" | Remove that tool from `available_tools` |
| "enable all", "turn on all", "reset" | Set `available_tools: null` |
| "enable only {tool1}, {tool2}" | Set only specified tools in `available_tools` |

**Group combination support:**
- "memory + file tools" → Merge `memory` + `file-ops` groups
- "all except code analysis" → Exclude `code-analysis` from `all`

---

## Step 2: Read Configuration & Route

1. Read `.agents/mcp.json` (project configuration)
2. Read `~/.gemini/settings.json` if exists (Gemini CLI global settings); optional
3. Resolve the target server, tools, and groups from the parsed request. Handle the conditional input cases below before any update.
4. For a query, display status for each requested MCP server:
   - `available_tools: null` → "All enabled (no restrictions)"
   - `available_tools: [...]` → "N tools enabled" + list
5. For a query, display available groups if `toolGroups` is defined, then end the workflow. For a change request, proceed to Step 3 without printing a separate status report.

**Output example:**
```
Current MCP Tool Status

[serena]
- Status: All enabled (no restrictions)
- Available tools: 15

Available Tool Groups:
- memory: read_memory, write_memory, edit_memory, list_memories, delete_memory
- code-analysis: get_symbols_overview, find_symbol, find_referencing_symbols, search_for_pattern
- code-edit: replace_symbol_body, insert_after_symbol, insert_before_symbol, rename_symbol
- file-ops: list_dir, find_file
- all: All tools (no restrictions)
```

---

## Step 3: Update Configuration

1. **Show before/after diff:**
   ```
   Pending mcp.json changes:

   Before:
   - serena.available_tools: null (all)

   After:
   - serena.available_tools: ["read_memory", "write_memory", "edit_memory", "list_memories", "delete_memory"]
   ```

2. Apply the execution policy: reuse an explicit tool-change request; ask only if the target or intended restriction is unresolved. If the proposed configuration is unchanged, report that and end. Otherwise modify `.agents/mcp.json` and read back the affected values to verify the update.

3. **Completion message:**
   ```
   Done! serena can now only use memory tools.

   Note: Changes will fully apply after IDE/CLI restart.
   Previous settings may continue to apply in current session.
   ```

---

## Conditional Input Handling (before updates)

### Unknown Tool Name
```
'{tool_name}' is an unknown tool.

Similar tools:
- read_memory
- write_memory

Please enter the exact tool name.
```

### Server Conflict
When multiple MCP servers are configured and the request does not identify the target:
```
Multiple MCP servers detected:
- serena
- custom-memory

Which server's tools would you like to modify?
1. serena
2. custom-memory
3. All
```

### Empty Tool List
If disabling all tools was explicitly requested, apply that request. Otherwise explain the empty-list consequence and clarify before writing:
```
Setting available_tools to an empty array will disable all tools for that server.
Are you sure you want to continue? (Y/N)
```

---

## Quick Reference

| Command | Result |
|---------|--------|
| `/tools` | Show current status |
| `/tools memory only` | Enable only memory tools |
| `/tools code analysis + memory` | Enable both groups |
| `/tools all` | Enable all tools (reset) |
| `/tools read_memory, write_memory only` | Enable only specified tools |
| `/tools disable code edit` | Remove that group |

---

**Note:** If IDE/CLI doesn't directly support `available_tools`,
tool usage must be self-restricted at the workflow level.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…