modelcontextprotocol / modelcontextprotocol/java-sdk

Simplify error response when accessing MCP without session ID

Ouverte Adaptée aux débutants
#577 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

enhancement waiting for triage
Langage dominant
Java
Étoiles
3.7k
Forks
1.1k
Merge moyen
1 j 15 h
PR mergées (30 j)
9

Description

Description:
Currently, when accessing the MCP Streamable HTTP server at https://host:port/mcp without providing a session ID, the server responds with the full exception stack trace and detailed error information.

Issue:
Returning the complete stack trace in the response is not user-friendly and may expose internal details unnecessarily.

https://github.com/modelcontextprotocol/java-sdk/blob/7f16cd0b9dc72f5adc3358a903bebb0f909dda3e/mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletStreamableServerTransportProvider.java#L264C4-L264C100

Suggestion:
Instead of returning the full error, return a simple, clear message indicating there is an issue with the request headers or the session ID

stack trace

{
  "cause": null,
  "stackTrace": [
    {
      "moduleName": null,
      "moduleVersion": null,
      "classLoaderName": null,
      "methodName": "doGet",
      "fileName": "HttpServletStreamableServerTransportProvider.java",
      "lineNumber": 268,
      "className": "com.ibm.modelcontextprotocol.server.transport.HttpServletStreamableServerTransportProvider",
      "nativeMethod": false
    },
    {
      "moduleName": null,
      "moduleVersion": null,
      "classLoaderName": null,
      "methodName": "service",
      "fileName": "HttpServlet.java",
      "lineNumber": 527,
      "className": "jakarta.servlet.http.HttpServlet",
      "nativeMethod": false
    },
    {
      "moduleName": null,
      "moduleVersion": null,
      "classLoaderName": null,
      "methodName": "service",
      "fileName": "HttpServlet.java",
      "lineNumber": 614,
      "className": "jakarta.servlet.http.HttpServlet",
      "nativeMethod": false
    }
  ],
  "jsonRpcError": null,
  "message": "text/event-stream required in Accept header; Session ID required in mcp-session-id header",
  "localizedMessage": "text/event-stream required in Accept header; Session ID required in mcp-session-id header",
  "suppressed": []
}

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez dans HttpServletStreamableServerTransportProvider.java vers la ligne 264 et examinez la gestion de GET pour les requêtes sans en-tête mcp-session-id. Reproduisez la requête décrite dans l’issue, puis vérifiez que la réponse fournit un simple message de requête ou d’ID de session sans exposer la stack trace de l’exception.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java
Domaine
api, backend
Type d'issue
Bug
Difficulté
2/5
Temps estimé
1-3 heures
Activité
Calme
Clarté
Clairement spécifiée
Accessibilité débutants
68/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.