forcedotcom / forcedotcom/mcp-hosted

[Bug]: All custom Hosted MCP servers 404 "Server definition not found" (~30s) after Summer '26 upgrade; standard servers serve; c2cStatus=NOT_CONFIGURED

Open
#43 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
No language data
Stars
135
Forks
20
PR merge metrics
No merged PRs in 30d

Description

### Summary

Since our org took the **Summer '26 major release**, **every custom Hosted MCP server returns `404 "Server definition not found"` after a consistent ~30s internal delay**, while **standard** servers on the same org/token serve normally. It worked continuously before the upgrade and broke the day the instance was upgraded. A **freshly created + activated custom server fails identically**, so it is not a stale/one-off registration.

### Configuration

- Org: **Developer Edition**, non-sandbox, **API v67 (Summer '26)**, org id `00DdM00000uxlnSUAQ`, instance `IND136`.
- **External Client App**: scopes `mcp_api refresh_token`, PKCE required. Token verified good: `/services/oauth2/userinfo` → 200; access-token JWT `aud` includes `https://api.salesforce.com`, `scp = "refresh_token mcp_api"`, `sfap_op` includes `MCPService` **and** `EinsteinHawkingC2CEnabled`.
- Custom server `McpServerDefinition` (15 tools) shows **Active** in Setup → API Catalog → MCP Servers → Salesforce Servers, with the correct URL `https://api.salesforce.com/platform/mcp/v1/custom/`. Its detail page shows **`c2cStatus = NOT_CONFIGURED`**.

### Test / repro

Postman-style `POST` of `{"jsonrpc":"2.0","id":1,"method":"tools/list"}` with a fresh valid `mcp_api` bearer token, `Accept: application/json, text/event-stream`:

| Endpoint | Result | Latency |
|---|---|---|
| `/platform/mcp/v1/custom/` (Active, 15 tools) | `404 Server definition not found` | **~30 s** |
| `/platform/mcp/v1/custom/` | `404 Server definition not found` | **~30 s** |
| `/platform/mcp/v1/custom/` | identical `404` | **~1 s** |
| `/platform/mcp/v1/platform/sobject-all` (standard, Active) | full handshake, **11 tools** | **~4 s** |

The ~30s delay for a real (Active) custom name vs ~1s for a nonexistent name indicates the gateway **holds a registration** for our server but its internal **definition-resolution times out**.

**Structural evidence from the org's own registration tables (Tooling API):**
- `McpServerAccess`: the working `platform_sobject_all` row has `McpServerId = null`; **both** failing custom rows are `Active = true` with **non-null `McpServerId`** linking to intact `McpServerDefinition` records (each with all 15 `McpServerToolDefinition` rows present).
- ⇒ The gateway serves servers that need **no org-definition join**, and times out only on those that **do** — i.e. the **C2C definition-fetch is the failing component**, consistent with `c2cStatus = NOT_CONFIGURED`.

**Already tried (no effect):** deactivate/reactivate the server; republish the `McpServerDefinition`; activate the standard `sobject-all`; deploy + activate a brand-new custom definition. **Debug logs are not usable** here: FINEST trace flags on the admin, the Platform Integration User, and AutomatedProcess users captured **0 ApexLog rows** during the failure — but the **working** `sobject-all` call *also* produced 0 ApexLog rows, so trace logging is simply blind to the MCP C2C path. `McpRegistrationHealth` (the record backing Setup's Server Status) is not readable by the admin on any API (gated behind `PermissionsMCPMetadataApi` / a system perm set on the Platform Integration User only).

### Desired result

1. Custom Hosted MCP servers on this org serve `tools/list` again, as they did before the Summer '26 upgrade.
2. Please **read `McpRegistrationHealth` for this org internally** and **repair / re-provision the custom-server C2C registration** (the org-visible "Active" flag no longer reflects the gateway runtime; `c2cStatus = NOT_CONFIGURED`).
3. If a new post-GA admin step is required to (re)establish C2C for custom servers, please document it — the current troubleshooting guide has no path for "Active in Setup but `Server definition not found` at the gateway."

Happy to run a live repro and share org/metadata IDs.

Contributor guide

Open the contributing guide

Research direction

Start by reproducing tools/list against the custom and standard MCP endpoints, then inspect the Tooling API McpServerAccess and McpServerDefinition records, including c2cStatus and McpRegistrationHealth if permitted. The issue is done when an active custom Hosted MCP server responds successfully instead of timing out with 404, and any required post-release setup is documented.

Written by the indexing model from the issue text.

Assessment

Domain
api, backend
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.