Skip to content
This repository was archived by the owner on Sep 4, 2025. It is now read-only.

Conversation

Copilot
Copy link
Contributor

@Copilot Copilot AI commented Aug 12, 2025

This PR extracts Azure-agnostic classes from AzureMcp.Core into a new Microsoft.Mcp.Core library, preparing for the multi-server microsoft/mcp migration as outlined in the architecture diagram:

Azure.Cli ──────────────────────► Azure.Mcp.Core ─────► Microsoft.Mcp.Core
     │                                    │                      │
     └─► Areas (Storage, KeyVault, etc.) ─┘              ◄──────┘
                                                         (Generic MCP)

Key Changes

Created Microsoft.Mcp.Core Library

A new Azure-agnostic MCP library containing:

  • MCP Runtime & Server Infrastructure: Core MCP server functionality, hosting, and protocol handling
  • Tool Loading & Discovery: Plugin-style tool discovery and loading mechanisms
  • Base Command Infrastructure: Generic command system, factories, and processing
  • Generic Services: HTTP client, process execution, time, and base telemetry services
  • Models & Helpers: Base models, validation, and utility functions

Refactored Azure.Mcp.Core Library

Renamed from AzureMcp.Core and now contains only Azure-specific functionality:

  • Azure Commands: SubscriptionCommand, GlobalCommand with Azure authentication
  • Azure Configuration: AzureMcpServerConfiguration and Azure-specific options
  • Azure Services: Authentication, resource management, caching, and Azure telemetry
  • Azure Models: AuthMethod, AzureCredentials, ETag, ResourceGroupInfo
  • Azure Extensions: OpenTelemetry integration and Azure-specific service registration

Architectural Benefits

  • Clean Separation: Azure-specific code is isolated from generic MCP functionality
  • Extensibility: Base classes in Microsoft.Mcp.Core can be extended for other platforms (Fabric, etc.)
  • Reusability: Generic MCP infrastructure can be shared across multiple server implementations
  • Maintainability: Clear boundaries between platform-specific and generic code

Technical Implementation

  • Virtual Methods: Created extension points in ServiceStartCommand for platform-specific overrides
  • Public APIs: Made necessary interfaces public for cross-library access
  • AOT Compatibility: Fixed JsonSerializer issues for native AOT compilation
  • Package Management: Added Microsoft.Extensions.Http to central package management

The extraction successfully enables the multi-server architecture while maintaining all existing functionality through the Azure.Mcp.Core → Microsoft.Mcp.Core dependency chain.

Fixes #954.

Warning

Firewall rules blocked me from connecting to one or more addresses

I tried to connect to the following addresses, but was blocked by firewall rules:

  • 0t3vsblobprodcus362.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • 11vvsblobprodcus336.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • 1javsblobprodcus364.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • 1k9vsblobprodcus379.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • 1oavsblobprodcus350.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • 1p7vsblobprodcus324.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • 1s1vsblobprodcus386.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • 2zrvsblobprodcus388.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • 4m6vsblobprodcus384.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • 4vyvsblobprodcus361.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • 51yvsblobprodcus36.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • 5dkvsblobprodcus355.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • 5rqvsblobprodcus385.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • 7devsblobprodcus323.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • 7tjvsblobprodcus341.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • 80zvsblobprodcus35.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • 8xbvsblobprodcus382.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • 96bvsblobprodcus338.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • ajhvsblobprodcus363.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • aka.ms
    • Triggering command: curl -I -sSL --retry 5 --retry-delay 2 --connect-timeout 15 REDACTED (dns block)
  • ckzvsblobprodcus347.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • d0svsblobprodcus381.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • fdpvsblobprodcus345.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • frdvsblobprodcus327.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • gbsvsblobprodcus365.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • gervsblobprodcus329.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • jrqvsblobprodcus343.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • k0ivsblobprodcus356.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • k4kvsblobprodcus344.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • kgfvsblobprodcus314.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • kijvsblobprodcus387.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • kxqvsblobprodcus376.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • l49vsblobprodcus358.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • ljcvsblobprodcus317.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • m16vsblobprodcus374.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • mfjvsblobprodcus373.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • nn8vsblobprodcus340.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • o3svsblobprodcus318.vsblob.vsassets.io
  • pdfvsblobprodcus380.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • pe4vsblobprodcus351.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • s4uvsblobprodcus326.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • se1vsblobprodcus349.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • tphvsblobprodcus375.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • ukkvsblobprodcus352.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • uy6vsblobprodcus34.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • v53vsblobprodcus320.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • vb4vsblobprodcus33.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • xupvsblobprodcus332.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • yluvsblobprodcus367.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)
  • ytvvsblobprodcus310.vsblob.vsassets.io
    • Triggering command: dotnet restore (dns block)

If you need me to access, download, or install something from one of these locations, you can either:


💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.

@hallipr hallipr closed this Aug 12, 2025
@github-project-automation github-project-automation bot moved this from Untriaged to Done in Azure MCP Server (OLD) Aug 12, 2025
@Copilot Copilot AI changed the title [WIP] Extract MicrosoftMcp.Core types from AzureMcp.Core Extract Microsoft.Mcp.Core types from AzureMcp.Core Aug 13, 2025
@Copilot Copilot AI requested a review from hallipr August 13, 2025 00:34
Copilot finished work on behalf of hallipr August 13, 2025 00:34
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

Extract MicrosoftMcp.Core types from AzureMcp.Core
2 participants