Skip to main content
Glama

Azure MCP Server

Official
MIT License
1,161
  • Linux
  • Apple
CosmosCommandTests.cs8.43 kB
// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. using System.Text.Json; using AzureMcp.Tests; using AzureMcp.Tests.Client; using AzureMcp.Tests.Client.Helpers; using Xunit; namespace AzureMcp.Cosmos.LiveTests; public class CosmosCommandTests(LiveTestFixture liveTestFixture, ITestOutputHelper output) : CommandTestsBase(liveTestFixture, output), IClassFixture<LiveTestFixture>, IClassFixture<CosmosDbFixture> { [Fact] public async Task Should_list_storage_accounts_by_subscription_id() { var result = await CallToolAsync( "azmcp_cosmos_database_list", new() { { "subscription", Settings.SubscriptionId }, { "account", Settings.ResourceBaseName } }); var databasesArray = result.AssertProperty("databases"); Assert.Equal(JsonValueKind.Array, databasesArray.ValueKind); Assert.NotEmpty(databasesArray.EnumerateArray()); } [Fact] public async Task Should_list_cosmos_database_containers() { var result = await CallToolAsync( "azmcp_cosmos_database_container_list", new() { { "subscription", Settings.SubscriptionId }, { "account", Settings.ResourceBaseName }, { "database", "ToDoList" } }); var containersArray = result.AssertProperty("containers"); Assert.Equal(JsonValueKind.Array, containersArray.ValueKind); Assert.NotEmpty(containersArray.EnumerateArray()); } [Fact] public async Task Should_list_cosmos_database_containers_by_database_name() { var result = await CallToolAsync( "azmcp_cosmos_database_container_list", new() { { "subscription", Settings.SubscriptionId }, { "account", Settings.ResourceBaseName }, { "database", "ToDoList" } }); var containersArray = result.AssertProperty("containers"); Assert.Equal(JsonValueKind.Array, containersArray.ValueKind); Assert.NotEmpty(containersArray.EnumerateArray()); } [Fact] public async Task Should_query_cosmos_database_container_items() { var result = await CallToolAsync( "azmcp_cosmos_database_container_item_query", new() { { "subscription", Settings.SubscriptionId }, { "account", Settings.ResourceBaseName }, { "database", "ToDoList" }, { "container", "Items" } }); var itemsArray = result.AssertProperty("items"); Assert.Equal(JsonValueKind.Array, itemsArray.ValueKind); Assert.NotEmpty(itemsArray.EnumerateArray()); } [Fact] public async Task Should_list_cosmos_accounts() { var result = await CallToolAsync( "azmcp_cosmos_account_list", new() { { "subscription", Settings.SubscriptionId } }); var accountsArray = result.AssertProperty("accounts"); Assert.Equal(JsonValueKind.Array, accountsArray.ValueKind); Assert.NotEmpty(accountsArray.EnumerateArray()); } [Fact] public async Task Should_show_single_item_from_cosmos_account() { var dbResult = await CallToolAsync( "azmcp_cosmos_database_list", new() { { "subscription", Settings.SubscriptionId }, { "account", Settings.ResourceBaseName } } ); var databases = dbResult.AssertProperty("databases"); Assert.Equal(JsonValueKind.Array, databases.ValueKind); var dbEnum = databases.EnumerateArray(); Assert.True(dbEnum.Any()); // The agent will choose one, for this test we're going to take the first one var firstDatabase = dbEnum.First(); string dbName = firstDatabase.ValueKind == JsonValueKind.String ? firstDatabase.GetString()! : firstDatabase.ValueKind == JsonValueKind.Object ? firstDatabase.GetProperty("name").GetString()! : throw new InvalidOperationException($"Unexpected database element ValueKind: {firstDatabase.ValueKind}"); Assert.False(string.IsNullOrEmpty(dbName)); var containerResult = await CallToolAsync( "azmcp_cosmos_database_container_list", new() { { "subscription", Settings.SubscriptionId }, { "account", Settings.ResourceBaseName }, { "database", dbName! } }); var containers = containerResult.AssertProperty("containers"); Assert.Equal(JsonValueKind.Array, containers.ValueKind); var contEnum = containers.EnumerateArray(); Assert.True(contEnum.Any()); // The agent will choose one, for this test we're going to take the first one var firstContainer = contEnum.First(); string containerName = firstContainer.ValueKind == JsonValueKind.String ? firstContainer.GetString()! : firstContainer.ValueKind == JsonValueKind.Object ? firstContainer.GetProperty("name").GetString()! : throw new InvalidOperationException($"Unexpected container element ValueKind: {firstContainer.ValueKind}"); Assert.False(string.IsNullOrEmpty(containerName)); var itemResult = await CallToolAsync( "azmcp_cosmos_database_container_item_query", new() { { "subscription", Settings.SubscriptionId }, { "account", Settings.ResourceBaseName }, { "database", dbName! }, { "container", containerName! } }); var items = itemResult.AssertProperty("items"); Assert.Equal(JsonValueKind.Array, items.ValueKind); Assert.True(items.EnumerateArray().Any()); } [Fact] public async Task Should_list_and_query_multiple_databases_and_containers() { var dbResult = await CallToolAsync( "azmcp_cosmos_database_list", new() { { "subscription", Settings.SubscriptionId }, { "account", Settings.ResourceBaseName } } ); var databases = dbResult.AssertProperty("databases"); Assert.Equal(JsonValueKind.Array, databases.ValueKind); var databasesEnum = databases.EnumerateArray(); Assert.True(databasesEnum.Any()); foreach (var db in databasesEnum) { string dbName = db.ValueKind == JsonValueKind.String ? db.GetString()! : db.ValueKind == JsonValueKind.Object ? db.GetProperty("name").GetString()! : throw new InvalidOperationException($"Unexpected database element ValueKind: {db.ValueKind}"); Assert.False(string.IsNullOrEmpty(dbName)); var containerResult = await CallToolAsync( "azmcp_cosmos_database_container_list", new() { { "subscription", Settings.SubscriptionId }, { "account", Settings.ResourceBaseName! }, { "database", dbName! } }); var containers = containerResult.AssertProperty("containers"); Assert.Equal(JsonValueKind.Array, containers.ValueKind); var contEnum = containers.EnumerateArray(); foreach (var container in contEnum) { string containerName = container.ValueKind == JsonValueKind.String ? container.GetString()! : container.ValueKind == JsonValueKind.Object ? container.GetProperty("name").GetString()! : throw new InvalidOperationException($"Unexpected container element ValueKind: {container.ValueKind}"); Assert.False(string.IsNullOrEmpty(containerName)); var itemResult = await CallToolAsync( "azmcp_cosmos_database_container_item_query", new() { { "subscription", Settings.SubscriptionId }, { "account", Settings.ResourceBaseName! }, { "database", dbName! }, { "container", containerName! } }); var items = itemResult.AssertProperty("items"); Assert.Equal(JsonValueKind.Array, items.ValueKind); } } } }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Azure/azure-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server