Remote MCP (mcp.socket.dev) rejects freshly-issued OAuth access tokens with 401 invalid_token
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 45/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- Calme
- Stack technique
- typescript
- Domaine
- api, authentication, backend
Piste de recherche
Commencez par le point de terminaison MCP distant https://mcp.socket.dev/ et suivez la manière dont ses jetons bearer OAuth sont validés, en comparant ce chemin avec la requête fonctionnelle vers api.socket.dev. Reproduisez le problème avec les commandes curl fournies et examinez la documentation distante de Socket MCP ainsi que les métadonnées de la ressource protégée par OAuth. Le travail est terminé lorsqu’un jeton nouvellement émis peut initialiser MCP avec succès, avec un comportement d’authentification et une documentation cohérents.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
The remote Socket MCP server at https://mcp.socket.dev/ rejects access tokens that its own OAuth flow just issued. The token is valid and unexpired — the same token authenticates successfully against api.socket.dev — but every MCP request returns 401 invalid_token. This makes the remote MCP server unusable with OAuth-capable MCP clients (tested with Claude Code).
Environment
- Client: Claude Code (streamable HTTP MCP client with OAuth + dynamic client registration)
- Server:
https://mcp.socket.dev/ - Account: Socket org
clivi(team plan), reproduced consistently across 2 days (2026-06-09 and 2026-06-10)
Steps to reproduce
- Add the remote server per the docs:
claude mcp add --transport http socket-mcp https://mcp.socket.dev/ - Complete the OAuth flow (DCR client, e.g.
client_id=dcr-f8TfK-9JQzUGucp7lDJCymIp, scopepackages:list,resource=https://mcp.socket.dev/). The browser flow finishes with "Authentication successful". - Client receives and stores an access token (
sktsec_…, 55 chars, ~15-minute TTL) plus a refresh token. - Immediately (>10 minutes before expiry) call the MCP endpoint with the token:
curl -X POST https://mcp.socket.dev/ \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"diag","version":"1.0"}}}'
Expected
200 with an initialize result.
Actual
HTTP/2 401
www-authenticate: Bearer error="invalid_token", error_description="Invalid or expired token", resource_metadata="https://mcp.socket.dev/.well-known/oauth-protected-resource"
{"error":"invalid_token","error_description":"Invalid or expired token"}
Evidence the token itself is valid
The exact same token, at the same moment, works against the regular API:
curl https://api.socket.dev/v0/organizations -H "Authorization: Bearer $ACCESS_TOKEN"
# 200 — returns the org as expected
So issuance, scope (packages:list, which matches the resource metadata's scopes_supported), audience/resource binding, and storage are all fine — only the MCP resource server's token validation fails.
Additional observations
- The Remote Socket MCP docs say "No API key or authentication required!" — but unauthenticated requests get
401witherror_description="Missing Authorization header". If auth is now required, the docs are stale; if it isn't, the 401s are the bug. https://mcp.socket.dev/mcp(referenced in the Windsurf section of those docs) returns404.- Workaround that works fine: local stdio server (
@socketsecurity/mcp) with a static API key of the samepackages:listscope. (Side note: itsenginesfield requires npm ≥ 11.16, which no current Node release bundles —npxfails out of the box;pnpm dlxworks.)
- Langage dominant
- JavaScript
- Étoiles
- 136
- Forks
- 47
- Merge moyen
- 13 j 10 h
- PR mergées (30 j)
- 1
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de SocketDev/socket-mcp
-
[fuzz] fuzz-js job failedOuverte
Difficulté 4/5 3-5 jours Accessibilité débutants 38/100
SocketDev/socket-mcp#218 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 52/100
SocketDev/socket-mcp#201 ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
SocketDev/socket-mcp#186 · 1 commentaire ·
Toutes les issues de SocketDev/socket-mcp
Issues similaires
-
ci-install-db-tools stall-case tests flake: stalled apt-get can be killed before it logs its callOuverteeffort:low model:light plan planner:opus-5-5 tests
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
Les mainteneurs répondent en général sous 1 jour
-
Bug 🐞
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
mozilla-mobile/firefox-ios#35986 ·
Les mainteneurs répondent en général sous 1 jour
-
Hidden loading spinner keeps animating after connect, causing high idle CPU usage in FirefoxOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
-
bug(sight): the dashboard's text truncations split surrogate pairs and show broken charactersOuvertecomponent:sight
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
agentic-os-org/ANOLISA#6738 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
bug Durable Agents Observability (AI Telemetry) status: needs triage
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
mastra-ai/mastra#26470 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour