# MCP Integration unhandled errors in a TaskGroup (1 sub-exception)

**URL:** <https://community.openai.com/t/mcp-integration-unhandled-errors-in-a-taskgroup-1-sub-exception/1362182>\
**Category:** ChatGPT Apps SDK\
**Created:** [October 12, 2025, 4:27pm UTC](https://community.openai.com/t/mcp-integration-unhandled-errors-in-a-taskgroup-1-sub-exception/1362182 "2025-10-12T16:27:35Z")\
**Posts on this page:** 1\
**Showing post:** 11

<div class="post-metadata">

**Author:** ![somedude](https://avatars.discourse-cdn.com/v4/letter/s/ecd19e/32.png) [@somedude](https://community.openai.com/u/somedude)\
**Post date:** [August 24, 2026, 2:05am UTC](https://community.openai.com/t/mcp-integration-unhandled-errors-in-a-taskgroup-1-sub-exception/1362182/11 "2026-08-24T02:05:38Z")

</div>

I was able to solve this problem, so here’s a solution for posterity.

I hit the same generic error when calling tools through ChatGPT:

```auto
ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)

```

The MCP server itself was healthy, the Secure MCP Tunnel was connected, and ChatGPT could discover the connector and its tools. However, every tool call failed. ChatGPT sometimes presented this as an expired connection, which made it initially look like an authentication or tunnel problem.

The issue was MCP resource discovery. ChatGPT calls `resources/list` while initializing or using a connector. My server registered tools but did not register any resources. Adding one valid, readable resource fixed every tool call immediately:

```auto
server.registerResource(
  "campaign-tracker-about",
  "campaign://tracker/about",
  {
    title: "Campaign tracker information",
    description: "Identifies this MCP server and its purpose.",
    mimeType: "text/plain",
  },
  async (uri) => ({
    contents: [{
      uri: uri.href,
      mimeType: "text/plain",
      text: "Live campaign tracker.",
    }],
  }),
);

```

The important details were:

- The resource had a valid URI: `campaign://tracker/about`.
- The URI returned by the read callback matched the registered URI.
- The advertised and returned MIME types matched.
- Both `resources/list` and `resources/read` were tested directly afterward.

I also added this regression test:

```auto
const resources = await client.listResources();

assert.deepEqual(
  resources.resources.map((resource) => resource.uri),
  ["campaign://tracker/about"],
);

const about = await client.readResource({
  uri: "campaign://tracker/about",
});

assert.match(about.contents[0].text, /Live campaign tracker/);

```

After restarting the MCP server and refreshing the ChatGPT connector, `get_current_location` and the other tools began working through the same tunnel and authentication configuration.

Environment:

```auto
Node.js v25.8.0
@modelcontextprotocol/server 2.0.0
@modelcontextprotocol/node 2.0.0
@modelcontextprotocol/client 2.0.0
OpenAI Secure MCP Tunnel

```

I cannot see the nested exception that ChatGPT swallowed, so I cannot prove the precise internal cause. However, adding a valid resource catalog was the only material server-side change, and it changed the connector from consistently failing to consistently working. A more specific error mentioning `resources/list` or resource registration would have made this substantially easier to diagnose.

---

_[View the full topic](https://community.openai.com/t/mcp-integration-unhandled-errors-in-a-taskgroup-1-sub-exception/1362182)._
