Skip to main content
Glama
gokulchukka

Power BI MCP Server

by gokulchukka

Server Quality Checklist

58%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.1.0

  • Disambiguation5/5

    Each tool targets a distinct resource or action: workspaces, datasets, reports, dashboards, dataset refresh, refresh history, DAX query, and report export. There is no overlap or ambiguity.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern (e.g., list_workspaces, refresh_dataset, execute_dax_query). The style is uniform and predictable.

    Tool Count5/5

    Eight tools is a well-scoped set for a Power BI server focused on listing resources and performing common actions like refresh, query, and export. No redundant tools.

    Completeness3/5

    The surface covers listing and key actions (refresh, query, export), but lacks get-by-id operations and any create/update/delete tools. This is a notable gap for full lifecycle management, though the server appears oriented toward read and operational tasks.

  • Average 3.6/5 across 8 of 8 tools scored.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 1 commit in the last 12 weeks
    • No stable releases found
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI status not available
  • Add a LICENSE file by following GitHub's guide. Once GitHub recognizes the license, the system will automatically detect it within a few hours.

    If the license does not appear after some time, you can manually trigger a new scan using the MCP server admin interface.

    MCP servers without a LICENSE cannot be installed.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • 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. It only mentions returning tabular results, but does not disclose whether the operation is read-only, any required permissions, error behavior, or other side effects. This is a significant gap for a query execution 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, front-loaded sentence that directly states the primary action and outcome. There is no wasted wording, making it highly concise and clearly 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?

    The description is minimal and does not provide enough context for the agent to understand when to use the tool, parameter semantics, or behavioral implications. Although an output schema exists, the lack of annotations and usage guidance leaves the description incomplete for effective tool selection and invocation.

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

    Parameters1/5

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

    The input schema has 0% description coverage, and the description does not compensate by explaining any of the parameters. It does not clarify what dataset_id, query, or workspace_id mean or how they relate. The only clue is 'DAX query' implying the query parameter, but it does not provide meaningful semantic detail.

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

    Purpose5/5

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

    The description clearly states the tool's action: 'Execute a DAX query against a dataset' and specifies the output ('return tabular results'). This distinguishes it from sibling tools such as list_datasets, refresh_dataset, and export_report, which serve different purposes.

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

    Usage Guidelines3/5

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

    The description implies usage when a DAX query needs to be executed, and it is clear from context that this is the only tool for that purpose. However, it does not explicitly state when to use it versus alternatives, nor does it mention any prerequisites or exclusions.

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

  • Behavior2/5

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

    With no annotations, the description carries full responsibility for disclosing behavioral traits. It only states 'Trigger a dataset refresh,' implying a state change, but omits details about asynchronous execution, required permissions, failure modes, or side effects. This is a significant gap 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 extremely concise—two short sentences with no filler. The action is front-loaded, and the second sentence adds useful parameter-specific information. It is appropriately sized for the tool's simplicity.

    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?

    Despite having an output schema (so return values are covered), the description lacks essential context for a mutation tool: no usage guidance, no behavioral transparency, and incomplete parameter semantics. It does not sufficiently support an agent selecting and invoking the tool correctly.

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

    Parameters2/5

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

    Schema description coverage is 0%, so the description must compensate. It adds meaning only for notify_option by listing valid values, but provides no explanation for dataset_id or workspace_id. With 3 parameters, this partial coverage is inadequate.

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

    Purpose5/5

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

    The description uses the specific verb 'Trigger' with the resource 'dataset refresh', making the action unambiguous. It distinguishes from sibling tools like list_datasets (listing) and get_dataset_refresh_history (history) by clearly indicating a mutation action.

    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 guidance is provided on when to use this tool vs alternatives, such as checking refresh history or listing datasets. The description only states what the tool does, leaving the agent to infer appropriate usage contexts.

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

  • Behavior2/5

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

    No annotations are provided, so the description carries full responsibility for behavioral disclosure. It indicates the operation is asynchronous ('Start an export job') but does not mention required permissions, job lifecycle, side effects, or how to retrieve the result. This is a significant gap for a mutation-like operation.

    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, front-loaded sentence with no unnecessary words. It directly states the action and provides the key parameter detail. Extremely 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 three parameters and an output schema, the description only addresses one parameter and lacks context on job handling, workspace scope, or how the export artifacts are delivered. It is insufficient for the agent to understand the full workflow, even with the output schema present.

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

    Parameters2/5

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

    Schema description coverage is 0%, so the description must compensate. It partially does for 'format' by giving examples ('PDF, PPTX, PNG, etc.'), but the list is vague with 'etc.' and does not cover 'report_id' or 'workspace_id' at all. Meaning is added only for one parameter and incompletely.

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

    Purpose5/5

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

    The description clearly states the tool's purpose with a specific verb and resource: 'Start an export job for a report.' It differentiates from sibling tools (list_reports, refresh_dataset, execute_dax_query) as the only export-related tool. The mention of format adds specificity.

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

    Usage Guidelines3/5

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

    The description implies usage context (exporting a report) but does not explicitly state when to use it vs. alternatives or any exclusions. There is no reference to sibling tools or conditions under which this tool is preferred, so guidance remains implicit.

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

  • Behavior3/5

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

    With no annotations provided, the description carries the burden of behavioral disclosure. It adds the ordering behavior ('most recent first'), which is useful, but it does not explicitly state read-only safety, pagination behavior, or error conditions. The name 'get' implies a read, but no explicit safety guarantee is given.

    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, front-loaded sentence with no redundant wording. Every word contributes to conveying the core function and ordering, making it appropriately concise.

    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?

    The tool has 3 parameters and no annotations, yet the description is extremely sparse. It does not explain the meaning or purpose of 'top' or 'workspace_id', nor provide usage guidance. The output schema helps with return values, but the description alone is insufficient for an agent to use the tool correctly without additional inference.

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

    Parameters1/5

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

    Schema description coverage is 0%, so the description must compensate by explaining parameter semantics. It does not mention 'dataset_id', 'top', or 'workspace_id' at all, adding no meaning beyond the schema's type and title information. This is a critical gap for correct invocation.

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

    Purpose5/5

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

    The description clearly identifies the action ('Return'), the resource ('refresh history entries for a dataset'), and the ordering ('most recent first'). This distinguishes it from sibling tools like refresh_dataset (which performs a refresh) and the listing tools.

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

    Usage Guidelines3/5

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

    The description implies usage—when you need refresh history for a dataset—but does not explicitly state when to use it versus alternatives. No exclusions or alternative tool names are mentioned, so guidance is minimal.

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

  • Behavior2/5

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

    No annotations are provided, so the description must carry the full burden of behavioral disclosure. 'List' implies a read-only operation, but the description does not explicitly confirm safety, mention auth requirements, describe what is returned, or note any side effects. It adds minimal behavioral context beyond the tool's 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 a single, clear sentence that front-loads the main action and resource. It uses no unnecessary words and directly conveys the essential function and the optional parameter, earning its place with zero waste.

    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 and the presence of an output schema, the description provides an adequate baseline. However, it lacks context about filtering behavior, pagination, or permission implications, which could be important for an agent deciding whether to call this tool among several list-based siblings. The description is minimally sufficient but not fully informative.

    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 description partially compensates for the 0% schema coverage by explaining that workspace_id is optional and represents a workspace (group) ID. However, it does not explain the format, constraints, or what happens when null. The schema names the parameter, so description adds understanding of its semantic role, but gaps remain.

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

    Purpose5/5

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

    The description clearly states the action 'List reports' with a specific resource, distinguishing it from sibling tools like list_workspaces, list_datasets, and list_dashboards. The optional scoping to a workspace (group) ID adds specific context that further clarifies the tool's function.

    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. Although sibling list tools exist, there is no comparison, no mention of preferred use cases, and no exclusions. The optional workspace scoping is mentioned but not framed as a decision criterion.

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

  • Behavior2/5

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

    No annotations are provided, and the description only states the basic list operation without disclosing behavioral traits such as pagination, sorting, sorting order, or permission requirements. It adds minimal information beyond the input schema.

    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 sentence, front-loaded with the action verb, and contains no redundant words. It is highly concise.

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

    Completeness4/5

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

    Given the tool's simplicity (one optional parameter, output schema present), the description is adequately complete for basic usage. It covers the core function and the optional filter, though it omits potential behavioral details like sorting or permissions.

    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?

    Schema description coverage is 0% in the description, but the description clarifies the workspace_id parameter as a 'workspace (group) ID' and signals its optionality. This adds meaning beyond the schema's basic type and title, compensating for the coverage gap.

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

    Purpose5/5

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

    The description clearly states 'List dashboards' with a specific verb and resource, and the optional workspace scoping distinguishes it from sibling tools like list_workspaces and list_datasets.

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

    Usage Guidelines4/5

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

    The description provides clear context for when to use the tool (listing dashboards) and mentions the optional workspace scoping, giving a useful usage hint. It does not explicitly name alternatives or exclusions, but the resource-specific context is sufficient.

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

  • Behavior3/5

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

    No annotations are provided, so the description carries the burden for behavioral disclosure. It adds the useful behavior of optional workspace scoping, but does not mention any other behavioral traits such as pagination, permissions, or filtering behavior beyond the workspace scope. For a simple list operation, this is acceptable but leaves some 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?

    A single sentence that is front-loaded with the action and immediately describes the optional parameter. Every word earns its place; there is no waste.

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

    Completeness4/5

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

    The tool has one optional parameter and an output schema, so the description does not need to explain return values. The description covers the scanning behavior and the parameter semantics. However, given the absence of annotations and the existence of sibling tools, a brief note on when to prefer this over list_reports would have made it fully complete, but overall it is sufficient for a simple list operation.

    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 schema has zero description coverage, but the description explicitly states 'optionally scoped to a workspace (group) ID', which explains the purpose of the workspace_id parameter. This compensates for the lack of schema descriptions, though it does not specify format or constraints.

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

    Purpose5/5

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

    The description clearly states the tool's action ('List datasets') and its resource (datasets), distinguishing it from sibling tools like list_workspaces, list_reports, and list_dashboards. The optional workspace scoping is a specific qualifier that further clarifies the purpose.

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

    Usage Guidelines4/5

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

    The description provides clear context on when to use the tool (to list datasets, optionally scoped by workspace ID). It does not explicitly mention alternatives or when not to use, but the sibling list makes the differentiation clear, and the optional scope gives a targeted use case.

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

  • Behavior4/5

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

    With no annotations, the description carries the burden of disclosure. It adds an important behavioral constraint: only workspaces 'accessible to the caller' are returned, which goes beyond the tool name. It does not detail pagination or auth requirements, but for a simple list operation with an output schema, this is adequate.

    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 concise sentence, front-loads the action ('List'), and contains no filler or redundant language.

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

    Completeness5/5

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

    For a zero-parameter list operation with an output schema, the description fully communicates the tool's purpose and scope. It is complete enough for an agent to select and invoke it correctly.

    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 zero parameters, so there is nothing for the description to clarify beyond the schema. Baseline of 4 is appropriate because no parameter information is needed.

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

    Purpose5/5

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

    The description uses a specific verb 'List' and identifies the resource as 'Power BI workspaces (groups)' with the scope 'accessible to the caller'. This clearly distinguishes it from sibling list tools aimed at datasets, reports, or dashboards.

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

    Usage Guidelines4/5

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

    The description clearly indicates the tool is for listing workspaces, which implies when to use it among sibling list tools. However, it does not explicitly name alternatives or provide when-not-to-use guidance, so it falls short of a 5.

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

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

powerbi-mcp-server MCP server

Copy to your README.md:

Score Badge

powerbi-mcp-server MCP server

Copy to your README.md:

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/gokulchukka/powerbi-mcp-server'

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