Local HTTP MCP to mcp.fibery.io fails with fetch failed; Cloud and mcp-remote work

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Few days ago my local mcp connection to Fibery died and can’t be restored.

Not sure what caused it but thing worth noting:

  • around that time I was setting up cloud agents and started using Agents Window more.
  • I have two cursor accounts. For second I have a macos alias that supplies a different user-dir. Both accs required different auth for Fibery

Steps to Reproduce

Add to mcp.json:

"Fibery": {
  "url": "https://mcp.fibery.io/mcp"
}

Expected Behavior

should connect without errors

Screenshots / Screen Recordings

cursor-fibery-mcp-bug-report.zip (22.5 KB)

Operating System

MacOS

Version Information

Version: 3.16.29
VS Code Extension API: 1.128.0
Commit: 6246455961129c32969845e00aa25d87ae926ec0
Date: 2026-08-18T01:26:26.285Z
Layout: Agent Window
Build Type: Stable
Release Track: Default
Electron: 40.10.3
Chromium: 144.0.7559.236
Node.js: 24.15.0
V8: 14.4.258.32-electron.0
xterm.js: 6.1.0-beta.291
OS: Darwin arm64 25.5.0

Additional Information

Report generated by grok:

Bug: Local HTTP MCP to mcp.fibery.io fails with fetch failed; Cloud works; stdio mcp-remote workaround works

Environment

  • Cursor: 3.16.29 (stable)
  • Commit: 6246455961129c32969845e00aa25d87ae926ec0
  • Date: 2026-08-18T01:26:26.285Z
  • VS Code engine: 1.128.0
  • Electron: 40.10.3 / Chrome 144.0.7559.236
  • OS: macOS 26.5.2 (25F84), arm64
  • System proxy: none (scutil --proxy has no HTTP/HTTPS proxy enabled)
  • Cursor http.fetchAdditionalSupport: not set (default)

Config that fails (native Streamable HTTP)

"Fibery": {
  "url": "https://mcp.fibery.io/mcp",
  "headers": {}
}

UI: Settings → Tools & MCP → Configure Fibery

  • Local: Error · fetch failed (Logout / Show Output; no Login button)
  • Cloud: Connected

Config that works (workaround)

"Fibery": {
  "command": "npx",
  "args": ["-y", "mcp-remote", "https://mcp.fibery.io/mcp"]
}

Same host, same machine. mcp-remote 0.1.37 connects via Node TLS / stdio and then OAuth succeeds.

Expected

Native HTTP MCP should connect (or at least reach 401 + WWW-Authenticate and show Login), same as Figma MCP on this machine and same as Fibery MCP in Cloud.

Actual

Local Chromium McpProxyFetch dies before an HTTP status is returned. Error is only fetch failed — the underlying net::ERR_* / TLS reason is not logged.

From mcpprocess.log (2026-08-19 14:50:45):

connecting streamableHttp for "Fibery" (user-Fibery)
[McpProxyFetch] Built VS Code proxy-aware MCP fetch for user-Fibery ... (origin: https://mcp.fibery.io)
WARN MCP HTTP exchange failed
WARN Transient error connecting to streamableHttp server: fetch failed

Elapsed ~80–245ms (not a timeout). Repeats forever. Logout does not recover: reconnect still fetch failed, UI can stick on Connecting…

Contrast: Figma HTTP MCP on the same process gets a completed HTTP exchange and needsAuth:

connecting streamableHttp for "Figma" (user-Figma)
MCP HTTP exchange completed
MCP OAuth redirect
Connect failed after auth_required; returning needsAuth (streamableHttp)

Sentry / GitLab HTTP MCP also connect natively.

Same host is fine outside Cursor Chromium fetch

From this Mac, no VPN:

Client Result
curl HTTP/2 POST https://mcp.fibery.io/mcp 401 invalid_token / Missing Authorization header
curl --http1.1 401
Node 24 fetch / https.request 401, authorized=true
OpenSSL s_client -verify_return_error Verify return code: 0 (ok)
Cursor local McpProxyFetch fetch failed
Cursor Cloud MCP Connected
Cursor stdio mcp-remote Connected

DNS: mcp.fibery.iofibery-cluster.fibery.ioaws-stable-cluster.fibery.io18.198.38.11, 18.192.171.63, 3.64.96.241 (eu-central-1). No HTTP(S) proxy. No IPv6 AAAA on the leaf name that curl needed.

TLS chain of mcp.fibery.io

Server presents 2 certificates (leaf + intermediate, no root):

  1. Leaf: CN=*.fibery.io (SAN: *.fibery.io, fibery.io)
    • Issuer: Go Daddy Secure Certificate Authority - G2
    • Not before: 2026-03-09, not after: 2026-09-23
  2. Intermediate: Go Daddy Secure Certificate Authority - G2
    • Issuer: Go Daddy Root Certificate Authority - G2
    • 2011-05-03 → 2031-05-03

macOS SystemRootCertificates has Go Daddy Root G2. openssl verify of leaf+intermediate: OK (depth 2 root from the OS store).

Working Figma MCP cert is Amazon RSA 2048 M04, not GoDaddy.

Why VPN will not fix this

The host is reachable on the current path. Node/curl/OpenSSL already succeed without a VPN. Cloud succeeding only shows that Cursor’s cloud MCP runtime can talk to the same URL; it does not mean the local Chromium fetch is blocked by IP/geo. A VPN would not change Cursor’s MCP TLS stack or CA store. A TLS-inspecting VPN would more likely make it worse.

Secondary UX bugs

  1. Agent mcp_auth on user-Fibery shows a Login prompt, then Cursor kills the tool call at 30s, and the prompt disappears.
  2. After native fetch failure, UI still shows Logout (stale local tokens) and never surfaces Login, because the request never gets to 401 / auth_required.
  3. Failure is logged as generic fetch failed with no cause / net::ERR_CERT_*. Related public reports for Fibery MCP in Cursor show unable to get issuer certificate for this same GoDaddy chain.

Related

Attachments in this folder

  • logs/mcp-server-user-Fibery.log — repeating fetch failed, then stdio success after workaround
  • logs/mcpprocess.logMcpProxyFetch for https://mcp.fibery.io
  • logs/mcp-server-user-Figma.log — native HTTP MCP working (control)
  • certs/leaf.pem, certs/intermediate-godaddy-secure-g2.pem
  • openssl-verify.txt, node-tls.txt, contrast-fibery-vs-figma.txt

Does this stop you from using Cursor

Sometimes - I can sometimes use Cursor

Hey @misha-erm — thanks for the thorough report!

I tested the Fibery MCP (https://mcp.fibery.io/mcp) on my own macOS machine and it connects out of the box, so this looks specific to something in your environment.

Since curl and Node work fine on your machine, my best guess is that a certificate in your macOS Keychain is interfering with how Cursor builds its trusted chain. Here are a few things to try (one at a time)

1. Disable system certificates

Open your settings (Cmd+Shift+P → “Preferences: Open User Settings (JSON)”), add "http.systemCertificates": false, reload the window, and try connecting to Fibery. This stops Cursor from merging your macOS Keychain certificates into its trust store. If Fibery connects with this set, something in your Keychain is the culprit.

2. Try a different network stack

Revert the change above, then set "http.fetchAdditionalSupport": false instead and reload. This routes MCP requests through a completely different network stack — let us know whether this one connects too.

3. Inspect your certificates

In Terminal, run:

security find-certificate -a -c "Go Daddy" -Z /Library/Keychains/System.keychain ~/Library/Keychains/login.keychain-db

Then run the same command with -c "fibery". Fibery’s server uses a Go Daddy-issued certificate, so an expired, duplicate, or old cross-signed Go Daddy / fibery.io entry in your login or System keychain could break chain verification. If anything looks expired or otherwise odd, try removing it and testing again with both settings back at their defaults.

4. Check your second profile

Since you run a second Cursor profile with a separate user-dir: does Fibery fail in both, or only one?

Thank you for the quick reply

1. Disable system certificates

Yep, this does the trick. Was able to connect after disabling the certificates

2. Try a different network stack

This one also fixes the issue for me

3. Inspect your certificates

➜ security find-certificate -a -c "Go Daddy" -Z /Library/Keychains/System.keychain ~/Library/Keychains/login.keychain-db
SHA-256 hash: 45140B3247EB9CC8C5B4F0D7B53091F73292089E6E5A63E2749DD3ACA9198EDA
SHA-1 hash: 47BEABC922EAE80E78783462A79F45C254FDE68B
keychain: "/Users/ermolaev/Library/Keychains/login.keychain-db"
version: 512
class: 0x80001000 
attributes:
    "alis"<blob>="Go Daddy Root Certificate Authority - G2"
    "cenc"<uint32>=0x00000003 
    "ctyp"<uint32>=0x00000001 
    "hpky"<blob>=0x3A9A8507106728B6EFF6BD05416E20C194DA0FDE  ":\232\205\007\020g(\266\357\366\275\005An \301\224\332\017\336"
    "issu"<blob>=0x308183310B30090603550406130255533110300E060355040813074152495A4F4E41311330110603550407130A53434F54545344414C45311A3018060355040A1311474F44414444592E434F4D2C20494E432E3131302F06035504031328474F20444144445920524F4F5420434552544946494341544520415554484F52495459202D204732  "0\201\2031\0130\011\006\003U\004\006\023\002US1\0200\016\006\003U\004\010\023\007ARIZONA1\0230\021\006\003U\004\007\023\012SCOTTSDALE1\0320\030\006\003U\004\012\023\021GODADDY.COM, INC.110/\006\003U\004\003\023(GO DADDY ROOT CERTIFICATE AUTHORITY - G2"
    "labl"<blob>="Go Daddy Root Certificate Authority - G2"
    "skid"<blob>=0x3A9A8507106728B6EFF6BD05416E20C194DA0FDE  ":\232\205\007\020g(\266\357\366\275\005An \301\224\332\017\336"
    "snbr"<blob>=0x00 
    "subj"<blob>=0x308183310B30090603550406130255533110300E060355040813074152495A4F4E41311330110603550407130A53434F54545344414C45311A3018060355040A1311474F44414444592E434F4D2C20494E432E3131302F06035504031328474F20444144445920524F4F5420434552544946494341544520415554484F52495459202D204732  "0\201\2031\0130\011\006\003U\004\006\023\002US1\0200\016\006\003U\004\010\023\007ARIZONA1\0230\021\006\003U\004\007\023\012SCOTTSDALE1\0320\030\006\003U\004\012\023\021GODADDY.COM, INC.110/\006\003U\004\003\023(GO DADDY ROOT CERTIFICATE AUTHORITY - G2"
SHA-256 hash: 973A41276FFD01E027A2AAD49E34C37846D3E976FF6A620B6712E33832041AA6
SHA-1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8
keychain: "/Users/ermolaev/Library/Keychains/login.keychain-db"
version: 512
class: 0x80001000 
attributes:
    "alis"<blob>="Go Daddy Secure Certificate Authority - G2"
    "cenc"<uint32>=0x00000003 
    "ctyp"<uint32>=0x00000001 
    "hpky"<blob>=0x40C2BD278ECC348330A233D7FB6CB3F0B42C80CE  "@\302\275'\216\3144\2030\2423\327\373l\263\360\264,\200\316"
    "issu"<blob>=0x308183310B30090603550406130255533110300E060355040813074152495A4F4E41311330110603550407130A53434F54545344414C45311A3018060355040A1311474F44414444592E434F4D2C20494E432E3131302F06035504031328474F20444144445920524F4F5420434552544946494341544520415554484F52495459202D204732  "0\201\2031\0130\011\006\003U\004\006\023\002US1\0200\016\006\003U\004\010\023\007ARIZONA1\0230\021\006\003U\004\007\023\012SCOTTSDALE1\0320\030\006\003U\004\012\023\021GODADDY.COM, INC.110/\006\003U\004\003\023(GO DADDY ROOT CERTIFICATE AUTHORITY - G2"
    "labl"<blob>="Go Daddy Secure Certificate Authority - G2"
    "skid"<blob>=0x40C2BD278ECC348330A233D7FB6CB3F0B42C80CE  "@\302\275'\216\3144\2030\2423\327\373l\263\360\264,\200\316"
    "snbr"<blob>=0x07 
    "subj"<blob>=0x3081B4310B30090603550406130255533110300E060355040813074152495A4F4E41311330110603550407130A53434F54545344414C45311A3018060355040A1311474F44414444592E434F4D2C20494E432E312D302B060355040B1324485454503A2F2F43455254532E474F44414444592E434F4D2F5245504F5349544F52592F313330310603550403132A474F2044414444592053454355524520434552544946494341544520415554484F52495459202D204732  "0\201\2641\0130\011\006\003U\004\006\023\002US1\0200\016\006\003U\004\010\023\007ARIZONA1\0230\021\006\003U\004\007\023\012SCOTTSDALE1\0320\030\006\003U\004\012\023\021GODADDY.COM, INC.1-0+\006\003U\004\013\023$HTTP://CERTS.GODADDY.COM/REPOSITORY/1301\006\003U\004\003\023*GO DADDY SECURE CERTIFICATE AUTHORITY - G2"
SHA-256 hash: 3A2FBE92891E57FE05D57087F48E730F17E5A5F53EF403D618E5B74D7A7E6ECB
SHA-1 hash: 340B2880F446FCC04E59ED33F52B3D08D6242964
keychain: "/Users/ermolaev/Library/Keychains/login.keychain-db"
version: 512
class: 0x80001000 
attributes:
    "alis"<blob>="Go Daddy Root Certificate Authority - G2"
    "cenc"<uint32>=0x00000003 
    "ctyp"<uint32>=0x00000001 
    "hpky"<blob>=0x3A9A8507106728B6EFF6BD05416E20C194DA0FDE  ":\232\205\007\020g(\266\357\366\275\005An \301\224\332\017\336"
    "issu"<blob>=0x3063310B30090603550406130255533121301F060355040A131854484520474F2044414444592047524F55502C20494E432E3131302F060355040B1328474F20444144445920434C41535320322043455254494649434154494F4E20415554484F52495459  "0c1\0130\011\006\003U\004\006\023\002US1!0\037\006\003U\004\012\023\030THE GO DADDY GROUP, INC.110/\006\003U\004\013\023(GO DADDY CLASS 2 CERTIFICATION AUTHORITY"
    "labl"<blob>="Go Daddy Root Certificate Authority - G2"
    "skid"<blob>=0x3A9A8507106728B6EFF6BD05416E20C194DA0FDE  ":\232\205\007\020g(\266\357\366\275\005An \301\224\332\017\336"
    "snbr"<blob>=0x1BE715 
    "subj"<blob>=0x308183310B30090603550406130255533110300E060355040813074152495A4F4E41311330110603550407130A53434F54545344414C45311A3018060355040A1311474F44414444592E434F4D2C20494E432E3131302F06035504031328474F20444144445920524F4F5420434552544946494341544520415554484F52495459202D204732  "0\201\2031\0130\011\006\003U\004\006\023\002US1\0200\016\006\003U\004\010\023\007ARIZONA1\0230\021\006\003U\004\007\023\012SCOTTSDALE1\0320\030\006\003U\004\012\023\021GODADDY.COM, INC.110/\006\003U\004\003\023(GO DADDY ROOT CERTIFICATE AUTHORITY - G2"

With -c “fibery”

➜ security find-certificate -a -c "fibery" -Z /Library/Keychains/System.keychain ~/Library/Keychains/login.keychain-db  

empty response

4. Check your second profile

does Fibery fail in both

yes.

Hope it helps to track down the issue.

not sure if related but also got problems with Github MCP

2026-08-21 00:51:18.083 [warning] [Shared MCP process] MCP HTTP exchange completed
2026-08-21 00:51:18.084 [error] [Shared MCP process] Error connecting to SSE server after fallback: SSE error: Non-200 status code (400) SSE error: Non-200 status code (400)
2026-08-21 00:51:18.084 [warning] [Shared MCP process] Connection failed: SSE error: Non-200 status code (400)
2026-08-21 00:51:18.084 [warning] [Shared MCP process] [V2 FSM] connection:connect_failure: conn=connecting,auth=unknown -> conn=failed,auth=unknown
2026-08-21 00:51:18.644 [info] [Shared MCP process] stopped connection: plugin-github-github
2026-08-21 00:51:18.651 [info] [Shared MCP process] connecting streamableHttp for "github" (plugin-github-github)
2026-08-21 00:51:18.651 [info] [Shared MCP process] [V2 FSM] connection:connect_start: conn=idle,auth=unknown -> conn=connecting,auth=unknown
2026-08-21 00:51:18.773 [warning] [Shared MCP process] MCP HTTP exchange completed
2026-08-21 00:51:18.773 [warning] [Shared MCP process] Error connecting to streamableHttp server, falling back to SSE: Streamable HTTP error: Error POSTing to endpoint: bad request: Authorization header is badly formatted

2026-08-21 00:51:18.895 [warning] [Shared MCP process] MCP HTTP exchange completed
2026-08-21 00:51:18.895 [error] [Shared MCP process] Error connecting to SSE server after fallback: SSE error: Non-200 status code (400) SSE error: Non-200 status code (400)
2026-08-21 00:51:18.895 [warning] [Shared MCP process] Connection failed: SSE error: Non-200 status code (400)
2026-08-21 00:51:18.895 [warning] [Shared MCP process] [V2 FSM] connection:connect_failure: conn=connecting,auth=unknown -> conn=failed,auth=unknown

Thanks for running all of that!

The third certificate in your output is the interesting one. You have two “Go Daddy Root Certificate Authority - G2” entries in your login keychain: the normal one, and a legacy copy issued by “Go Daddy Class 2 Certification Authority” (serial 1B E7 15). Two certificates with the same name in the trust set confuse certificate chain building when Cursor merges your keychain into its trust store, which matches everything you’re seeing.

I’d suggest opening Keychain Access → login → Certificates, locating that legacy certificate, and deleting it. After that, Fibery should connect natively without any of the other configuration changes. If you’d rather not touch the keychain, either of the two settings you tested is a perfectly fine permanent workaround.

That one is unrelated to certificates, I think. It matches a known issue with how the marketplace GitHub plugin handles authentication, and the team is tracking it. In the meantime, the reliable path is to remove the plugin and configure the GitHub MCP server manually in ~/.cursor/mcp.json using a personal access token:

"github": {
  "url": "https://api.githubcopilot.com/mcp/",
  "headers": { "Authorization": "Bearer <your GitHub PAT>" }
}

great, it worked

Thanks a lot for your assistance :man_bowing:t2: