mirror of
https://github.com/markwylde/claude-code-gitea-action.git
synced 2026-06-21 22:50:33 +08:00
fix: align workflows with Claude Code 2.1 MCP behavior
This commit is contained in:
1
.github/workflows/claude-review.yml
vendored
1
.github/workflows/claude-review.yml
vendored
@@ -22,6 +22,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||||
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
||||||
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
prompt: "/review-pr REPO: ${{ github.repository }} PR_NUMBER: ${{ github.event.pull_request.number }}"
|
prompt: "/review-pr REPO: ${{ github.repository }} PR_NUMBER: ${{ github.event.pull_request.number }}"
|
||||||
claude_args: |
|
claude_args: |
|
||||||
|
|||||||
1
.github/workflows/claude.yml
vendored
1
.github/workflows/claude.yml
vendored
@@ -35,6 +35,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||||
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
||||||
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
claude_args: |
|
claude_args: |
|
||||||
--allowedTools "Bash(bun install),Bash(bun test:*),Bash(bun run format),Bash(bun typecheck)"
|
--allowedTools "Bash(bun install),Bash(bun test:*),Bash(bun run format),Bash(bun typecheck)"
|
||||||
--model "claude-opus-4-1-20250805"
|
--model "claude-opus-4-1-20250805"
|
||||||
|
|||||||
65
.github/workflows/test-mcp-servers.yml
vendored
65
.github/workflows/test-mcp-servers.yml
vendored
@@ -27,9 +27,10 @@ jobs:
|
|||||||
uses: ./base-action
|
uses: ./base-action
|
||||||
id: claude-test
|
id: claude-test
|
||||||
with:
|
with:
|
||||||
prompt: "List all available tools"
|
prompt: "Call the test_tool tool and report its response."
|
||||||
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||||
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
||||||
|
claude_args: --allowedTools mcp__test-server__test_tool
|
||||||
env:
|
env:
|
||||||
# Change to test directory so it finds .mcp.json
|
# Change to test directory so it finds .mcp.json
|
||||||
CLAUDE_WORKING_DIR: ${{ github.workspace }}/base-action/test/mcp-test
|
CLAUDE_WORKING_DIR: ${{ github.workspace }}/base-action/test/mcp-test
|
||||||
@@ -53,21 +54,29 @@ jobs:
|
|||||||
if jq -e '.[] | select(.type == "system" and .subtype == "init") | .mcp_servers' "$OUTPUT_FILE" > /dev/null; then
|
if jq -e '.[] | select(.type == "system" and .subtype == "init") | .mcp_servers' "$OUTPUT_FILE" > /dev/null; then
|
||||||
echo "✓ Found mcp_servers in output"
|
echo "✓ Found mcp_servers in output"
|
||||||
|
|
||||||
# Check if test-server is connected
|
# MCP servers can connect asynchronously, so the init event may
|
||||||
if jq -e '.[] | select(.type == "system" and .subtype == "init") | .mcp_servers[] | select(.name == "test-server" and .status == "connected")' "$OUTPUT_FILE" > /dev/null; then
|
# report the server as pending. Check registration there, then
|
||||||
echo "✓ test-server is connected"
|
# verify the tool actually ran.
|
||||||
|
if jq -e '.[] | select(.type == "system" and .subtype == "init") | .mcp_servers[] | select(.name == "test-server")' "$OUTPUT_FILE" > /dev/null; then
|
||||||
|
echo "✓ test-server is registered"
|
||||||
else
|
else
|
||||||
echo "✗ test-server not found or not connected"
|
echo "✗ test-server not found"
|
||||||
jq '.[] | select(.type == "system" and .subtype == "init") | .mcp_servers' "$OUTPUT_FILE"
|
jq '.[] | select(.type == "system" and .subtype == "init") | .mcp_servers' "$OUTPUT_FILE"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if mcp tools are available
|
if jq -e '.[] | select(.type == "assistant") | .message.content[]? | select(.type == "tool_use" and .name == "mcp__test-server__test_tool")' "$OUTPUT_FILE" > /dev/null; then
|
||||||
if jq -e '.[] | select(.type == "system" and .subtype == "init") | .tools[] | select(. == "mcp__test-server__test_tool")' "$OUTPUT_FILE" > /dev/null; then
|
echo "✓ MCP test tool was called"
|
||||||
echo "✓ MCP test tool found"
|
|
||||||
else
|
else
|
||||||
echo "✗ MCP test tool not found"
|
echo "✗ MCP test tool was not called"
|
||||||
jq '.[] | select(.type == "system" and .subtype == "init") | .tools' "$OUTPUT_FILE"
|
jq '[.[] | select(.type == "assistant") | .message.content[]? | select(.type == "tool_use") | .name]' "$OUTPUT_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if jq -e '.[] | select(.type == "user") | .message.content[]? | select(.type == "tool_result") | select(.content | tostring | contains("Test tool response"))' "$OUTPUT_FILE" > /dev/null; then
|
||||||
|
echo "✓ MCP test tool returned its response"
|
||||||
|
else
|
||||||
|
echo "✗ MCP test tool response not found"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
@@ -109,10 +118,12 @@ jobs:
|
|||||||
uses: ./base-action
|
uses: ./base-action
|
||||||
id: claude-config-test
|
id: claude-config-test
|
||||||
with:
|
with:
|
||||||
prompt: "List all available tools"
|
prompt: "Call the test_tool tool and report its response."
|
||||||
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||||
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
||||||
mcp_config: '{"mcpServers":{"test-server":{"type":"stdio","command":"bun","args":["simple-mcp-server.ts"],"env":{}}}}'
|
claude_args: |
|
||||||
|
--allowedTools mcp__test-server__test_tool
|
||||||
|
--mcp-config '{"mcpServers":{"test-server":{"type":"stdio","command":"bun","args":["simple-mcp-server.ts"],"env":{}}}}'
|
||||||
env:
|
env:
|
||||||
# Change to test directory so bun can find the MCP server script
|
# Change to test directory so bun can find the MCP server script
|
||||||
CLAUDE_WORKING_DIR: ${{ github.workspace }}/base-action/test/mcp-test
|
CLAUDE_WORKING_DIR: ${{ github.workspace }}/base-action/test/mcp-test
|
||||||
@@ -136,21 +147,29 @@ jobs:
|
|||||||
if jq -e '.[] | select(.type == "system" and .subtype == "init") | .mcp_servers' "$OUTPUT_FILE" > /dev/null; then
|
if jq -e '.[] | select(.type == "system" and .subtype == "init") | .mcp_servers' "$OUTPUT_FILE" > /dev/null; then
|
||||||
echo "✓ Found mcp_servers in output"
|
echo "✓ Found mcp_servers in output"
|
||||||
|
|
||||||
# Check if test-server is connected
|
# MCP servers can connect asynchronously, so the init event may
|
||||||
if jq -e '.[] | select(.type == "system" and .subtype == "init") | .mcp_servers[] | select(.name == "test-server" and .status == "connected")' "$OUTPUT_FILE" > /dev/null; then
|
# report the server as pending. Check registration there, then
|
||||||
echo "✓ test-server is connected"
|
# verify the tool actually ran.
|
||||||
|
if jq -e '.[] | select(.type == "system" and .subtype == "init") | .mcp_servers[] | select(.name == "test-server")' "$OUTPUT_FILE" > /dev/null; then
|
||||||
|
echo "✓ test-server is registered"
|
||||||
else
|
else
|
||||||
echo "✗ test-server not found or not connected"
|
echo "✗ test-server not found"
|
||||||
jq '.[] | select(.type == "system" and .subtype == "init") | .mcp_servers' "$OUTPUT_FILE"
|
jq '.[] | select(.type == "system" and .subtype == "init") | .mcp_servers' "$OUTPUT_FILE"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if mcp tools are available
|
if jq -e '.[] | select(.type == "assistant") | .message.content[]? | select(.type == "tool_use" and .name == "mcp__test-server__test_tool")' "$OUTPUT_FILE" > /dev/null; then
|
||||||
if jq -e '.[] | select(.type == "system" and .subtype == "init") | .tools[] | select(. == "mcp__test-server__test_tool")' "$OUTPUT_FILE" > /dev/null; then
|
echo "✓ MCP test tool was called"
|
||||||
echo "✓ MCP test tool found"
|
|
||||||
else
|
else
|
||||||
echo "✗ MCP test tool not found"
|
echo "✗ MCP test tool was not called"
|
||||||
jq '.[] | select(.type == "system" and .subtype == "init") | .tools' "$OUTPUT_FILE"
|
jq '[.[] | select(.type == "assistant") | .message.content[]? | select(.type == "tool_use") | .name]' "$OUTPUT_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if jq -e '.[] | select(.type == "user") | .message.content[]? | select(.type == "tool_result") | select(.content | tostring | contains("Test tool response"))' "$OUTPUT_FILE" > /dev/null; then
|
||||||
|
echo "✓ MCP test tool returned its response"
|
||||||
|
else
|
||||||
|
echo "✗ MCP test tool response not found"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user