Title: SEP: Domains · Issue #1275 · modelcontextprotocol/modelcontextprotocol · GitHub
Open Graph Title: SEP: Domains · Issue #1275 · modelcontextprotocol/modelcontextprotocol
X Title: SEP: Domains · Issue #1275 · modelcontextprotocol/modelcontextprotocol
Description: Proposal: Transition from Namespaces to Domains for Tool Classification in MCP The proposal is conceptually similar to #993 which you can assume as baseline for this one. Please check that one out. This shift would establish a stronger c...
Open Graph Description: Proposal: Transition from Namespaces to Domains for Tool Classification in MCP The proposal is conceptually similar to #993 which you can assume as baseline for this one. Please check that one out....
X Description: Proposal: Transition from Namespaces to Domains for Tool Classification in MCP The proposal is conceptually similar to #993 which you can assume as baseline for this one. Please check that one out....
Opengraph URL: https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1275
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"SEP: Domains","articleBody":"## Proposal: Transition from Namespaces to Domains for Tool Classification in MCP\n\n\u003e The proposal is conceptually similar to https://github.com/modelcontextprotocol/modelcontextprotocol/issues/993 which you can assume as baseline for this one. Please check that one out. \n\nThis shift would establish a **stronger commitment at the MCP server level**, where domains are explicitly registered, shared with user experience in mind. Simultaneously, we would preserve **lower-level granularity for tools** (maintaining the `[domain]_[tool]` structure) that enhances clarity and modularity for the flow. This also supports a move away from current namespace implementations that group tools through parameterization, which can obscure their purpose and reduce transparency.\n\nThis proposal is a refines our naming —specifically, transitioning from the use of _namespaces_ to a more semantically grounded structure based on **domains**. While the current namespace implementation is clearly valuable, there is an opportunity to sharpen the conceptual model and align more closely with industry standards and user expectations. \n\nThis approach also requires a stronger commitment from MCP servers to ensure proper governance over their domains—covering onboarding, offboarding, and updates.\n\nWe aim to release this structure in `azure-devops/mcp` for early adopters, with the goal of demonstrating tangible improvements in customer experience aligned with the proposed protocol standard. This will also help clarify the two levels of abstraction: **tools and prompts remain unchanged**, while **domains** introduce an additional layer of semantic organization.\n\n---\n\n## Rationale for Using Domains\n\nThe structure used in https://github.com/microsoft/azure-devops-mcp, where tools follow the `[domain]_[tool]` format, aligns with established industry practices. This mirrors how domains are used in natural language processing (NLP) systems. For example:\n\n- https://developer.apple.com/documentation/AppIntents/app-intent-domains \n- https://www.amazon.science/blog/amazon-scientists-use-transfer-learning-to-accelerate-development-of-new-alexa-capabilities\n\nThese platforms require developers to select predefined domains, making the approach both familiar and intuitive for users and developers alike.\n\n---\n\n## Concerns with the Namespace Approach\n\nThe term “namespace” often implies a dynamic, loosely coupled structure that may not clearly reflect a product’s purpose or stability. From a customer perspective, it can feel abstract and disconnected from the assistant or agent experience. It also lacks the semantic clarity that “domain” provides when describing areas of knowledge or functionality.\n\n---\n\n## Strategic Benefits of Adopting Domains\n\n- **Stronger conceptual alignment** between tools and their functional areas \n- **Improved clarity and discoverability** for customers and developers \n- **Enhanced backward compatibility** across MCP versions through stable, domain-aligned boundaries \n- **Greater transparency** by avoiding over-parameterized tool groupings under generic namespaces \n\n---\n\n## Maintaining Implementation at the Lower Level\n\nEven with domain enablement, tools remain visible and addressable at the lower level using the `[domain]_[tool]` structure. For example:\n\n```json\n\"servers\": { \n \"ado\": { \n \"type\": \"stdio\", \n \"command\": \"mcp-server-azuredevops\", \n \"id\": \"mseng\",\n \"domains\": [\"workitems\", \"wiki\"]\n } \n}\n```\n\n---\n\n## Clarifying Tool Visibility and Domain Commitment\n\n- The **MCP protocol** is responsible for supporting domain registration and ensuring their visibility. \n- The **MCP servers** are responsible for distributing domains, applying them meaningfully across tools, and maintaining consistency to enhance user experience across versions. \n\n---\n\n## Allowing Customers to Hardcode Domains\n\nThis capability is essential for production environments, particularly as more MCPs approach GA. It ensures predictability for workflow-specific applications that rely on fixed domain references.\n\n---\n\n## Looking Ahead\n\nCurrently, domain enablement is handled manually by servers. In the future, LLMs should be capable of automatically discovering domains and enabling tools based on their descriptions—further simplifying configuration and improving scalability.\n\n---\n\nI welcome your feedback and look forward to aligning on this direction.\n","author":{"url":"https://github.com/Novaes","@type":"Person","name":"Novaes"},"datePublished":"2025-07-31T23:45:24.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":3},"url":"https://github.com/1275/modelcontextprotocol/issues/1275"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:a2965175-72da-7583-e38c-36fda0cdff4b |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D0E0:2F7044:FAA71F:14EFB75:6A5D04CC |
| html-safe-nonce | dd046b7bc8185a00f9ed841de9a9da1d077f5710a4a8c7490514d43b14a35120 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEMEUwOjJGNzA0NDpGQUE3MUY6MTRFRkI3NTo2QTVEMDRDQyIsInZpc2l0b3JfaWQiOiI3Nzg4OTgyMzQzMzcwMDgxNDg0IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 961048f6253007a1f0472fe93a156596f8217daba00c51d5b655a523348bcd84 |
| hovercard-subject-tag | issue:3282011467 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/modelcontextprotocol/modelcontextprotocol/1275/issue_layout |
| twitter:image | https://opengraph.githubassets.com/496d2f79d3eabed3e2f4554fd60e790e07d9dd16ebb3172c7b5c387e73507d16/modelcontextprotocol/modelcontextprotocol/issues/1275 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/496d2f79d3eabed3e2f4554fd60e790e07d9dd16ebb3172c7b5c387e73507d16/modelcontextprotocol/modelcontextprotocol/issues/1275 |
| og:image:alt | Proposal: Transition from Namespaces to Domains for Tool Classification in MCP The proposal is conceptually similar to #993 which you can assume as baseline for this one. Please check that one out.... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | Novaes |
| hostname | github.com |
| expected-hostname | github.com |
| None | 5290d7e14309ad1e76106a9c4237bd1041517e83ea182c8ab756752cb0c6940b |
| turbo-cache-control | no-preview |
| go-import | github.com/modelcontextprotocol/modelcontextprotocol git https://github.com/modelcontextprotocol/modelcontextprotocol.git |
| octolytics-dimension-user_id | 182288589 |
| octolytics-dimension-user_login | modelcontextprotocol |
| octolytics-dimension-repository_id | 862570523 |
| octolytics-dimension-repository_nwo | modelcontextprotocol/modelcontextprotocol |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 862570523 |
| octolytics-dimension-repository_network_root_nwo | modelcontextprotocol/modelcontextprotocol |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 9c975978430e9ad293956f2bbdaf153b1bd84a99 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width