Skip to content

feat: add MCP server "domains" #421

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 27 commits into
base: main
Choose a base branch
from
Open

Conversation

Novaes
Copy link
Collaborator

@Novaes Novaes commented Aug 11, 2025

Add domains

GitHub issue number

#386

Associated Risks

Replace by possible risks this pull request can bring you might have thought of

PR Checklist

  • I have read the contribution guidelines
  • I have read the code of conduct guidelines
  • Title of the pull request is clear and informative.
  • 👌 Code hygiene
  • 🔭 Telemetry added, updated, or N/A -- N/A: tracking domain enabling will be a follow up
  • 📄 Documentation added, updated, or N/A -- N/A: we aligned PM handling it
  • 🛡️ Automated tests added, or N/A

🧪 How did you test it?

Unit test added
Local run - Inspector
Post-Update Status:

  • Wiki + Work Items
    Tools loaded reduced from all tools to 18 tools
image

Repositories + Test Plans
Tools loaded reduced from all tools to 23 tools
image

VS Code
image

Note on UI: Domain selection is not supported in the UI, and VS Code lacks multi-select for pickString.
Domains are required explicitly; documentation are available to assist.. Workarounds exist but are not prioritized. This UI limitation should be addressed with Groups and Tags coming.

image

Customer Experience

Given We are considering pushing a draft spec generator, the page for customers would look like:

Context

SEP-993 is moving to Groups and Tags
We have been discussing with interested parties and authors, Groups is quite loosely coupled, which can be categorized with:

  • Semantic Groups
  • Functional Groups

It makes sense for Groups and Tags proposal be as generic as possible. With domains we introduce a semantic group which in terms of implementation is just syntax sugar for groups, but it carries more governance on MCP servers around those.

Some open questions when Groups go to prod:

  • Some other edge case behaviors: e.g. behavior for someone defining domains and groups
  • Standard way to expose and catalog those domains (give viz at Microsoft for them)

Important

  • Not all MCP servers necessarily require to have domains. For instance, if your groups are organized around functional roles rather than strict semantic boundaries, it may be reasonable not to enforce domain governance.
  • For those servers that do require domain structuring, this capability is supported through the Groups and Tags SEP. Domains are syntax sugar for groups, which appear to be the de-facto implementation approach at the protocol level.

More info on protocol alignment: Tool Filtering with groups and Tags

More info: SEP-1300: Tool Filtering with Groups and Tags · Issue #1300 · modelcontextprotocol/modelcontextprotocol

Client-side filtering of tools: Agent fetches all the tools with no filtering, organizes them by groups and tags within the host application, then provides the appropriate tools to the LLM when needed via whatever means, e.g., semantic search.

Server-side filtering of tools: Agent presents a list of groups to the LLM. When the LLM decides it needs a tool but doesn't have an appropriate one in its context, it may request the list of tools in a particular group or set of groups.

@Novaes Novaes changed the title Add domains Add server "domains" feature Aug 11, 2025
@Novaes Novaes changed the title Add server "domains" feature feat: add server "domains" Aug 11, 2025
Copy link

github-actions bot commented Aug 14, 2025

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@danhellem danhellem linked an issue Aug 14, 2025 that may be closed by this pull request
@Novaes Novaes marked this pull request as ready for review August 14, 2025 12:20
@Novaes Novaes requested a review from a team as a code owner August 14, 2025 12:20
@Novaes Novaes changed the title feat: add server "domains" Add server "domains" Aug 14, 2025
@Novaes Novaes changed the title Add server "domains" Add MCP server "domains" Aug 14, 2025
@Novaes Novaes marked this pull request as draft August 14, 2025 14:09
@Novaes Novaes changed the title Add MCP server "domains" feat: add MCP server "domains" Aug 17, 2025
@Novaes Novaes marked this pull request as ready for review August 18, 2025 01:20
@Novaes Novaes self-assigned this Aug 22, 2025
Renamed for testing purpose
@Novaes Novaes requested a review from aaudzei August 22, 2025 03:58
Novaes added 4 commits August 25, 2025 02:10
For VS Code input, there is no pickString support for multiple selections (e.g. pickManyString or manyOf argument).
Two seeing approaches are (1) pass multi-arg as single arg string and rely on parsing the string input with custom code; (2) create a script to load multi-arg UI.

It seems more appropriate though we leave to argumetn parsing, as array of string, and rely on adding domains on file (no UI for it)

Example if want to add single domain - pickString:
 {
      "id": "domains",
      "type": "pickString",
      "options": [
        "advanced-security",
        "builds",
        "core",
        "releases",
        "repositories",
        "search",
        "test-plans",
        "wiki",
        "work",
        "work-items"
      ]
    }
@Novaes Novaes enabled auto-merge (squash) August 25, 2025 00:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Introducing: Domains
2 participants