Skip to content

Handle registry.json tool listing time-to-live and paging - #3780

Open
Alan Zimmer (alzimmermsft) wants to merge 6 commits into
mainfrom
HandleRemoteServerTimeToLiveAndPaging
Open

Alan Zimmer (alzimmermsft) wants to merge 6 commits into
mainfrom
HandleRemoteServerTimeToLiveAndPaging

Conversation

@alzimmermsft

Copy link
Copy Markdown
Member

What does this PR do?

Adds support for handling registry.json remote server time-to-live in response and pagination.

GitHub issue number?

[Link to the GitHub issue this PR addresses]

Pre-merge Checklist

  • Required for All PRs
    • Read contribution guidelines
    • PR title clearly describes the change
    • Commit history is clean with descriptive messages (cleanup guide)
    • Added comprehensive tests for new/modified functionality
    • Created a changelog entry if the change falls among the following: new feature, bug fix, UI/UX update, breaking change, or updated dependencies. Follow the changelog entry guide
  • For MCP tool changes:
    • One tool per PR: This PR adds or modifies only one MCP tool for faster review cycles
    • Updated servers/Azure.Mcp.Server/README.md and/or servers/Fabric.Mcp.Server/README.md documentation
    • Validate README.md changes running the script ./eng/scripts/Process-PackageReadMe.ps1. See Package README
    • For new or modified tool descriptions, ran ToolDescriptionEvaluator and obtained a score of 0.4 or more and a top 3 ranking for all related test prompts
    • For tools with new names, including new tools or renamed tools, update consolidated-tools.json
    • For renamed tools, follow the Tool Rename Checklist and tag the PR with the breaking-change label
    • For new tools associated with Azure services or publicly available tools/APIs/products, add URL to documentation in the PR description
  • Extra steps for Azure MCP Server tool changes:
    • Updated command list in servers/Azure.Mcp.Server/docs/azmcp-commands.md
    • Ran ./eng/scripts/Update-AzCommandsMetadata.ps1 to update tool metadata in azmcp-commands.md (required for CI)
    • Updated test prompts in servers/Azure.Mcp.Server/docs/e2eTestPrompts.md
    • 👉 For Community (non-Microsoft team member) PRs:
      • Security review: Reviewed code for security vulnerabilities, malicious code, or suspicious activities before running tests (crypto mining, spam, data exfiltration, etc.)
      • Manual tests run: added comment /azp run mcp - pullrequest - live to run Live Test Pipeline

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).
There may be pipelines that require an authorized user to comment /azp run to run.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

Unresolved pagination and cache-timestamp issues can omit tools or cause stale and unnecessary refreshes.

Get a fresh assessment by requesting another Copilot review.

Review effort: Lite
Findings: 1 High severity · 2 Medium severity

Open (3)
What changed in this PR

Adds TTL-aware caching and paginated remote tool discovery for MCP loaders.

Changes:

  • Propagates remote tool-list TTLs.
  • Refreshes expired tool caches.
  • Adds pagination, TTL, and refresh tests plus a changelog entry.
File Description
servers/​Azure.Mcp.Server/​changelog-entries/​copilot-registry-tool-cache-ttl.yaml Documents the cache and pagination fix.
core/​Microsoft.Mcp.Core/​src/​Areas/​Server/​Commands/​ToolLoading/​ToolListCache.cs Centralizes paginated tool listing and TTL handling.
core/​Microsoft.Mcp.Core/​src/​Areas/​Server/​Commands/​ToolLoading/​SingleProxyToolLoader.cs Adds TTL-aware proxy tool refresh.
core/​Microsoft.Mcp.Core/​src/​Areas/​Server/​Commands/​ToolLoading/​ServerToolLoader.cs Adds TTL-aware server tool caching.
core/​Microsoft.Mcp.Core/​src/​Areas/​Server/​Commands/​ToolLoading/​RegistryToolLoader.cs Integrates registry refresh and pagination.
core/​Microsoft.Mcp.Core/​src/​Areas/​Server/​Commands/​ToolLoading/​CompositeToolLoader.cs Applies aggregate cache TTL handling.
core/​Microsoft.Mcp.Core/​src/​Areas/​Server/​Commands/​Runtime/​McpRuntime.cs Propagates loader TTLs with defaults.
core/​Azure.Mcp.Core/​tests/​Azure.Mcp.Core.Tests/​Areas/​Server/​Helpers/​MockMcpClientBuilder.cs Supports TTL-aware test clients.
core/​Azure.Mcp.Core/​tests/​Azure.Mcp.Core.Tests/​Areas/​Server/​Commands/​ToolLoading/​SingleProxyToolLoaderTests.cs Tests proxy cache behavior.
core/​Azure.Mcp.Core/​tests/​Azure.Mcp.Core.Tests/​Areas/​Server/​Commands/​ToolLoading/​ServerToolLoaderTests.cs Tests server cache behavior.
core/​Azure.Mcp.Core/​tests/​Azure.Mcp.Core.Tests/​Areas/​Server/​Commands/​ToolLoading/​RegistryToolLoaderTests.cs Tests registry refresh and pagination.
core/​Azure.Mcp.Core/​tests/​Azure.Mcp.Core.Tests/​Areas/​Server/​Commands/​ToolLoading/​CompositeToolLoaderTests.cs Tests aggregate TTL handling.
core/​Azure.Mcp.Core/​tests/​Azure.Mcp.Core.Tests/​Areas/​Server/​Commands/​Runtime/​McpRuntimeTests.cs Tests runtime TTL propagation.

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ToolLoading/ToolListCache.cs Outdated
Comment thread core/Microsoft.Mcp.Core/src/Areas/Server/Commands/ToolLoading/ServerToolLoader.cs Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

server-Azure.Mcp Azure.Mcp.Server

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants