mirror of
https://github.com/anthropics/claude-code-action.git
synced 2026-01-23 06:54:13 +08:00
* Remove mcp_config input in favor of --mcp-config in claude_args
BREAKING CHANGE: The mcp_config input has been removed. Users should now use --mcp-config flag in claude_args instead.
This simplifies the action's input surface area and aligns better with the Claude Code CLI interface. Users can still add multiple MCP configurations by using multiple --mcp-config flags.
Migration:
- Before: mcp_config: '{"mcpServers": {...}}'
- After: claude_args: '--mcp-config {"mcpServers": {...}}'
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Add outer action MCP tests to workflow
- Add test-outer-action-inline-mcp job to test inline MCP config via claude_args
- Add test-outer-action-file-mcp job to test file-based MCP config via claude_args
- Keep base-action tests unchanged (they still use mcp_config parameter)
- Test that MCP tools are properly discovered and can be executed through the outer action
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Fix: Add Bun setup to outer action MCP test jobs
The test jobs for the outer action were failing because Bun wasn't installed.
Added Setup Bun step to both test-outer-action-inline-mcp and test-outer-action-file-mcp jobs.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Add id-token permission to outer action MCP test jobs
The outer action needs id-token: write permission for OIDC authentication
when using the GitHub App. Added full permissions block to both
test-outer-action-inline-mcp and test-outer-action-file-mcp jobs.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Use github_token parameter instead of id-token permission
Replace id-token: write permission with explicit github_token parameter
for both outer action MCP test jobs. This simplifies authentication by
using the provided GitHub token directly.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Use RUNNER_TEMP environment variable consistently
Changed from GitHub Actions expression syntax to environment variable
for consistency with the rest of the workflow file.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Use execution_file output from action instead of hardcoded path
Updated outer action test jobs to:
- Add step IDs (claude-inline-test, claude-file-test)
- Use the execution_file output from the action steps
- This is more reliable than hardcoding the output file path
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* tmp
* Fix MCP test assertions to match actual output format
Updated the test assertions to match the actual JSON structure:
- Tool calls are in assistant messages with type='tool_use'
- Tool results are in user messages with type='tool_result'
- The test tool returns 'Test tool response' not 'Hello from test tool'
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Make inline MCP test actually use the tool instead of just listing
Changed the inline MCP test to:
- Request that Claude uses the test tool (not just list it)
- Add --allowedTools to ensure the tool can be used
- Check that the tool was actually called and returned expected result
- Output the full JSON for debugging
This makes both tests (inline and file-based) consistent in their approach.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
109 lines
4.7 KiB
YAML
109 lines
4.7 KiB
YAML
name: Claude Issue Triage Example
|
|
description: Run Claude Code for issue triage in GitHub Actions
|
|
on:
|
|
issues:
|
|
types: [opened]
|
|
|
|
jobs:
|
|
triage-issue:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
permissions:
|
|
contents: read
|
|
issues: write
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Setup GitHub MCP Server
|
|
run: |
|
|
mkdir -p /tmp/mcp-config
|
|
cat > /tmp/mcp-config/mcp-servers.json << 'EOF'
|
|
{
|
|
"mcpServers": {
|
|
"github": {
|
|
"command": "docker",
|
|
"args": [
|
|
"run",
|
|
"-i",
|
|
"--rm",
|
|
"-e",
|
|
"GITHUB_PERSONAL_ACCESS_TOKEN",
|
|
"ghcr.io/github/github-mcp-server:sha-7aced2b"
|
|
],
|
|
"env": {
|
|
"GITHUB_PERSONAL_ACCESS_TOKEN": "${{ secrets.GITHUB_TOKEN }}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
EOF
|
|
|
|
- name: Create triage prompt
|
|
run: |
|
|
mkdir -p /tmp/claude-prompts
|
|
cat > /tmp/claude-prompts/triage-prompt.txt << 'EOF'
|
|
You're an issue triage assistant for GitHub issues. Your task is to analyze the issue and select appropriate labels from the provided list.
|
|
|
|
IMPORTANT: Don't post any comments or messages to the issue. Your only action should be to apply labels.
|
|
|
|
Issue Information:
|
|
- REPO: ${GITHUB_REPOSITORY}
|
|
- ISSUE_NUMBER: ${{ github.event.issue.number }}
|
|
|
|
TASK OVERVIEW:
|
|
|
|
1. First, fetch the list of labels available in this repository by running: `gh label list`. Run exactly this command with nothing else.
|
|
|
|
2. Next, use the GitHub tools to get context about the issue:
|
|
- You have access to these tools:
|
|
- mcp__github__get_issue: Use this to retrieve the current issue's details including title, description, and existing labels
|
|
- mcp__github__get_issue_comments: Use this to read any discussion or additional context provided in the comments
|
|
- mcp__github__update_issue: Use this to apply labels to the issue (do not use this for commenting)
|
|
- mcp__github__search_issues: Use this to find similar issues that might provide context for proper categorization and to identify potential duplicate issues
|
|
- mcp__github__list_issues: Use this to understand patterns in how other issues are labeled
|
|
- Start by using mcp__github__get_issue to get the issue details
|
|
|
|
3. Analyze the issue content, considering:
|
|
- The issue title and description
|
|
- The type of issue (bug report, feature request, question, etc.)
|
|
- Technical areas mentioned
|
|
- Severity or priority indicators
|
|
- User impact
|
|
- Components affected
|
|
|
|
4. Select appropriate labels from the available labels list provided above:
|
|
- Choose labels that accurately reflect the issue's nature
|
|
- Be specific but comprehensive
|
|
- Select priority labels if you can determine urgency (high-priority, med-priority, or low-priority)
|
|
- Consider platform labels (android, ios) if applicable
|
|
- If you find similar issues using mcp__github__search_issues, consider using a "duplicate" label if appropriate. Only do so if the issue is a duplicate of another OPEN issue.
|
|
|
|
5. Apply the selected labels:
|
|
- Use mcp__github__update_issue to apply your selected labels
|
|
- DO NOT post any comments explaining your decision
|
|
- DO NOT communicate directly with users
|
|
- If no labels are clearly applicable, do not apply any labels
|
|
|
|
IMPORTANT GUIDELINES:
|
|
- Be thorough in your analysis
|
|
- Only select labels from the provided list above
|
|
- DO NOT post any comments to the issue
|
|
- Your ONLY action should be to apply labels using mcp__github__update_issue
|
|
- It's okay to not add any labels if none are clearly applicable
|
|
EOF
|
|
env:
|
|
GITHUB_REPOSITORY: ${{ github.repository }}
|
|
|
|
- name: Run Claude Code for Issue Triage
|
|
uses: anthropics/claude-code-base-action@beta
|
|
with:
|
|
prompt_file: /tmp/claude-prompts/triage-prompt.txt
|
|
allowed_tools: "Bash(gh label list),mcp__github__get_issue,mcp__github__get_issue_comments,mcp__github__update_issue,mcp__github__search_issues,mcp__github__list_issues"
|
|
claude_args: |
|
|
--mcp-config /tmp/mcp-config/mcp-servers.json
|
|
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|