anthropics / anthropics/claude-ai-mcp
Self-hosted MCP server fails to connect as a custom connector in Claude
- 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.