oshaani MCP Marketplace
Sign in

← Documentation

Azure MCP Cloud

Explore subscriptions, resource groups, VMs and AKS clusters, query Azure Monitor metrics and Log Analytics with KQL.

2 credits / tool call

Quick start

  1. Add a Azure connection with the settings below, then click Test configuration.
  2. Create an API key for your agent.
  3. Paste the key below, click Test endpoint, and copy the configuration for your platform.
Endpointhttps://market.oshaani.com/azure (your default connection) or https://market.oshaani.com/azure/<connection-id>
TransportStreamable HTTP (stateless, JSON responses). MCP protocol versions 2024-11-05 to 2025-11-25 and 2026-07-28.
AuthenticationAuthorization: Bearer <API key>, using a key from the API keys page.

Agent configuration

The default URL uses your organisation's default Azure connection; a URL with an ID pins one connection.
Get a key
The key is filled into the snippets below. It stays in this page and is only sent with the test request.
Runs initialize and tools/list against the endpoint, exactly like an agent. No credits are charged.

Any MCP client that supports remote (Streamable HTTP) servers with custom headers.

{
  "name": "azure",
  "transport": "streamable-http",
  "url": "https://market.oshaani.com/azure",
  "headers": {
    "Authorization": "Bearer YOUR_API_KEY"
  }
}

Connection settings

Entered once per connection on market.oshaani.com. Secrets are encrypted and never shown again or sent to agents.

SettingTypeDescription
Directory (tenant) ID
tenant_id required
string
pattern ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
Application (client) ID
client_id required
string
pattern ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
Client secret
client_secret required secret
string App registration > Certificates & secrets
Default subscription ID
subscription_id required
string Grant the app the Reader role on it
pattern ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
Log Analytics workspace ID
log_analytics_workspace_id
string Optional, for query_logs (needs Log Analytics Reader)
pattern ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$

Tools (7)

list_subscriptions read-only

List subscriptions the service principal can access

No arguments.

list_resource_groups read-only

List resource groups in a subscription

ArgumentTypeDescription
subscription_id string Subscription ID; defaults to the connection's subscription
pattern ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$

list_resources read-only

List resources, optionally within a resource group or of one type

ArgumentTypeDescription
resource_group string Resource group name
pattern ^[-\w._()]{1,90}$
resource_type string e.g. Microsoft.Web/sites
pattern ^[\w.]+/[\w./]+$
limit integer
default 200

min 1, max 1000
subscription_id string Subscription ID; defaults to the connection's subscription
pattern ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$

list_virtual_machines read-only

List virtual machines with size, OS and power state

ArgumentTypeDescription
resource_group string Resource group name
pattern ^[-\w._()]{1,90}$
subscription_id string Subscription ID; defaults to the connection's subscription
pattern ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$

list_aks_clusters read-only

List AKS (Kubernetes) clusters with version, node pools and state

ArgumentTypeDescription
subscription_id string Subscription ID; defaults to the connection's subscription
pattern ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$

get_metrics read-only

Get Azure Monitor metrics for a resource (e.g. CPU, requests, latency)

ArgumentTypeDescription
resource_id required string Full resource ID from list_resources
pattern ^/subscriptions/[^?#]+$
metric_names required array of string e.g. ['Percentage CPU']
timespan string
default "PT1H"
ISO 8601 duration, e.g. PT1H, PT30M, P1D
pattern ^P(?:\d+D)?(?:T(?:\d+H)?(?:\d+M)?(?:\d+S)?)?$
interval string
default "PT5M"
ISO 8601 duration, e.g. PT1H, PT30M, P1D
pattern ^P(?:\d+D)?(?:T(?:\d+H)?(?:\d+M)?(?:\d+S)?)?$
aggregation string
default "Average"

pattern ^(Average|Maximum|Minimum|Total|Count)(,(Average|Maximum|Minimum|Total|Count))*$

query_logs read-only

Run a KQL query against the connection's Log Analytics workspace

ArgumentTypeDescription
query required string KQL, e.g. 'AzureActivity | summarize count() by OperationNameValue | top 10 by count_'
min length 1
timespan string
default "PT1H"
ISO 8601 duration, e.g. PT1H, PT30M, P1D
pattern ^P(?:\d+D)?(?:T(?:\d+H)?(?:\d+M)?(?:\d+S)?)?$
max_rows integer
default 500

min 1, max 5000

Billing & errors

Each successful tool call costs 2 oshaani.com credits. initialize, tools/list, failed calls and timeouts are free.

JSON-RPC codeMeaning
-32054 (HTTP 401)Missing, unknown or revoked API key
-32053 (HTTP 404)No Azure connection configured for your organisation, or the connection ID is wrong
-32055 (HTTP 403)Connection disabled or origin not allowed
-32052 (HTTP 429)Rate limit reached; retry after a minute
-32050Not enough oshaani.com credits for the call
-32051Billing temporarily unavailable; the call was not run

Errors from Azure itself (bad IDs, permissions) come back as tool results with isError: true so the agent can read and correct them. See the Azure API documentation.