diff --git a/docs/azmcp-commands.md b/docs/azmcp-commands.md index 61d57d6b25..0fccd67b04 100644 --- a/docs/azmcp-commands.md +++ b/docs/azmcp-commands.md @@ -567,6 +567,11 @@ azmcp keyvault key create --subscription \ --key \ --key-type +# Get a key in a key vault +azmcp keyvault key get --subscription \ + --vault \ + --key + # Lists keys in a key vault azmcp keyvault key list --subscription \ --vault \ @@ -575,12 +580,12 @@ azmcp keyvault key list --subscription \ #### Secrets -Tools that handle sensitive data such as secrets, credentials, or keys require user consent before execution through a security mechanism called **elicitation**. When you run commands that access sensitive information, the MCP client will prompt you to confirm the operation before proceeding. +Tools that handle sensitive data such as secrets require user consent before execution through a security mechanism called **elicitation**. When you run commands that access sensitive information, the MCP client will prompt you to confirm the operation before proceeding. > **🛡️ Elicitation (user confirmation) Security Feature:** > > Elicitation prompts appear when tools may expose sensitive information like: -> - Key Vault secrets and keys +> - Key Vault secrets > - Connection strings and passwords > - Certificate private keys > - Other confidential data @@ -594,6 +599,11 @@ azmcp keyvault secret create --subscription \ --name \ --value +# Get a secret in a key vault (will prompt for user consent) +azmcp keyvault secret get --subscription \ + --vault \ + --secret + # Lists secrets in a key vault azmcp keyvault secret list --subscription \ --vault @@ -969,6 +979,26 @@ azmcp servicebus topic subscription details --subscription \ #### Database ```bash +# Create a SQL database (supports optional performance and configuration parameters) +azmcp sql db create --subscription \ + --resource-group \ + --server \ + --database \ + [--sku-name ] \ + [--sku-tier ] \ + [--sku-capacity ] \ + [--collation ] \ + [--max-size-bytes ] \ + [--elastic-pool-name ] \ + [--zone-redundant ] \ + [--read-scale ] + +# Delete a SQL database (idempotent – succeeds even if the database does not exist) +azmcp sql db delete --subscription \ + --resource-group \ + --server \ + --database + # Gets a list of all databases in a SQL server azmcp sql db list --subscription \ --resource-group \ @@ -979,6 +1009,20 @@ azmcp sql db show --subscription \ --resource-group \ --server \ --database + +# Update an existing SQL database (applies only the provided configuration changes) +azmcp sql db update --subscription \ + --resource-group \ + --server \ + --database \ + [--sku-name ] \ + [--sku-tier ] \ + [--sku-capacity ] \ + [--collation ] \ + [--max-size-bytes ] \ + [--elastic-pool-name ] \ + [--zone-redundant ] \ + [--read-scale ] ``` #### Elastic Pool @@ -1008,40 +1052,6 @@ azmcp sql server entra-admin list --subscription \ --resource-group \ --server -# Create a SQL database (supports optional performance and configuration parameters) -azmcp sql db create --subscription \ - --resource-group \ - --server \ - --database \ - [--sku-name ] \ - [--sku-tier ] \ - [--sku-capacity ] \ - [--collation ] \ - [--max-size-bytes ] \ - [--elastic-pool-name ] \ - [--zone-redundant ] \ - [--read-scale ] - -# Update an existing SQL database (applies only the provided configuration changes) -azmcp sql db update --subscription \ - --resource-group \ - --server \ - --database \ - [--sku-name ] \ - [--sku-tier ] \ - [--sku-capacity ] \ - [--collation ] \ - [--max-size-bytes ] \ - [--elastic-pool-name ] \ - [--zone-redundant ] \ - [--read-scale ] - -# Delete a SQL database (idempotent – succeeds even if the database does not exist) -azmcp sql db delete --subscription \ - --resource-group \ - --server \ - --database - # Create a firewall rule for a SQL server azmcp sql server firewall-rule create --subscription \ --resource-group \ diff --git a/docs/e2eTestPrompts.md b/docs/e2eTestPrompts.md index a5537ab2b7..5df1b245b7 100644 --- a/docs/e2eTestPrompts.md +++ b/docs/e2eTestPrompts.md @@ -192,9 +192,13 @@ This file contains prompts used for end-to-end testing to ensure each tool is in | azmcp_keyvault_certificate_list | List all certificates in the key vault | | azmcp_keyvault_certificate_list | Show me the certificates in the key vault | | azmcp_keyvault_key_create | Create a new key called with the RSA type in the key vault | +| azmcp_keyvault_key_get | Show me the key in the key vault | +| azmcp_keyvault_key_get | Show me the details of the key in the key vault | | azmcp_keyvault_key_list | List all keys in the key vault | | azmcp_keyvault_key_list | Show me the keys in the key vault | | azmcp_keyvault_secret_create | Create a new secret called with value in the key vault | +| azmcp_keyvault_secret_get | Show me the secret in the key vault | +| azmcp_keyvault_secret_get | Show me the details of the secret in the key vault | | azmcp_keyvault_secret_list | List all secrets in the key vault | | azmcp_keyvault_secret_list | Show me the secrets in the key vault | diff --git a/eng/dnx/nuspec/README.md b/eng/dnx/nuspec/README.md index 02be81acae..76eb825935 100644 --- a/eng/dnx/nuspec/README.md +++ b/eng/dnx/nuspec/README.md @@ -57,7 +57,7 @@ If you'd like to use a specific version of the Azure MCP server, you can specify "--source", "https://api.nuget.org/v3/index.json", "--version", - "0.7.1", + "0.8.0", "--yes", "--", "azmcp", diff --git a/eng/vscode/CHANGELOG.md b/eng/vscode/CHANGELOG.md index 47c6511aef..4bfea01002 100644 --- a/eng/vscode/CHANGELOG.md +++ b/eng/vscode/CHANGELOG.md @@ -1,19 +1,34 @@ # Release History -## 0.7.1 (Unreleased) +## 0.8.0 (2025-09-18) ### Added -- Added toast notification to guide users when Azure MCP settings are changed but MCP Autostart is not configured - - Notification includes clear instructions: "Command Palette → MCP: List Servers → Azure MCP → Start/Restart" - - Provides "Open Command Palette" button for quick access to MCP server management - - Only shows when MCP Autostart is disabled to avoid unnecessary notifications +- Added the `--insecure-disable-elicitation` server startup switch. When enabled, the server will bypass user confirmation (elicitation) for tools marked as handling secrets and execute them immediately. This is **INSECURE** and meant only for controlled automation scenarios (e.g., CI or disposable test environments) because it removes a safety barrier that helps prevent accidental disclosure of sensitive data. [[#486](https://github.com/microsoft/mcp/pull/486)] +- Enhanced Azure authentication with targeted credential selection via the `AZURE_TOKEN_CREDENTIALS` environment variable: [[#56](https://github.com/microsoft/mcp/pull/56)] + - `"dev"`: Development credentials (Visual Studio → Visual Studio Code → Azure CLI → Azure PowerShell → Azure Developer CLI) + - `"prod"`: Production credentials (Environment → Workload Identity → Managed Identity) + - Specific credential names (e.g., `"AzureCliCredential"`): Target only that credential + - Improved Visual Studio Code credential error handling with proper exception wrapping for credential chaining + - Replaced custom `DefaultAzureCredential` implementation with explicit credential chain for better control and transparency + - For more details, see [Controlling Authentication Methods with AZURE_TOKEN_CREDENTIALS](https://github.com/microsoft/mcp/blob/main/servers/Azure.Mcp.Server/TROUBLESHOOTING.md#controlling-authentication-methods-with-azure_token_credentials) +- Added support for updating Azure SQL databases via the command `azmcp_sql_db_update`. [[#488](https://github.com/microsoft/mcp/pull/488)] +- Added support for listing Event Grid subscriptions via the command `azmcp_eventgrid_subscription_list`. [[#364](https://github.com/microsoft/mcp/pull/364)] +- Added support for listing Application Insights code optimization recommendations across components via the command `azmcp_applicationinsights_recommendation_list`. [#387](https://github.com/microsoft/mcp/pull/387) +- **Errata**: The following was announced as part of release `0.7.0, but was not actually included then. + - Added support for creating and deleting SQL databases via the commands `azmcp_sql_db_create` and `azmcp_sql_db_delete`. [[#434](https://github.com/microsoft/mcp/pull/434)] +- Restored support for the following Key Vault commands: [[#506](https://github.com/microsoft/mcp/pull/506)] + - `azmcp_keyvault_key_get` + - `azmcp_keyvault_secret_get` ### Changed -- Redesigned how conditionally required options are handled. Commands now use explicit option registration via extension methods (`.AsRequired()`, `.AsOptional()`) instead of legacy patterns (`UseResourceGroup()`, `RequireResourceGroup()`). [[#452](https://github.com/microsoft/mcp/pull/452)] -### Fixed +- **Breaking:** Redesigned how conditionally required options are handled. Commands now use explicit option registration via extension methods (`.AsRequired()`, `.AsOptional()`) instead of legacy patterns (`UseResourceGroup()`, `RequireResourceGroup()`). [[#452](https://github.com/microsoft/mcp/pull/452)] +- **Breaking:** Removed support for the `AZURE_MCP_INCLUDE_PRODUCTION_CREDENTIALS` environment variable. Use `AZURE_TOKEN_CREDENTIALS` instead for more flexible credential selection. For migration details, see [Controlling Authentication Methods with AZURE_TOKEN_CREDENTIALS](https://github.com/microsoft/mcp/blob/main/servers/Azure.Mcp.Server/TROUBLESHOOTING.md#controlling-authentication-methods-with-azure_token_credentials). [[#56](https://github.com/microsoft/mcp/pull/56)] +- Enhanced AKS nodepool information with comprehensive properties. [[#454](https://github.com/microsoft/mcp/pull/454)] +- Merged `azmcp_appconfig_kv_lock` and `azmcp_appconfig_kv_unlock` into `azmcp_appconfig_kv_lock_set` which can handle locking or unlocking a key-value based on the `--lock` parameter. [[#485](https://github.com/microsoft/mcp/pull/485)] +- Update `azmcp_foundry_models_deploy` to use "GenericResource" for deploying models to Azure AI Services. [[#456](https://github.com/microsoft/mcp/pull/456)] ## 0.7.0 (2025-09-16) diff --git a/servers/Azure.Mcp.Server/CHANGELOG.md b/servers/Azure.Mcp.Server/CHANGELOG.md index 2c5b11616f..675d98bb3e 100644 --- a/servers/Azure.Mcp.Server/CHANGELOG.md +++ b/servers/Azure.Mcp.Server/CHANGELOG.md @@ -2,32 +2,41 @@ The Azure MCP Server updates automatically by default whenever a new release comes out 🚀. We ship updates twice a week on Tuesdays and Thursdays 😊 -## 0.7.1 (Unreleased) +## 0.8.0 (2025-09-18) ### Features Added - -- Enhanced AKS nodepool information with comprehensive properties. [[#454](https://github.com/microsoft/mcp/issues/454)] -- Enhanced Azure authentication with targeted credential selection via `AZURE_TOKEN_CREDENTIALS` environment variable: + +- Added the `--insecure-disable-elicitation` server startup switch. When enabled, the server will bypass user confirmation (elicitation) for tools marked as handling secrets and execute them immediately. This is **INSECURE** and meant only for controlled automation scenarios (e.g., CI or disposable test environments) because it removes a safety barrier that helps prevent accidental disclosure of sensitive data. [[#486](https://github.com/microsoft/mcp/pull/486)] +- Enhanced Azure authentication with targeted credential selection via the `AZURE_TOKEN_CREDENTIALS` environment variable: [[#56](https://github.com/microsoft/mcp/pull/56)] - `"dev"`: Development credentials (Visual Studio → Visual Studio Code → Azure CLI → Azure PowerShell → Azure Developer CLI) - `"prod"`: Production credentials (Environment → Workload Identity → Managed Identity) - Specific credential names (e.g., `"AzureCliCredential"`): Target only that credential - Improved Visual Studio Code credential error handling with proper exception wrapping for credential chaining - Replaced custom `DefaultAzureCredential` implementation with explicit credential chain for better control and transparency - For more details, see [Controlling Authentication Methods with AZURE_TOKEN_CREDENTIALS](https://github.com/microsoft/mcp/blob/main/servers/Azure.Mcp.Server/TROUBLESHOOTING.md#controlling-authentication-methods-with-azure_token_credentials) -- Added support for updating Azure SQL databases via the command `azmcp_sql_db_update`. [#488](https://github.com/microsoft/mcp/issues/488) -- Added support for listing Application Insights code optimization recommendations across components via the command `azmcp_applicationinsights_recommendation_list` (returns up to 20 recommendations aggregated across resource groups). [#387](https://github.com/microsoft/mcp/pull/387) +- Enhanced AKS nodepool information with comprehensive properties. [[#454](https://github.com/microsoft/mcp/pull/454)] +- Added support for updating Azure SQL databases via the command `azmcp_sql_db_update`. [[#488](https://github.com/microsoft/mcp/pull/488)] +- Added support for listing Event Grid subscriptions via the command `azmcp_eventgrid_subscription_list`. [[#364](https://github.com/microsoft/mcp/pull/364)] +- Added support for listing Application Insights code optimization recommendations across components via the command `azmcp_applicationinsights_recommendation_list`. [#387](https://github.com/microsoft/mcp/pull/387) +- **Errata**: The following was announced as part of release `0.7.0, but was not actually included then. + - Added support for creating and deleting SQL databases via the commands `azmcp_sql_db_create` and `azmcp_sql_db_delete`. [[#434](https://github.com/microsoft/mcp/pull/434)] +- Restored support for the following Key Vault commands: [[#506](https://github.com/microsoft/mcp/pull/506)] + - `azmcp_keyvault_key_get` + - `azmcp_keyvault_secret_get` ### Breaking Changes - Redesigned how conditionally required options are handled. Commands now use explicit option registration via extension methods (`.AsRequired()`, `.AsOptional()`) instead of legacy patterns (`UseResourceGroup()`, `RequireResourceGroup()`). [[#452](https://github.com/microsoft/mcp/pull/452)] -- Removed support for `AZURE_MCP_INCLUDE_PRODUCTION_CREDENTIALS` environment variable. Use `AZURE_TOKEN_CREDENTIALS` instead for more flexible credential selection. For migration details, see [Controlling Authentication Methods with AZURE_TOKEN_CREDENTIALS](https://github.com/microsoft/mcp/blob/main/servers/Azure.Mcp.Server/TROUBLESHOOTING.md#controlling-authentication-methods-with-azure_token_credentials). -- Merged `azmcp_appconfig_kv_lock` and `azmcp_appconfig_kv_unlock` into `azmcp_appconfig_kv_lock_set` which can handle locking or unlocking a key-value based on the `--lock` parameter. - -### Bugs Fixed +- Removed support for the `AZURE_MCP_INCLUDE_PRODUCTION_CREDENTIALS` environment variable. Use `AZURE_TOKEN_CREDENTIALS` instead for more flexible credential selection. For migration details, see [Controlling Authentication Methods with AZURE_TOKEN_CREDENTIALS](https://github.com/microsoft/mcp/blob/main/servers/Azure.Mcp.Server/TROUBLESHOOTING.md#controlling-authentication-methods-with-azure_token_credentials). [[#56](https://github.com/microsoft/mcp/pull/56)] +- Merged `azmcp_appconfig_kv_lock` and `azmcp_appconfig_kv_unlock` into `azmcp_appconfig_kv_lock_set` which can handle locking or unlocking a key-value based on the `--lock` parameter. [[#485](https://github.com/microsoft/mcp/pull/485)] ### Other Changes -- Update the Foundry tool to use GenericResource for deploying models to Azure AI Services. [[#456](https://github.com/microsoft/mcp/pull/456)] +- Update `azmcp_foundry_models_deploy` to use "GenericResource" for deploying models to Azure AI Services. [[#456](https://github.com/microsoft/mcp/pull/456)] + +#### Dependency Updates + +- Replaced the `Azure.Bicep.Types.Az` dependency with `Microsoft.Azure.Mcp.AzTypes.Internal.Compact`. [[#472](https://github.com/microsoft/mcp/pull/472)] ## 0.7.0 (2025-09-16) diff --git a/servers/Azure.Mcp.Server/src/Azure.Mcp.Server.csproj b/servers/Azure.Mcp.Server/src/Azure.Mcp.Server.csproj index 3b22cf8ea8..9be2a5b294 100644 --- a/servers/Azure.Mcp.Server/src/Azure.Mcp.Server.csproj +++ b/servers/Azure.Mcp.Server/src/Azure.Mcp.Server.csproj @@ -1,6 +1,6 @@ - 0.7.1 + 0.8.0 azmcp Azure MCP Server Azure MCP Server - Model Context Protocol implementation for Azure diff --git a/tools/Azure.Mcp.Tools.KeyVault/src/KeyVaultSetup.cs b/tools/Azure.Mcp.Tools.KeyVault/src/KeyVaultSetup.cs index dfb030e115..efdb8ed838 100644 --- a/tools/Azure.Mcp.Tools.KeyVault/src/KeyVaultSetup.cs +++ b/tools/Azure.Mcp.Tools.KeyVault/src/KeyVaultSetup.cs @@ -36,12 +36,12 @@ public void RegisterCommands(CommandGroup rootGroup, ILoggerFactory loggerFactor keyVault.AddSubGroup(certificate); keys.AddCommand("list", new KeyListCommand(loggerFactory.CreateLogger())); - //keys.AddCommand("get", new KeyGetCommand(loggerFactory.CreateLogger())); + keys.AddCommand("get", new KeyGetCommand(loggerFactory.CreateLogger())); keys.AddCommand("create", new KeyCreateCommand(loggerFactory.CreateLogger())); secret.AddCommand("list", new SecretListCommand(loggerFactory.CreateLogger())); secret.AddCommand("create", new SecretCreateCommand(loggerFactory.CreateLogger())); - //secret.AddCommand("get", new SecretGetCommand(loggerFactory.CreateLogger())); + secret.AddCommand("get", new SecretGetCommand(loggerFactory.CreateLogger())); certificate.AddCommand("list", new CertificateListCommand(loggerFactory.CreateLogger())); certificate.AddCommand("get", new CertificateGetCommand(loggerFactory.CreateLogger())); diff --git a/tools/Azure.Mcp.Tools.KeyVault/tests/Azure.Mcp.Tools.KeyVault.LiveTests/KeyVaultCommandTests.cs b/tools/Azure.Mcp.Tools.KeyVault/tests/Azure.Mcp.Tools.KeyVault.LiveTests/KeyVaultCommandTests.cs index 3fa6928889..44791a6295 100644 --- a/tools/Azure.Mcp.Tools.KeyVault/tests/Azure.Mcp.Tools.KeyVault.LiveTests/KeyVaultCommandTests.cs +++ b/tools/Azure.Mcp.Tools.KeyVault/tests/Azure.Mcp.Tools.KeyVault.LiveTests/KeyVaultCommandTests.cs @@ -29,7 +29,7 @@ public async Task Should_list_keys() Assert.NotEmpty(keys.EnumerateArray()); } - [Fact(Skip = "Test temporarily disabled")] + [Fact] public async Task Should_get_key() { // Created in keyvault.bicep.