Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .github/mcp-ci-tests.mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"mcpServers": {
"airbyte-mcp": {
"type": "stdio",
"command": "poetry",
"args": [
"run",
"airbyte-mcp"
],
"env": {
"GCP_GSM_CREDENTIALS": "${GCP_GSM_CREDENTIALS}",
"AIRBYTE_CLOUD_MCP_SAFE_MODE": "1"
}
}
}
}
35 changes: 35 additions & 0 deletions .github/workflows/poe-command.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: On-Demand Poe Task

on:
workflow_dispatch:
inputs:
comment-id:
description: "Optional comment-id of the slash command. Ignore if not applicable."
required: false
pr:
description: "PR Number"
required: false

permissions:
contents: write
pull-requests: write

jobs:
run-poe-command:
runs-on: ubuntu-latest
steps:
- name: Authenticate as GitHub App
uses: actions/create-github-app-token@v2
id: get-app-token
with:
owner: "airbytehq"
repositories: "PyAirbyte"
app-id: ${{ secrets.OCTAVIA_BOT_APP_ID }}
private-key: ${{ secrets.OCTAVIA_BOT_PRIVATE_KEY }}

- name: Run Poe Slash Command Processor
uses: aaronsteers/poe-command-processor@v1.3.3
with:
pr: ${{ github.event.inputs.pr }}
comment-id: ${{ github.event.inputs.comment-id }}
github-token: ${{ steps.get-app-token.outputs.token }}
1 change: 1 addition & 0 deletions .github/workflows/slash_command_dispatch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ jobs:
fix-pr
test-pr
poetry-lock
poe
prerelease
static-args: |
pr=${{ github.event.issue.number }}
Expand Down
12 changes: 12 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,18 @@ mcp-serve-sse = { cmd = "poetry run python -c \"from airbyte.mcp.server import a
mcp-inspect = { cmd = "poetry run fastmcp inspect airbyte/mcp/server.py:app", help = "Inspect MCP tools and resources (supports --tools, --health, etc.)" }
mcp-tool-test = { cmd = "poetry run python bin/test_mcp_tool.py", help = "Test MCP tools directly with JSON arguments: poe mcp-tool-test <tool_name> '<json_args>'" }

# Claude Code MCP Testing Tasks
[tool.poe.tasks.test-my-tools]
help = "Run Claude Code in headless mode with the test-my-tools MCP prompt"
shell = """
npx @anthropic-ai/claude-code --print "/mcp__airbyte-mcp__test-my-tools ${scope:+ $scope}" \
--mcp-config=.github/mcp-ci-tests.mcp.json \
--dangerously-skip-permissions \
--verbose --output-format=stream-json | \
jq -r '.message.content[]? | if .type == "text" then "💬 " + .text elif .type == "tool_use" then "🔧 " + .name + "(" + (.input | tojson) + ")" else empty end' 2>/dev/null
"""
args = [{ name = "scope", default = "", help = "Optional scope/context to focus testing (e.g., 'focus on areas of the code changed versus main')" }]

[tool.airbyte_ci]
extra_poetry_groups = ["dev"]
poe_tasks = ["test"]
Expand Down
Loading