docs(spec): add internationalization guidance for Streamable HTTP#2355
docs(spec): add internationalization guidance for Streamable HTTP#2355SamMorrowDrums wants to merge 1 commit intomodelcontextprotocol:mainfrom
Conversation
Add a section to the Streamable HTTP transport specification noting that servers MAY use standard HTTP content negotiation (Accept-Language header) to serve localized versions of user-facing content such as tool titles and descriptions. This makes explicit what is already implicitly available via HTTP semantics, and provides a path for i18n without requiring changes to the MCP message schema. References: - RFC 9110 §12 (Content Negotiation) - RFC 9110 §12.5.4 (Accept-Language) - BCP 47 / RFC 5646 (Language Tags) - Issue modelcontextprotocol#86 (i18n discussion) Co-authored-by: Copilot <[email protected]>
|
Hmm, but if we lean on HTTP then does that not mean that we have no standard for stdio servers? We can introduce that later, but then we need to have two ways to do i18n. |
|
@pja-ant I both agree but
Personally I could go either way on this, but it feels like we should be careful about reinventing the wheel. I wouldn't be against also adding this to the |
|
It seems like we should try to minimize the gaps between transports as much as possible. Is there a reason we couldn't put this as a field in _meta and mirror it to the header like we're doing for some other values? |
|
@kurtisvg no, except that the mirroring proposal isn't baked in yet, but do you agree that the http model is likely the sensible i18n communication/resolution mechanism to copy? I feel like it makes sense to at least lift and shift it, rather than come up with something else. |
Yes, I'm +1 to reusing over reinventing (unless we have a good rationale why) |
Summary
This change adds explicit guidance on internationalization (i18n) to the Streamable HTTP transport specification, noting that servers MAY use standard HTTP content negotiation to serve localized user-facing content.
Motivation
MCP defines several user-facing string fields (
title,descriptionon tools, resources, prompts, and server metadata) that are intended for display in user interfaces. For Streamable HTTP servers, the HTTP protocol already provides well-established mechanisms for content negotiation via theAccept-Languageheader (RFC 9110 §12.5.4), but the MCP specification makes no mention of this capability. Making it explicit encourages server authors to consider i18n and gives clients confidence that sendingAccept-Languageis a supported pattern.This approach:
Changes
docs/specification/draft/basic/transports.mdx): Added an "Internationalization" subsection coveringAccept-Language/Content-Languageheader usage and fallback behavior.References
AI Disclosure
This PR was authored with assistance from GitHub Copilot CLI.