|
Download plugins/plugin-dev/skills/mcp-integration/references/tool-usage.md from SaylorTwift/claude-code: direct link, hf CLI and curl.
- Browser
- Download file 11.7 kB
-
https://huggingface.co/SaylorTwift/claude-code/resolve/main/plugins/plugin-dev/skills/mcp-integration/references/tool-usage.md
- Command line
-
hf download hf://SaylorTwift/claude-code/plugins/plugin-dev/skills/mcp-integration/references/tool-usage.md
-
curl -L -o tool-usage.md https://huggingface.co/SaylorTwift/claude-code/resolve/main/plugins/plugin-dev/skills/mcp-integration/references/tool-usage.md
11.7 kB
| # Using MCP Tools in Commands and Agents | |
| Complete guide to using MCP tools effectively in Claude Code plugin commands and agents. | |
| ## Overview | |
| Once an MCP server is configured, its tools become available with the prefix `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`. Use these tools in commands and agents just like built-in Claude Code tools. | |
| ## Tool Naming Convention | |
| ### Format | |
| ``` | |
| mcp__plugin_<plugin-name>_<server-name>__<tool-name> | |
| ``` | |
| ### Examples | |
| **Asana plugin with asana server:** | |
| - `mcp__plugin_asana_asana__asana_create_task` | |
| - `mcp__plugin_asana_asana__asana_search_tasks` | |
| - `mcp__plugin_asana_asana__asana_get_project` | |
| **Custom plugin with database server:** | |
| - `mcp__plugin_myplug_database__query` | |
| - `mcp__plugin_myplug_database__execute` | |
| - `mcp__plugin_myplug_database__list_tables` | |
| ### Discovering Tool Names | |
| **Use `/mcp` command:** | |
| ```bash | |
| /mcp | |
| ``` | |
| This shows: | |
| - All available MCP servers | |
| - Tools provided by each server | |
| - Tool schemas and descriptions | |
| - Full tool names for use in configuration | |
| ## Using Tools in Commands | |
| ### Pre-Allowing Tools | |
| Specify MCP tools in command frontmatter: | |
| ```markdown | |
| --- | |
| description: Create a new Asana task | |
| allowed-tools: [ | |
| "mcp__plugin_asana_asana__asana_create_task" | |
| ] | |
| --- | |
| # Create Task Command | |
| To create a task: | |
| 1. Gather task details from user | |
| 2. Use mcp__plugin_asana_asana__asana_create_task with the details | |
| 3. Confirm creation to user | |
| ``` | |
| ### Multiple Tools | |
| ```markdown | |
| --- | |
| allowed-tools: [ | |
| "mcp__plugin_asana_asana__asana_create_task", | |
| "mcp__plugin_asana_asana__asana_search_tasks", | |
| "mcp__plugin_asana_asana__asana_get_project" | |
| ] | |
| --- | |
| ``` | |
| ### Wildcard (Use Sparingly) | |
| ```markdown | |
| --- | |
| allowed-tools: ["mcp__plugin_asana_asana__*"] | |
| --- | |
| ``` | |
| **Caution:** Only use wildcards if the command truly needs access to all tools from a server. | |
| ### Tool Usage in Command Instructions | |
| **Example command:** | |
| ```markdown | |
| --- | |
| description: Search and create Asana tasks | |
| allowed-tools: [ | |
| "mcp__plugin_asana_asana__asana_search_tasks", | |
| "mcp__plugin_asana_asana__asana_create_task" | |
| ] | |
| --- | |
| # Asana Task Management | |
| ## Searching Tasks | |
| To search for tasks: | |
| 1. Use mcp__plugin_asana_asana__asana_search_tasks | |
| 2. Provide search filters (assignee, project, etc.) | |
| 3. Display results to user | |
| ## Creating Tasks | |
| To create a task: | |
| 1. Gather task details: | |
| - Title (required) | |
| - Description | |
| - Project | |
| - Assignee | |
| - Due date | |
| 2. Use mcp__plugin_asana_asana__asana_create_task | |
| 3. Show confirmation with task link | |
| ``` | |
| ## Using Tools in Agents | |
| ### Agent Configuration | |
| Agents can use MCP tools autonomously without pre-allowing them: | |
| ```markdown | |
| --- | |
| name: asana-status-updater | |
| description: This agent should be used when the user asks to "update Asana status", "generate project report", or "sync Asana tasks" | |
| model: inherit | |
| color: blue | |
| --- | |
| ## Role | |
| Autonomous agent for generating Asana project status reports. | |
| ## Process | |
| 1. **Query tasks**: Use mcp__plugin_asana_asana__asana_search_tasks to get all tasks | |
| 2. **Analyze progress**: Calculate completion rates and identify blockers | |
| 3. **Generate report**: Create formatted status update | |
| 4. **Update Asana**: Use mcp__plugin_asana_asana__asana_create_comment to post report | |
| ## Available Tools | |
| The agent has access to all Asana MCP tools without pre-approval. | |
| ``` | |
| ### Agent Tool Access | |
| Agents have broader tool access than commands: | |
| - Can use any tool Claude determines is necessary | |
| - Don't need pre-allowed lists | |
| - Should document which tools they typically use | |
| ## Tool Call Patterns | |
| ### Pattern 1: Simple Tool Call | |
| Single tool call with validation: | |
| ```markdown | |
| Steps: | |
| 1. Validate user provided required fields | |
| 2. Call mcp__plugin_api_server__create_item with validated data | |
| 3. Check for errors | |
| 4. Display confirmation | |
| ``` | |
| ### Pattern 2: Sequential Tools | |
| Chain multiple tool calls: | |
| ```markdown | |
| Steps: | |
| 1. Search for existing items: mcp__plugin_api_server__search | |
| 2. If not found, create new: mcp__plugin_api_server__create | |
| 3. Add metadata: mcp__plugin_api_server__update_metadata | |
| 4. Return final item ID | |
| ``` | |
| ### Pattern 3: Batch Operations | |
| Multiple calls with same tool: | |
| ```markdown | |
| Steps: | |
| 1. Get list of items to process | |
| 2. For each item: | |
| - Call mcp__plugin_api_server__update_item | |
| - Track success/failure | |
| 3. Report results summary | |
| ``` | |
| ### Pattern 4: Error Handling | |
| Graceful error handling: | |
| ```markdown | |
| Steps: | |
| 1. Try to call mcp__plugin_api_server__get_data | |
| 2. If error (rate limit, network, etc.): | |
| - Wait and retry (max 3 attempts) | |
| - If still failing, inform user | |
| - Suggest checking configuration | |
| 3. On success, process data | |
| ``` | |
| ## Tool Parameters | |
| ### Understanding Tool Schemas | |
| Each MCP tool has a schema defining its parameters. View with `/mcp`. | |
| **Example schema:** | |
| ```json | |
| { | |
| "name": "asana_create_task", | |
| "description": "Create a new Asana task", | |
| "inputSchema": { | |
| "type": "object", | |
| "properties": { | |
| "name": { | |
| "type": "string", | |
| "description": "Task title" | |
| }, | |
| "notes": { | |
| "type": "string", | |
| "description": "Task description" | |
| }, | |
| "workspace": { | |
| "type": "string", | |
| "description": "Workspace GID" | |
| } | |
| }, | |
| "required": ["name", "workspace"] | |
| } | |
| } | |
| ``` | |
| ### Calling Tools with Parameters | |
| Claude automatically structures tool calls based on schema: | |
| ```typescript | |
| // Claude generates this internally | |
| { | |
| toolName: "mcp__plugin_asana_asana__asana_create_task", | |
| input: { | |
| name: "Review PR #123", | |
| notes: "Code review for new feature", | |
| workspace: "12345", | |
| assignee: "67890", | |
| due_on: "2025-01-15" | |
| } | |
| } | |
| ``` | |
| ### Parameter Validation | |
| **In commands, validate before calling:** | |
| ```markdown | |
| Steps: | |
| 1. Check required parameters: | |
| - Title is not empty | |
| - Workspace ID is provided | |
| - Due date is valid format (YYYY-MM-DD) | |
| 2. If validation fails, ask user to provide missing data | |
| 3. If validation passes, call MCP tool | |
| 4. Handle tool errors gracefully | |
| ``` | |
| ## Response Handling | |
| ### Success Responses | |
| ```markdown | |
| Steps: | |
| 1. Call MCP tool | |
| 2. On success: | |
| - Extract relevant data from response | |
| - Format for user display | |
| - Provide confirmation message | |
| - Include relevant links or IDs | |
| ``` | |
| ### Error Responses | |
| ```markdown | |
| Steps: | |
| 1. Call MCP tool | |
| 2. On error: | |
| - Check error type (auth, rate limit, validation, etc.) | |
| - Provide helpful error message | |
| - Suggest remediation steps | |
| - Don't expose internal error details to user | |
| ``` | |
| ### Partial Success | |
| ```markdown | |
| Steps: | |
| 1. Batch operation with multiple MCP calls | |
| 2. Track successes and failures separately | |
| 3. Report summary: | |
| - "Successfully processed 8 of 10 items" | |
| - "Failed items: [item1, item2] due to [reason]" | |
| - Suggest retry or manual intervention | |
| ``` | |
| ## Performance Optimization | |
| ### Batching Requests | |
| **Good: Single query with filters** | |
| ```markdown | |
| Steps: | |
| 1. Call mcp__plugin_api_server__search with filters: | |
| - project_id: "123" | |
| - status: "active" | |
| - limit: 100 | |
| 2. Process all results | |
| ``` | |
| **Avoid: Many individual queries** | |
| ```markdown | |
| Steps: | |
| 1. For each item ID: | |
| - Call mcp__plugin_api_server__get_item | |
| - Process item | |
| ``` | |
| ### Caching Results | |
| ```markdown | |
| Steps: | |
| 1. Call expensive MCP operation: mcp__plugin_api_server__analyze | |
| 2. Store results in variable for reuse | |
| 3. Use cached results for subsequent operations | |
| 4. Only re-fetch if data changes | |
| ``` | |
| ### Parallel Tool Calls | |
| When tools don't depend on each other, call in parallel: | |
| ```markdown | |
| Steps: | |
| 1. Make parallel calls (Claude handles this automatically): | |
| - mcp__plugin_api_server__get_project | |
| - mcp__plugin_api_server__get_users | |
| - mcp__plugin_api_server__get_tags | |
| 2. Wait for all to complete | |
| 3. Combine results | |
| ``` | |
| ## Integration Best Practices | |
| ### User Experience | |
| **Provide feedback:** | |
| ```markdown | |
| Steps: | |
| 1. Inform user: "Searching Asana tasks..." | |
| 2. Call mcp__plugin_asana_asana__asana_search_tasks | |
| 3. Show progress: "Found 15 tasks, analyzing..." | |
| 4. Present results | |
| ``` | |
| **Handle long operations:** | |
| ```markdown | |
| Steps: | |
| 1. Warn user: "This may take a minute..." | |
| 2. Break into smaller steps with updates | |
| 3. Show incremental progress | |
| 4. Final summary when complete | |
| ``` | |
| ### Error Messages | |
| **Good error messages:** | |
| ``` | |
| ❌ "Could not create task. Please check: | |
| 1. You're logged into Asana | |
| 2. You have access to workspace 'Engineering' | |
| 3. The project 'Q1 Goals' exists" | |
| ``` | |
| **Poor error messages:** | |
| ``` | |
| ❌ "Error: MCP tool returned 403" | |
| ``` | |
| ### Documentation | |
| **Document MCP tool usage in command:** | |
| ```markdown | |
| ## MCP Tools Used | |
| This command uses the following Asana MCP tools: | |
| - **asana_search_tasks**: Search for tasks matching criteria | |
| - **asana_create_task**: Create new task with details | |
| - **asana_update_task**: Update existing task properties | |
| Ensure you're authenticated to Asana before running this command. | |
| ``` | |
| ## Testing Tool Usage | |
| ### Local Testing | |
| 1. **Configure MCP server** in `.mcp.json` | |
| 2. **Install plugin locally** in `.claude-plugin/` | |
| 3. **Verify tools available** with `/mcp` | |
| 4. **Test command** that uses tools | |
| 5. **Check debug output**: `claude --debug` | |
| ### Test Scenarios | |
| **Test successful calls:** | |
| ```markdown | |
| Steps: | |
| 1. Create test data in external service | |
| 2. Run command that queries this data | |
| 3. Verify correct results returned | |
| ``` | |
| **Test error cases:** | |
| ```markdown | |
| Steps: | |
| 1. Test with missing authentication | |
| 2. Test with invalid parameters | |
| 3. Test with non-existent resources | |
| 4. Verify graceful error handling | |
| ``` | |
| **Test edge cases:** | |
| ```markdown | |
| Steps: | |
| 1. Test with empty results | |
| 2. Test with maximum results | |
| 3. Test with special characters | |
| 4. Test with concurrent access | |
| ``` | |
| ## Common Patterns | |
| ### Pattern: CRUD Operations | |
| ```markdown | |
| --- | |
| allowed-tools: [ | |
| "mcp__plugin_api_server__create_item", | |
| "mcp__plugin_api_server__read_item", | |
| "mcp__plugin_api_server__update_item", | |
| "mcp__plugin_api_server__delete_item" | |
| ] | |
| --- | |
| # Item Management | |
| ## Create | |
| Use create_item with required fields... | |
| ## Read | |
| Use read_item with item ID... | |
| ## Update | |
| Use update_item with item ID and changes... | |
| ## Delete | |
| Use delete_item with item ID (ask for confirmation first)... | |
| ``` | |
| ### Pattern: Search and Process | |
| ```markdown | |
| Steps: | |
| 1. **Search**: mcp__plugin_api_server__search with filters | |
| 2. **Filter**: Apply additional local filtering if needed | |
| 3. **Transform**: Process each result | |
| 4. **Present**: Format and display to user | |
| ``` | |
| ### Pattern: Multi-Step Workflow | |
| ```markdown | |
| Steps: | |
| 1. **Setup**: Gather all required information | |
| 2. **Validate**: Check data completeness | |
| 3. **Execute**: Chain of MCP tool calls: | |
| - Create parent resource | |
| - Create child resources | |
| - Link resources together | |
| - Add metadata | |
| 4. **Verify**: Confirm all steps succeeded | |
| 5. **Report**: Provide summary to user | |
| ``` | |
| ## Troubleshooting | |
| ### Tools Not Available | |
| **Check:** | |
| - MCP server configured correctly | |
| - Server connected (check `/mcp`) | |
| - Tool names match exactly (case-sensitive) | |
| - Restart Claude Code after config changes | |
| ### Tool Calls Failing | |
| **Check:** | |
| - Authentication is valid | |
| - Parameters match tool schema | |
| - Required parameters provided | |
| - Check `claude --debug` logs | |
| ### Performance Issues | |
| **Check:** | |
| - Batching queries instead of individual calls | |
| - Caching results when appropriate | |
| - Not making unnecessary tool calls | |
| - Parallel calls when possible | |
| ## Conclusion | |
| Effective MCP tool usage requires: | |
| 1. **Understanding tool schemas** via `/mcp` | |
| 2. **Pre-allowing tools** in commands appropriately | |
| 3. **Handling errors gracefully** | |
| 4. **Optimizing performance** with batching and caching | |
| 5. **Providing good UX** with feedback and clear errors | |
| 6. **Testing thoroughly** before deployment | |
| Follow these patterns for robust MCP tool integration in your plugin commands and agents. | |