Skip to content

feat(mcp): serve OpenAI apps domain verification token - #1470

Closed
Aaron ("AJ") Steers (aaronsteers) wants to merge 1 commit into
release-candidate/v1from
devin/1794527305-openai-apps-challenge
Closed

Aaron ("AJ") Steers (aaronsteers) wants to merge 1 commit into
release-candidate/v1from
devin/1794527305-openai-apps-challenge

Conversation

@aaronsteers

@aaronsteers Aaron ("AJ") Steers (aaronsteers) commented Nov 12, 2026 •

Copy link
Copy Markdown
Member

Summary

Serves GET /.well-known/openai-apps-challenge on the Cloud MCP HTTP server so OpenAI can verify the mcp.airbyte.com domain for the ChatGPT app submission. The route is a Starlette custom_route next to /health, outside MCP auth, and returns only the token as text/plain; charset=utf-8 (no JSON, no trailing newline).

The token sits in code as OPENAI_APPS_CHALLENGE because OpenAI publishes it at a public URL anyway, so it isn't a secret. Putting it in an env var would also need an infra change to the Cloud Run deploy. Prod already sends the whole mcp.airbyte.com host to this app (/health returns 200 there), so the route goes live with the next release.

test_openai_apps_challenge_without_auth checks the exact bytes, content type and a 200 with no Authorization header, both with auth off and with a JWTVerifier on. With the verifier on, it also checks that /mcp still returns 401.

Local run (python -m airbyte.mcp.http_main):

$ curl -i http://localhost:8000/.well-known/openai-apps-challenge
HTTP/1.1 200 OK
content-length: 43
content-type: text/plain; charset=utf-8

coFQcQq3yDXgL1YimT6HXJpTx7bdd6yODW7ZtHJ7EVs

MCP Guru Devin - By AJ opened this PR for AJ

Implemented in session Serve OpenAI domain verification token on Cloud MCP
Review with Devin · Open in Devin Desktop


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

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/1794527305-openai-apps-challenge' pyairbyte --help

# Install PyAirbyte from this branch for development:
pip install 'git+https://github.com/airbytehq/PyAirbyte.git@devin/1794527305-openai-apps-challenge'

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
  • /evals - Runs the Cloud MCP evals that use the MCP tools this PR changed (/evals full=true runs the full suite)
📚 Show Repo Guidance

Helpful Resources

Community Support

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

📝 Edit this welcome message.

@github-code-quality

github-code-quality Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

Code coverage overview

Languages: Python

Python / code-coverage/pytest-no-creds

release-candidate/v1 d9f652f devin/1794527305-ope... ba05cd0 +/-
65% 81% +16%
View coverage of the 10 most impacted files.
File release-candidate/v1 d9f652f devin/1794527305-ope... ba05cd0 +/-
airbyte/_util/api_util.py 36% 68% +32%
airbyte/mcp/cloud.py 52% 87% +35%
airbyte/cloud/connectors.py 34% 81% +47%
airbyte/cloud/connections.py 26% 76% +50%
airbyte/mcp/_datadog.py 0% 50% +50%
airbyte/mcp/_telemetry.py 0% 94% +94%
airbyte/cloud/c...lder/project.py 0% 94% +94%
airbyte/_direct...ctors/models.py 0% 95% +95%
airbyte/mcp/_sso_auth.py 0% 96% +96%
airbyte/cloud/models.py 0% 96% +96%

Python / code-coverage/pytest

release-candidate/v1 d9f652f devin/1794527305-ope... ba05cd0 +/-
71% 83% +12%
View coverage of the 10 most impacted files.
File release-candidate/v1 d9f652f devin/1794527305-ope... ba05cd0 +/-
airbyte/cloud/connectors.py 51% 84% +33%
airbyte/mcp/cloud.py 52% 87% +35%
airbyte/cloud/connections.py 34% 78% +44%
airbyte/mcp/_datadog.py 0% 50% +50%
airbyte/mcp/_telemetry.py 0% 94% +94%
airbyte/cloud/c...lder/project.py 0% 94% +94%
airbyte/_direct...ctors/models.py 0% 95% +95%
airbyte/mcp/_sso_auth.py 0% 96% +96%
airbyte/cloud/models.py 0% 96% +96%
airbyte/mcp/int...nc_status_ui.py 0% 97% +97%

Python / code-coverage/pytest-unit

release-candidate/v1 devin/1794527305-ope... ba05cd0 +/-
— 78% —

Line coverage data for the release-candidate/v1 branch is not yet available.

View coverage of the 10 most covered files.
File release-candidate/v1 devin/1794527305-ope... ba05cd0 +/-
airbyte/mcp/_sso_auth.py — 96% —
airbyte/cloud/models.py — 96% —
airbyte/_direct...ctors/models.py — 95% —
airbyte/cloud/client.py — 91% —
airbyte/mcp/cloud.py — 87% —
airbyte/cloud/connectors.py — 81% —
airbyte/progress.py — 80% —
airbyte/cloud/connections.py — 76% —
airbyte/_util/api_util.py — 68% —
airbyte/shared/...ql_processor.py — 68% —

ℹ️ Calculations represent line coverage. Results may change as calculations are updated.


Updated November 13, 2026 00:04 UTC

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.

1 participant