mirror of
https://github.com/anthropics/claude-code.git
synced 2025-11-28 16:50:27 +08:00
Adds the plugin-dev plugin to public marketplace. A comprehensive toolkit for
developing Claude Code plugins with 7 expert skills, 3 AI-assisted agents, and
extensive documentation covering the complete plugin development lifecycle.
Key features:
- 7 skills: hook-development, mcp-integration, plugin-structure, plugin-settings,
command-development, agent-development, skill-development
- 3 agents: agent-creator (AI-assisted generation), plugin-validator (structure
validation), skill-reviewer (quality review)
- 1 command: /plugin-dev:create-plugin (guided 8-phase workflow)
- 10 utility scripts for validation and testing
- 21 reference docs with deep-dive guidance (~11k words)
- 9 working examples demonstrating best practices
Changes for public release:
- Replaced all references to internal repositories with "Claude Code"
- Updated MCP examples: internal.company.com → api.example.com
- Updated token variables: ${INTERNAL_TOKEN} → ${API_TOKEN}
- Reframed agent-creation-system-prompt as "proven in production"
- Preserved all ${CLAUDE_PLUGIN_ROOT} references (186 total)
- Preserved valuable test blocks in core modules
Validation:
- All 3 agents validated successfully with validate-agent.sh
- All JSON files validated with jq
- Zero internal references remaining
- 59 files migrated, 21,971 lines added
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
538 lines
11 KiB
Markdown
538 lines
11 KiB
Markdown
# 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.
|