Skip to content

Filter disabled tools from tools/list discovery#3591

Merged
souvikghosh04 merged 5 commits into
mainfrom
Usr/sogh/filter-disbled-tools-toollist
May 19, 2026
Merged

Filter disabled tools from tools/list discovery#3591
souvikghosh04 merged 5 commits into
mainfrom
Usr/sogh/filter-disbled-tools-toollist

Conversation

@souvikghosh04
Copy link
Copy Markdown
Contributor

@souvikghosh04 souvikghosh04 commented May 15, 2026

Summary

Internally, all tools respects the enabled/disabled config flag. However, discovery was still made. Disabled tools were still returned in tools/list MCP responses. This fix filters them out at the listing level.

Changes

  • Added IsEnabled(RuntimeConfig) to IMcpTool interface
  • Implemented per-tool config checks in all 7 built-in tools + DynamicCustomTool (always enabled)
  • Added GetEnabledTools(RuntimeConfig) to McpToolRegistry
  • Updated HTTP and stdio tools/list handlers to use GetEnabledTools with fail-fast (no silent fallback to unfiltered list)
  • Added unit tests for filtering logic and per-tool IsEnabled behavior

Behavior

Before: tools/list returned all registered tools regardless of dml-tools config flags. Setting "delete-record": false or "create-record": false had zero effect — disabled tools still appeared in the tool list and were callable.

After: tools/list only returns tools where IsEnabled(RuntimeConfig) is true. Disabled DML tools no longer appear in the response. Both HTTP (Streamable) and stdio transports are covered.

@souvikghosh04 souvikghosh04 self-assigned this May 15, 2026
@souvikghosh04 souvikghosh04 added config changes related to config mcp-server 2.0 labels May 15, 2026
@souvikghosh04 souvikghosh04 added this to the May 2026 milestone May 15, 2026
@souvikghosh04 souvikghosh04 moved this from Todo to In Progress in Data API builder May 15, 2026
@souvikghosh04 souvikghosh04 requested a review from Copilot May 15, 2026 08:31
@souvikghosh04 souvikghosh04 changed the title Filter disabled DML tools from MCP tools/list response Filter disabled tools from MCP tools/list discovery May 15, 2026
@souvikghosh04 souvikghosh04 changed the title Filter disabled tools from MCP tools/list discovery Filter disabled tools from tools/list discovery May 15, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds configuration-aware filtering for MCP tools/list responses so disabled DML tools are not advertised to clients.

Changes:

  • Adds IMcpTool.IsEnabled(RuntimeConfig) and implements it for built-in and custom MCP tools.
  • Adds McpToolRegistry.GetEnabledTools(RuntimeConfig) and uses it in HTTP and stdio list handlers.
  • Adds unit coverage for registry filtering and built-in tool enablement checks.

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/Azure.DataApiBuilder.Mcp/Model/IMcpTool.cs Adds the enablement contract for MCP tools.
src/Azure.DataApiBuilder.Mcp/Core/McpToolRegistry.cs Adds filtering of registered tools by runtime config.
src/Azure.DataApiBuilder.Mcp/Core/McpServerConfiguration.cs Uses enabled-tool filtering for HTTP tools/list.
src/Azure.DataApiBuilder.Mcp/Core/McpStdioServer.cs Uses enabled-tool filtering for stdio tools/list.
src/Azure.DataApiBuilder.Mcp/Core/DynamicCustomTool.cs Marks dynamic custom tools as always enabled.
src/Azure.DataApiBuilder.Mcp/BuiltInTools/*.cs Adds per-tool DML config checks for built-in tools.
src/Service.Tests/Mcp/McpToolRegistryTests.cs Adds filtering and built-in enablement tests.
src/Service.Tests/Mcp/McpQueryTimeoutTests.cs Updates test tools for the new interface method.
src/Service.Tests/UnitTests/McpTelemetryTests.cs Updates mock tool for the new interface method.

Comment thread src/Azure.DataApiBuilder.Mcp/Core/McpToolRegistry.cs
Address review: use ?? true instead of == true so tools default to
enabled when runtime.mcp or dml-tools is not configured. Add test for
null Mcp config case.
Comment thread src/Azure.DataApiBuilder.Mcp/Core/McpToolRegistry.cs Outdated
Comment thread src/Service.Tests/Mcp/McpToolRegistryTests.cs Outdated
@souvikghosh04 souvikghosh04 enabled auto-merge (squash) May 19, 2026 07:18
Copy link
Copy Markdown
Contributor

@aaronburtle aaronburtle left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@souvikghosh04 souvikghosh04 merged commit 69b12fc into main May 19, 2026
12 checks passed
@souvikghosh04 souvikghosh04 deleted the Usr/sogh/filter-disbled-tools-toollist branch May 19, 2026 20:00
@github-project-automation github-project-automation Bot moved this from Review In Progress to Done in Data API builder May 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2.0 config changes related to config mcp-server

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

[Bug]: dml-tools boolean disable format is completely ignored

4 participants