Skip to content

test: SDK PR #3054 MCP config fix testing#96

Draft
jpshackelford wants to merge 1 commit into
mainfrom
test/sdk-pr-3054-mcp-config-fix
Draft

test: SDK PR #3054 MCP config fix testing#96
jpshackelford wants to merge 1 commit into
mainfrom
test/sdk-pr-3054-mcp-config-fix

Conversation

@jpshackelford
Copy link
Copy Markdown
Contributor

Purpose

This PR temporarily patches setup.sh to install the SDK from the PR branch instead of PyPI, enabling us to test the MCP config fix before it's released.

Testing SDK PR

SDK PR: OpenHands/software-agent-sdk#3054
Related Issue: #93

The Problem

MCP servers configured in user's SaaS workspace settings work in regular conversations but do not work in automation-triggered conversations.

The Fix (in SDK PR #3054)

The PR modifies openhands-workspace/openhands/workspace/cloud/workspace.py:

  1. Adds expose_secrets=true parameter to the /api/v1/users/me API call
  2. Passes through mcpServers format directly when returned by API (instead of expecting legacy sse_servers/shttp_servers arrays)

Changes in This PR

Modified automation/presets/prompt/setup.sh and automation/presets/plugin/setup.sh to install SDK from:

git+https://github.com/OpenHands/software-agent-sdk.git@fix/mcp-config-format-passthrough

Testing Plan

  1. ✅ This PR triggers the automation CI to build a Docker image
  2. trigger-deploy-preview.yml will auto-create a PR in OpenHands/deploy
  3. 🔄 Wait for feature environment deployment
  4. 🧪 Test MCP servers work in automations at the feature environment
  5. ✅ If tests pass, merge SDK PR #3054 and publish to PyPI
  6. 🔄 Revert this PR (or close without merging) after testing

⚠️ Do Not Merge

This is a test PR only. After testing is complete:

  • If SDK fix works → merge SDK PR #3054, publish to PyPI, then close this PR
  • Update automation's setup.sh with the new PyPI version in a separate PR

This PR was created by an AI agent (OpenHands) on behalf of the user.

@jpshackelford can click here to continue refining the PR

This temporarily patches setup.sh to install the SDK from the
fix/mcp-config-format-passthrough branch instead of PyPI.

Testing SDK PR: OpenHands/software-agent-sdk#3054
Related issue: #93

The fix adds expose_secrets=true to get_mcp_config() and properly
handles the mcpServers format returned by the API.

Co-authored-by: openhands <openhands@all-hands.dev>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 4, 2026

🚀 Deploy Preview PR Created/Updated

A deploy preview has been created/updated for this PR.

Deploy PR: https://github.com/OpenHands/deploy/pull/4047
Automation SHA: c426d18a4f477e0431f8f59e7eb082480b0c24f9
Last updated: May 04, 2026, 05:08:47 PM ET

Once the deploy PR's CI passes, the automation service will be deployed to the feature environment.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 4, 2026

Coverage

Coverage Report
FileStmtsMissCoverMissing
__init__.py10100% 
app.py1185950%36, 39, 42, 48, 50, 53, 56–59, 62–63, 66, 73–74, 77–78, 82, 90–91, 94, 101–102, 104, 107–108, 111, 116–124, 126–128, 214–216, 221–222, 224–225, 227, 230–232, 234–235, 237–238, 243–244, 248, 251, 253
auth.py116595%80, 122, 286, 294–295
config.py1490100% 
constants.py160100% 
db.py442640%37–39, 48–49, 51–52, 54, 62, 69, 79, 82–83, 87–88, 96, 104, 109, 114, 117–123
dispatcher.py1393574%53, 65, 67–68, 137, 141, 163, 171, 190–192, 220–222, 225–227, 280–281, 305–312, 328, 341–342, 355–356, 363–364, 366
event_router.py591967%83, 88, 119–121, 137–138, 156, 158, 160–161, 163, 173, 179–181, 184, 186, 188
exceptions.py40100% 
execution.py24414739%36–38, 73–76, 84–88, 90, 98–100, 105–109, 111, 125–128, 130, 132, 134–137, 139–144, 146, 148–155, 157–158, 160, 196–198, 204–206, 217–220, 226–228, 268–272, 281, 289, 293, 295–296, 301–302, 307, 359, 361, 379, 382–385, 405–408, 410, 418–419, 422, 428, 491–493, 495–501, 504–505, 507, 509–511, 514, 517, 520–523, 525, 528–529, 532–534, 538–539, 543–546, 548, 556–557, 561–563, 565–571, 575, 577, 586–588, 590–592
filter_eval.py50296%161–162
logger.py551769%37, 50–51, 53–59, 74, 77, 101, 103–106
models.py800100% 
preset_router.py1825669%124–126, 234–235, 240–247, 252, 255, 257–258, 269–272, 274–278, 283, 292, 353–355, 466–467, 472–479, 484, 487, 489–490, 501–504, 506–510, 515, 525
router.py1136344%74–75, 95, 97, 100, 102, 116, 129, 131–132, 134–135, 138–140, 151–153, 171–174, 193, 196, 199, 206, 208, 242–244, 247–249, 253–254, 259, 263–266, 268, 276, 278–279, 284–285, 288, 290, 292–294, 297–300, 305, 307–308, 317, 338–340, 344
scheduler.py57984%124–125, 162–163, 178–179, 189–190, 192
schemas.py2651793%31, 165, 171–173, 232–234, 236, 319–320, 323, 328, 333, 477, 485, 492
trigger_matcher.py28389%72–74
uploads.py1075944%138–141, 149–151, 157–158, 161, 170–171, 174–175, 183–184, 186–189, 192–195, 197, 199–201, 203–206, 208–209, 211, 226, 232–233, 236, 239, 242, 245, 247, 260–261, 275, 278–280, 282–283, 285, 291–292, 305, 313–315, 319
watchdog.py1004753%50–51, 63–64, 69–71, 83–84, 228–229, 231, 233, 242, 244–246, 248, 255–257, 259–261, 263–264, 266, 281, 283, 288–291, 293–298, 300–306, 308
webhook_router.py804840%57, 82–83, 107–108, 110, 113–114, 116, 126, 128–132, 137, 139, 151, 154, 157, 164–165, 167, 180, 182–183, 188, 204, 206–207, 213–215, 217–218, 220, 235, 237–238, 243–244, 261, 263–264, 270–271, 273, 275
event_schemas
   __init__.py29196%53
   custom.py33584%52–53, 64–66
   detection.py320100% 
   github.py125496%306, 311, 456, 483
presets
   __init__.py00100% 
storage
   __init__.py60100% 
   factory.py15193%36
   file_store.py22577%21, 30, 35, 40, 64
   google_cloud.py721184%49, 97–102, 136–137, 190, 192
   local.py680100% 
   s3.py1121586%56, 100, 102–103, 107, 109, 190, 213–215, 269–270, 275, 337–338
utils
   __init__.py50100% 
   api_key.py322425%40–41, 46–48, 50, 55, 60, 62–65, 67–68, 70–71, 73, 79, 81–82, 89, 91–92, 98
   cron.py45686%39, 45, 74, 80, 123, 140
   log_context.py100100% 
   run.py771284%74–76, 175–177, 182–184, 231, 237–238
   sandbox.py1017624%40–41, 46–49, 51–53, 55–61, 73, 75, 85–86, 88–90, 92–93, 96–97, 103, 109–111, 121–122, 127–133, 156–157, 159–163, 165–169, 206–207, 209, 211–214, 219–220, 223, 225–226, 232–234, 239–241, 246–247, 255–257, 259
   tarball_validation.py480100% 
   time.py30100% 
   webhook.py511668%46, 51, 119, 129–131, 137, 174, 177–183, 189
TOTAL289378872% 

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