anthropics / anthropics/claude-ai-mcp

Self-hosted MCP server fails to connect as a custom connector in Claude

Open
#892 1 comment 0 reactions 0 assignees View on GitHub
bug
Dominant language
No language data
Stars
471
Forks
76
PR merge metrics
No merged PRs in 30d

Description

### What happened?

A self-hosted MCP server (Streamable HTTP transport, no OAuth) fails to connect as a custom connector in Claude (both claude.ai web and Claude Desktop) with:

> Couldn't reach [server]. You can check the server URL and verify the server is running.

Reference IDs collected across multiple attempts:
- `ofid_89f5ce8a03a298f3`
- `ofid_abc2c647bb605c64`
- `ofid_980df18b930fa201`

Server-side access logging (added specifically to debug this) shows **zero incoming requests** at the moment of each failed Claude connection attempt, while requests from other external clients (curl, mobile Safari over cellular, i.e. not on the server's home network) at the same URL succeed and are logged normally. This matches the pattern described in #227 and #214 ("zero inbound traffic at edge"), except here there is no OAuth/DCR involved at all — plain query-string API key auth.

### What did you expect to happen?

A self-hosted MCP server can be connected to via Claude Desktop oder claude.ai

### Steps to reproduce

- Implementation: [jezweb/twenty-mcp](https://github.com/jezweb/twenty-mcp), HTTP mode (`dist/http-server.js`), Streamable HTTP transport on `/mcp`.
- Hosted: self-hosted on a Synology NAS, behind DSM's built-in reverse proxy, public hostname under a Synology DDNS domain (`*.synology.me`), Let's Encrypt certificate.
- Auth mode: no OAuth (`AUTH_ENABLED=false`). Credentials passed as a query parameter on the connector URL: `https:///mcp?apiKey=`.
- Connector URL registered in Claude: `https:///mcp?apiKey=...` (redacted here).

### Area

MCP Connector (adding/managing servers)

### MCP Server (if applicable)

_No response_

### Error messages or logs

```shell
> Couldn't reach [server].

Reference IDs collected across multiple attempts:
- `ofid_89f5ce8a03a298f3`
- `ofid_abc2c647bb605c64`
- `ofid_980df18b930fa201`
```

### Additional context

### Environment
- Claude: web (claude.ai) and Claude Desktop, both tested, same result.
- Server: Node 20, `@modelcontextprotocol/sdk` 1.25.2, Streamable HTTP transport, Docker container behind Synology DSM reverse proxy.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.