Skip to main content
Glama

Claude Desktop용 Azure MCP(모델 컨텍스트 프로토콜)

대장간 배지

Claude Desktop이 Azure 서비스와 상호 작용할 수 있도록 하는 MCP(모델 컨텍스트 프로토콜) 구현입니다. 이 통합을 통해 Claude는 자연어 대화를 통해 Azure 리소스를 직접 쿼리하고 관리할 수 있습니다.

특징

  • Azure 리소스 관리 : Azure 리소스 관리 클라이언트와의 인터페이스

  • 구독 관리 : Azure 구독 나열 및 관리

  • 테넌트 관리 : Azure 테넌트 나열 및 선택

  • 자동 인증 : 유연한 인증 방법을 위해 DefaultAzureCredential을 활용합니다.

  • 오류 처리 : 일시적인 오류에 대한 재시도를 통한 강력한 오류 처리

  • 깔끔한 응답 형식 : Claude Desktop과 호환되는 적절한 형식의 응답

Related MCP server: Cloud PC Management MCP Server

필수 조건

  • Node.js(v18 이상)

  • 클로드 데스크톱 애플리케이션

  • 적절한 권한이 있는 Azure 계정

  • Azure CLI(선택 사항, CLI 기반 인증용)

설치

수동 설치

  1. 저장소를 복제합니다.

지엑스피1

  1. 종속성 설치:

npm install
  1. Claude Desktop 구성:

    • claude_desktop_config.json 엽니다.

    • 다음 MCP 구성을 추가합니다.

{
  "mcpServers": {
    "sequential-thinking": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-sequential-thinking"
      ]
    },
    "azure": {
      "command": "tsx",
      "args": [
        "C:/Users/[YourUsername]/path/to/azure-mcp/src/launcher.ts"
      ]
    }
  }
}

입증

서버는 DefaultAzureCredential을 통해 여러 인증 방법을 지원합니다.

  • 환경 변수

  • 관리형 ID

  • Azure CLI

  • 비주얼 스튜디오 코드

  • 대화형 브라우저

서버는 성공할 때까지 이러한 방법을 순차적으로 자동으로 시도합니다.

용법

  1. Claude Desktop이 실행 중이면 닫으세요(작업 관리자 확인)

  2. Claude Desktop 시작

  3. 이제 채팅에서 다음과 같은 Azure 관련 질문을 할 수 있습니다.

    • "사용 가능한 모든 Azure 계정과 구독을 얻을 수 있나요?"

    • "내 구독의 모든 리소스 그룹 나열"

    • "특정 리소스 그룹의 모든 가상 머신을 보여주세요"

대화 예시

You: Can you get all the available Azure accounts and subscriptions?
Claude: I'll help you list all available Azure tenants and subscriptions.
[Claude will then use the Azure MCP to fetch and display the information]

개발

프로젝트 구조

azure-mcp/
├── src/
│   ├── launcher.ts       # Server entry point
│   ├── AzureServer.ts    # Main MCP server implementation
│   └── LoggerService.ts  # Logging utility
├── package.json
└── README.md

주요 구성 요소

  • AzureMCPServer : MCP 프로토콜을 구현하는 메인 서버 클래스

  • HandleCallTool : 들어오는 도구 요청을 처리합니다.

  • ExecuteWithRetry : 복원력 있는 작업을 위한 재시도 논리를 구현합니다.

문제 해결

  1. 인증 문제 :

    • Azure CLI( az login )를 통해 로그인했는지 확인하세요.

    • 서비스 주체를 사용하는 경우 환경 변수를 확인하세요.

    • Azure 계정에 필요한 권한이 있는지 확인하세요.

  2. 연결 문제 :

    • Claude Desktop 구성 확인

    • 구성 파일의 경로가 설치와 일치하는지 확인하세요.

    • 다른 인스턴스가 실행되고 있지 않은지 확인하세요.

  3. 일반적인 오류 :

    • NO_TENANT : 'select-tenant' 도구를 사용하여 테넌트를 선택합니다.

    • NO_CLIENTS : 적절한 초기화 및 인증을 보장합니다.

    • CODE_EXECUTION_FAILED : Azure 권한 및 연결 확인

기여하다

기여를 환영합니다! 풀 리퀘스트를 제출해 주세요.

기여자

감사의 말

  • MCP 구현을 위한 Claude Desktop 팀

  • 포괄적인 SDK를 위한 Azure SDK 팀

  • AI 서비스 통합을 가능하게 하는 모델 컨텍스트 프로토콜

보안 참고 사항

이 구현은 Azure 보안 모범 사례를 따릅니다.

  • 하드코딩된 자격 증명 없음

  • 보안 자격 증명 체인 구현

  • 적절한 오류 처리 및 정리

보안 문제나 취약점이 있는 경우 문제를 생성하세요.

Available Tools

9 tools
create-resource-groupC

Create a new resource group

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesResource group name
locationYesAzure region
tagsNoResource tags (optional)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. 'Create a new resource group' implies a write/mutation operation, but it doesn't address permissions required, whether this is idempotent, what happens on conflicts, rate limits, or what the response contains. This leaves significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with zero wasted words. It's appropriately sized for a simple creation operation and front-loads the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after creation, error conditions, or behavioral aspects. Given the complexity (creating Azure resources) and lack of structured data, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters (name, location, tags) with their types and descriptions. The description adds no additional parameter information beyond what's in the schema, meeting the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create') and resource ('resource group'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its siblings like 'list-resource-groups' or 'get-resource-details' beyond the obvious creation vs. listing distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, dependencies, or scenarios where this creation operation is appropriate versus other tools in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-resource-detailsC

Get detailed information about a specific resource

ParametersJSON Schema
NameRequiredDescriptionDefault
resourceIdYesAzure Resource ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is a read operation ('Get'), but doesn't cover critical aspects like authentication requirements, rate limits, error conditions, or what 'detailed information' entails. This is inadequate for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple lookup tool and front-loads the core purpose immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'detailed information' includes, potential response formats, or behavioral constraints. For a tool with zero structured metadata, this leaves significant gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the 'resourceId' parameter as an Azure Resource ID. The description adds no additional parameter semantics beyond implying it fetches details for 'a specific resource', which aligns with the schema but doesn't provide extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('detailed information about a specific resource'), making the purpose understandable. However, it doesn't differentiate this tool from potential sibling read operations like 'get-role-definitions' or 'get-user-permissions' beyond the generic 'resource' reference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a resource ID), exclusions, or comparisons to sibling tools like 'list-resource-groups' for broader queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-role-definitionsC

List available role definitions

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoScope for role definitions. Leave empty for subscription level.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a list operation, implying it's read-only, but doesn't specify if it requires authentication, rate limits, pagination behavior, or what the output format looks like. This leaves significant gaps for a tool that interacts with role definitions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It's front-loaded and appropriately sized for a simple list operation, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It doesn't address behavioral aspects like authentication needs, error handling, or output structure, which are crucial for a tool that lists role definitions in a system like Azure. The simplicity of the tool (one optional parameter) doesn't excuse these omissions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'scope' parameter documented as 'Scope for role definitions. Leave empty for subscription level.' The description adds no additional parameter information beyond what the schema provides, so it meets the baseline score of 3 for high schema coverage without compensating value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('available role definitions'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'list-role-assignments' or 'get-user-permissions', but the focus on definitions rather than assignments or user-specific permissions is implied through the wording.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'list-role-assignments' or 'get-user-permissions'. It lacks context about prerequisites, such as needing authentication or specific permissions, and doesn't mention any exclusions or scenarios where other tools might be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-user-permissionsC

Get detailed user permissions by combining role assignments and role definitions

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoScope to check permissions for. Leave empty for subscription level.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It describes the data sources (role assignments and definitions) but lacks behavioral details such as required permissions, rate limits, error handling, or output format. For a tool that likely involves sensitive permissions data, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that conveys the core purpose without unnecessary words. It is front-loaded with the main action. However, it could be slightly more structured by explicitly mentioning the output or usage context to improve clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of permissions data and the lack of annotations and output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., a list of permissions, aggregated view), how permissions are combined, or any behavioral traits. For a tool with no structured output documentation, this leaves significant gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the single parameter 'scope' with its description. The description adds no additional meaning about parameters beyond what the schema provides, such as examples of scope values or how scope affects the permission calculation. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('detailed user permissions'), and explains the mechanism ('by combining role assignments and role definitions'). It distinguishes from siblings like 'get-role-definitions' or 'list-role-assignments' by focusing on the combined result. However, it doesn't explicitly differentiate from all siblings (e.g., 'get-resource-details' might overlap in some contexts).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'list-role-assignments' or 'get-role-definitions'. It mentions the combination of data sources but doesn't specify scenarios where this combined view is preferable over fetching the components separately. No exclusions or prerequisites are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-resource-groupsB

List all resource groups in the selected subscription

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states what the tool does, not behavioral traits like whether it requires authentication, has rate limits, returns paginated results, or what format the output takes. This is inadequate for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without any wasted words. It's appropriately sized for a simple list operation with no parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no parameters and no output schema, the description covers the basic action but lacks context about authentication, subscription selection, or output format. It's minimally viable but has clear gaps given the lack of annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, earning a baseline high score since it doesn't need to compensate for gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List all') and resource ('resource groups in the selected subscription'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'get-resource-details' or 'list-role-assignments', which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get-resource-details' or 'list-tenants'. It mentions 'selected subscription' but doesn't explain how that selection occurs or prerequisites, leaving usage context unclear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-role-assignmentsC

List role assignments for the subscription or resource group

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoScope for role assignments (subscription, resource group, or resource ID). Leave empty for subscription level.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states it's a list operation, implying read-only behavior, but doesn't disclose critical traits like authentication requirements, rate limits, pagination, or what happens if scope is invalid. For a tool with no annotations, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose and appropriately sized for a simple list tool. Every word earns its place, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It doesn't explain return values, error conditions, or behavioral nuances. For a tool that likely returns a list of assignments with potential complexity, more context is needed to be fully helpful to an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the parameter 'scope' fully documented in the schema. The description adds minimal value beyond the schema by mentioning 'subscription or resource group' context, but doesn't provide additional semantics like examples or edge cases. Baseline 3 is appropriate given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('role assignments') with scope context ('for the subscription or resource group'). It distinguishes from siblings like 'get-role-definitions' (definitions vs assignments) and 'get-user-permissions' (permissions vs assignments). However, it doesn't explicitly differentiate from all siblings, keeping it at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It mentions scope but doesn't specify when to use 'list-role-assignments' over 'get-user-permissions' or other sibling tools. There are no explicit when/when-not instructions or named alternatives, resulting in minimal guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-tenantsB

List all available Azure tenants

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'lists all available Azure tenants,' implying a read-only operation, but doesn't specify whether it requires authentication, returns paginated results, or has any rate limits. This leaves gaps in understanding the tool's behavior beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It's front-loaded with the core action ('List all available Azure tenants'), making it easy to parse quickly. Every word contributes directly to the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is adequate but has gaps. It covers the basic purpose but lacks context on usage, authentication needs, or output format, which could be important for an AI agent to use it correctly in a broader Azure management scenario.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100%, so there's no need for parameter details in the description. The description appropriately doesn't mention parameters, which is correct for a parameterless tool, earning a baseline score of 4 for not adding unnecessary information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('Azure tenants'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'select-tenant' or 'list-resource-groups', which would require mentioning this specifically lists tenants rather than resources or role assignments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication), when it's appropriate (e.g., for tenant selection), or contrast with siblings like 'select-tenant' (which might choose a tenant) or 'list-resource-groups' (which lists resources within a tenant).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run-azure-codeC

Run Azure code

ParametersJSON Schema
NameRequiredDescriptionDefault
reasoningYesThe reasoning behind the code
codeYesYour job is to answer questions about Azure environment by writing Javascript code using Azure SDK. The code must adhere to a few rules: - Use the provided client instances: 'resourceClient' for ResourceManagementClient, 'subscriptionClient' for SubscriptionClient, and 'authorizationClient' for AuthorizationManagementClient - DO NOT create new client instances or import Azure SDK packages - Use async/await and promises - Think step-by-step before writing the code - Avoid hardcoded values like Resource IDs - Handle errors gracefully - Handle pagination correctly using for-await-of loops - Data returned must be JSON containing only the minimal amount of data needed - Code MUST "return" a value: string, number, boolean or JSON object
tenantIdNoAzure Tenant ID
subscriptionIdNoAzure Subscription ID

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Run Azure code' implies execution but doesn't disclose critical traits: whether it's read-only or mutative, authentication needs, rate limits, error handling, or output format. The input schema hints at some behaviors (e.g., code rules), but the description itself adds minimal value beyond the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with just two words, making it front-loaded and waste-free. However, this conciseness comes at the cost of under-specification, but per the dimension's focus on size and structure, it earns full marks for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (code execution tool with 4 parameters, no annotations, and no output schema), the description is incomplete. It doesn't explain the tool's behavior, output, or integration context, leaving significant gaps. The input schema provides some context, but the description fails to compensate for the lack of annotations and output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all four parameters. The description adds no additional meaning about parameters beyond what's in the schema. According to the rules, with high schema coverage, the baseline score is 3 when no param info is in the description, which applies here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Run Azure code' is essentially a tautology that restates the tool name 'run-azure-code'. It doesn't specify what kind of Azure code (e.g., SDK operations, queries, management tasks) or what resources it acts upon. While it distinguishes from siblings by focusing on code execution rather than specific resource operations, it remains too vague about the actual purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, context (e.g., vs. direct SDK calls or other tools), or exclusions. Without this, users must infer usage from the input schema, which is insufficient for clear decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

select-tenantC

Select Azure tenant and subscription

ParametersJSON Schema
NameRequiredDescriptionDefault
tenantIdYesAzure Tenant ID to select
subscriptionIdYesAzure Subscription ID to select

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Select') but doesn't explain what this means operationally—e.g., whether it sets a context for subsequent calls, requires specific permissions, has side effects like caching, or returns any confirmation. This is inadequate for a tool that likely influences session state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and resources, making it immediately understandable. This is an excellent example of conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete for a tool that likely manages session context. It doesn't explain the behavioral impact of 'selecting' (e.g., persistence, scope for other tools), return values, or error conditions. For a state-changing operation in a cloud environment, this leaves critical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, clearly documenting both parameters (tenantId and subscriptionId) with their purposes. The description adds no additional parameter details beyond what the schema provides, so it meets the baseline score of 3 without compensating value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Select') and the target resources ('Azure tenant and subscription'), which is specific and unambiguous. However, it doesn't differentiate this tool from sibling tools like 'list-tenants' or explain how selection differs from listing, preventing a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication state), whether it's needed before other operations, or how it relates to siblings like 'list-tenants' for discovery. This leaves the agent with minimal context for appropriate invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 9 tool updates
    • First observedcreate-resource-group
    • First observedget-resource-details
    • First observedget-role-definitions
    • First observedget-user-permissions
    • First observedlist-resource-groups
    • First observedlist-role-assignments
    • First observedlist-tenants
    • First observedrun-azure-code
    • First observedselect-tenant

TDQS

B3.2/5.0
Disambiguation4/5

Most tools have distinct purposes targeting different Azure resources (resource groups, roles, tenants, code execution), but 'get-resource-details' is ambiguous—it could overlap with other specific getters if not clarified. The descriptions help differentiate, but this one tool creates minor confusion.

Naming Consistency4/5

Tools mostly follow a consistent verb_noun pattern (e.g., create-resource-group, list-resource-groups, get-role-definitions), with all using kebab-case. However, 'run-azure-code' deviates slightly by including 'azure' in the noun, breaking the pure resource-focused naming seen elsewhere.

Tool Count5/5

With 9 tools, this server is well-scoped for Azure management, covering core areas like resource groups, roles, tenants, and code execution. Each tool earns its place by addressing a specific aspect of Azure operations without being overly broad or sparse.

Completeness4/5

The toolset provides good coverage for Azure management, including CRUD-like operations (create/list for resource groups) and key administrative functions (roles, tenants). Minor gaps exist, such as missing update/delete for resource groups or more granular resource operations, but agents can likely work around these for common workflows.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

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/kalivaraprasad-gonapa/azure-mcp'

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