Skip to content

feat(mcp): add get_github_issue_creation_link tool - #1353

Draft
Aaron ("AJ") Steers (aaronsteers) wants to merge 3 commits into
release-candidate/v1from
devin/1791573431-github-issue-link-tool
Draft

Aaron ("AJ") Steers (aaronsteers) wants to merge 3 commits into
release-candidate/v1from
devin/1791573431-github-issue-link-tool

Conversation

@aaronsteers

@aaronsteers Aaron ("AJ") Steers (aaronsteers) commented Oct 9, 2026 •

Copy link
Copy Markdown
Member

Overview

👉 TL;DR: Adds an MCP tool that turns an agent's proposed bug report or feature request into a link the user clicks to open a pre-filled GitHub issue, which they review and submit under their own GitHub account.

Specifically, this adds get_github_issue_creation_link(category, title, description) -> GitHubIssueCreationLink(url, warning) to airbyte/mcp/guidance.py, with category a GitHubIssueCategory StrEnum of cloud-mcp-bug-report / cloud-mcp-feature-request.

Depends on #1352 (the issue forms the links point at must be on main):

Changes

  • GitHubIssueCategory StrEnum: each value is the file name of an issue form in .github/ISSUE_TEMPLATE/.
  • get_github_issue_creation_link (read-only, idempotent, no network): returns https://github.com/airbytehq/PyAirbyte/issues/new?template=<slug>.yml&title=<title>&description=<description>, percent-encoded with quote. title is capped at 200 chars and description has no max length. If the encoded URL is longer than MAX_GITHUB_ISSUE_URL_LENGTH = 8000, the tool still returns it and sets warning, which tells the agent to share the link anyway and to shorten the description if the link fails to open.
  • The tool description tells the agent to always hand the URL to the user as a clickable link, that nothing is filed until the user submits, and to keep secrets, credentials, connector config values and customer data out because issues are public.
  • Arg tracing: category traced by value, title/description fingerprinted (arg_trace_plan.json updated).
  • Tests: parametrized URL round-trip over both categories (special characters, newlines, non-ASCII), long-link warning (4000 emoji and 10000 ASCII chars warn; 4000 ASCII chars doesn't), tool listing, and read-only/idempotent annotations.

Review Spotlight

Reviewers with limited time, please review first:

Risks

Test plan

  • uv run pytest tests/unit_tests/test_mcp_guidance.py tests/unit_tests/test_mcp_arg_trace_parity.py tests/unit_tests/test_mcp_tool_annotations.py tests/docs_tests: 25 passed, 1 skipped (the hidden search tool).
  • ruff check, ruff format --check, pyrefly check airbyte/mcp/guidance.py: clean.
  • Not tested in a browser: there's no signed-in GitHub session on the test machine.

Link to Devin session: https://app.devin.ai/sessions/ce03f4da05384dc79e6ae007f55a0048
Open in Devin Desktop: https://app.devin.ai/desktop/session/ce03f4da05384dc79e6ae007f55a0048?variant=devin
Requested by: Aaron ("AJ") Steers (@aaronsteers)

Co-Authored-By: AJ Steers <aj@airbyte.io>
@devin-ai-integration

Copy link
Copy Markdown
Contributor

I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".

  • Disable automatic comment, CI, and merge conflict monitoring

@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown

👋 Greetings, Airbyte Team Member!

Here are some helpful tips and reminders for your convenience.

💡 Show Tips and Tricks

Testing This PyAirbyte Version

You can test this version of PyAirbyte using the following:

# Run PyAirbyte CLI from this branch:
uvx --from 'git+https://github.com/airbytehq/PyAirbyte.git@devin/1791573431-github-issue-link-tool' pyairbyte --help

# Install PyAirbyte from this branch for development:
pip install 'git+https://github.com/airbytehq/PyAirbyte.git@devin/1791573431-github-issue-link-tool'

PR Slash Commands

Airbyte Maintainers can execute the following slash commands on your PR:

  • /fix-pr - Fixes most formatting and linting issues
  • /uv-lock - Updates uv.lock file
  • /test-pr - Runs tests with the updated PyAirbyte
  • /prerelease - Builds and publishes a prerelease version to PyPI
📚 Show Repo Guidance

Helpful Resources

Community Support

Questions? Join the #pyairbyte channel in our Slack workspace.

📝 Edit this welcome message.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Valid inputs can generate URLs far beyond the intended size limit after percent encoding.

1 open finding
What changed in this PR

Adds an MCP tool that creates pre-filled GitHub issue links for Cloud MCP feedback.

Changes:

  • Adds issue categories and URL generation.
  • Adds tracing metadata and tool annotations.
  • Tests URL encoding, registration, and annotations.
File Description
airbyte/​mcp/​guidance.py Implements the issue-link tool.
tests/​unit_tests/​test_mcp_guidance.py Tests generated links and registration.
tests/​unit_tests/​test_mcp_tool_annotations.py Verifies read-only/idempotent annotations.
tests/​unit_tests/​fixtures/​arg_trace_plan.json Defines argument tracing behavior.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread airbyte/mcp/guidance.py Outdated
@github-code-quality

github-code-quality Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: Python

Python / code-coverage/pytest-no-creds

The overall line coverage in commit 14dc1cb in the devin/1791573431-git... branch is 78%. The line coverage in commit d9f652f in the release-candidate/v1 branch is 65%.

Show a line coverage summary of the most impacted files.
File release-candidate/v1 d9f652f devin/1791573431-git... 14dc1cb +/-
airbyte/_util/api_util.py 36% 66% +30%
airbyte/mcp/cloud.py 52% 83% +31%
airbyte/cloud/connectors.py 34% 75% +41%
airbyte/mcp/int..._registry_ui.py 0% 92% +92%
airbyte/mcp/_user_identity.py 0% 93% +93%
airbyte/_direct...ctors/models.py 0% 94% +94%
airbyte/mcp/_telemetry.py 0% 94% +94%
airbyte/mcp/_sso_auth.py 0% 96% +96%
airbyte/cloud/models.py 0% 97% +97%
airbyte/mcp/int...nc_status_ui.py 0% 97% +97%

Python / code-coverage/pytest

The overall line coverage in commit 14dc1cb in the devin/1791573431-git... branch is 80%. The line coverage in commit d9f652f in the release-candidate/v1 branch is 71%.

Show a line coverage summary of the most impacted files.
File release-candidate/v1 d9f652f devin/1791573431-git... 14dc1cb +/-
airbyte/cloud/connectors.py 51% 80% +29%
airbyte/mcp/cloud.py 52% 83% +31%
airbyte/mcp/_otel.py 0% 79% +79%
airbyte/mcp/int..._registry_ui.py 0% 92% +92%
airbyte/mcp/_user_identity.py 0% 93% +93%
airbyte/_direct...ctors/models.py 0% 94% +94%
airbyte/mcp/_telemetry.py 0% 94% +94%
airbyte/mcp/_sso_auth.py 0% 96% +96%
airbyte/cloud/models.py 0% 97% +97%
airbyte/mcp/int...nc_status_ui.py 0% 97% +97%

Python / code-coverage/pytest-unit

The overall line coverage in commit 14dc1cb in the devin/1791573431-git... branch is 74%. Line coverage data for the release-candidate/v1 branch is not yet available.

Show a line coverage summary of the most covered files.
File release-candidate/v1 devin/1791573431-git... 14dc1cb +/-
airbyte/cloud/models.py — 97% —
airbyte/mcp/_sso_auth.py — 96% —
airbyte/_direct...ctors/models.py — 94% —
airbyte/cloud/client.py — 90% —
airbyte/exceptions.py — 85% —
airbyte/mcp/cloud.py — 83% —
airbyte/progress.py — 80% —
airbyte/cloud/connectors.py — 75% —
airbyte/shared/...ql_processor.py — 68% —
airbyte/_util/api_util.py — 66% —

Updated October 09, 2026 19:52 UTC

devin-ai-integration Bot and others added 2 commits October 9, 2026 19:27
Co-Authored-By: AJ Steers <aj@airbyte.io>
Co-Authored-By: AJ Steers <aj@airbyte.io>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants