Error 401 status sending message to https://mcp.notion.com/sse: {"error":"invalid_token"}
Fixes the remote Notion MCP endpoint 401ing with invalid_token on the SSE URL. Use when connecting to Notion's hosted MCP. Not for local stdio token problems.
Error 401 status sending message to https://mcp.notion.com/sse: {"error":"invalid_token"}
TL;DR: Use the /mcp endpoint, not /sse; the SSE path is deprecated and rejects the token. Update the server URL in your MCP config to https://mcp.notion.com/mcp. Reconnect; the OAuth handshake completes on the supported path.
The error
Error 401 status sending message to https://mcp.notion.com/sse: {"error":"invalid_token","error_description":"The access token is invalid or has expired."}Fix it
- Open your MCP config and find the Notion remote server URL.
Expected: It points at https://mcp.notion.com/sse.
- Change the URL to https://mcp.notion.com/mcp.
Expected: The config uses the /mcp path.
- Reconnect the server.
Expected: OAuth completes and tools list loads without 401.
When this applies
The hosted Notion MCP server 401s with invalid_token specifically on the /sse URL.
When this does NOT apply
Local stdio servers do not use this URL at all. A bad local token is the Claude Code env issue.
Tool compatibility
Notion hosted MCP (mcp.notion.com), remote clients
Also seen as
- notion MCP sse invalid_token
- mcp.notion.com 401
- notion remote MCP endpoint deprecated
Why it happens
Notion moved the hosted MCP endpoint from /sse to /mcp. The old path no longer accepts tokens, so every request 401s with invalid_token even when the OAuth grant is fine.
Edge cases
- Some setup guides still show the /sse URL; check the date on the guide.
- After switching, clear the stored OAuth grant once.
- The /mcp path uses Streamable HTTP; older clients may need an update.
Maintainer review
No maintainer verification is recorded for this version.
This records the version a maintainer checked. It does not assert that the version is the latest upstream release.