GoodData MCP Server
The Model Context Protocol (MCP) server exposes GoodData platform capabilities to external MCP clients. You can connect from your own MCP client, such as a chatbot, IDE assistant, or custom agent, and interact with GoodData using natural language.
AI is becoming part of everyday work, but connecting it safely to company data can be a challenge. Teams want their chatbots, IDE assistants, and custom agents to work with real data, while keeping access secure and consistent.
The GoodData MCP Server lets AI clients connect directly to governed analytics in GoodData, so they always reason with trusted metrics, metadata, and platform capabilities instead of raw or ad-hoc queries.
How It Works
- The MCP server exposes GoodData platform capabilities to AI agents and developer tools.
- It supports the MCP protocol with error handling, multi-workspace isolation, and authentication.
- You connect with your own MCP client using an API token, signed JWT, or Interactive SSO when enabled for your organization.
- Once connected, you can use natural language to trigger GoodData tools, such as listing metrics, creating alerts, creating metrics, running exports, or searching workspace metadata.
- Tool search helps MCP clients discover additional tools on demand, so the server can expose a larger set of capabilities without listing every tool up front.
- In addition to the server’s built-in tools, the server can expose GoodData v1 metadata API operations as MCP tools. These generated tools let agents use supported workspace-scoped API operations directly through MCP, without calling the REST API separately.
The latest supported MCP protocol version is 2025-11-25. Use MCP client libraries that support this protocol version.
Available Tools
Tool search is enabled by default. The initial MCP tool list contains search_tools and call_tool instead of listing every available tool. Tool search changes discovery only. It does not remove tools or change whether an existing tool can be called.
Tool Search
When tool search is enabled, tools/list returns only these two tools:
- search_tools - Search for MCP tools using a natural-language query. Results are ranked using each tool’s name, description, and parameter descriptions.
- call_tool - Call a tool returned by
search_toolsby providing its name and arguments.
All other MCP tools remain available. They are not listed by tools/list, but a client that already knows an exact tool name can call that tool directly without using call_tool.
For integrations that discover capabilities dynamically, use search_tools to find a tool and call_tool to run it. Integrations that already call specific tools by name can continue doing so and should not treat tools/list as a complete catalog.
This behavior applies to both built-in tools and generated API tools.
Important Notice
A short tool list containing only search_tools and call_tool is expected when tool search is enabled. A client that can neither use tool search nor call known tools by exact name cannot discover the other available tools.
Enable Tool Search and Generated API Tools
Tool search and generated API tools are enabled by default. No additional configuration is required, and these capabilities cannot be disabled.
Workspace Metadata
- get_workspace_info - Get workspace name, description, and organization information.
- list_workspace_metrics - List metrics with optional RSQL filtering and pagination. Supports optional
entity_idfor single-metric retrieval. - list_workspace_attributes - List attributes with optional RSQL filtering and pagination. Supports optional
entity_idfor single-attribute retrieval. - list_workspace_visualizations - List visualizations with optional RSQL filtering and pagination. Supports optional
entity_idfor single-visualization retrieval. - list_workspace_dashboards - List dashboards with optional RSQL filtering and pagination. Supports optional
entity_idfor single-dashboard retrieval.
List operations:
- entity_id - Retrieve a single entity through the relevant
list_*tool when supported. - include - Request related entities in one call, such as facts, labels, datasets, or visualizations.
- limit - Optional pagination. Recommended values are 10-50 for quick browsing and 100+ for comprehensive lists.
- rsql_filter - Optional RSQL filtering, for example
title=like=*revenue*ortags=in=('finance','kpi').
All list_* tools support the include parameter to fetch related entities in a single request.
Examples of valid includes:
- Metrics:
["facts", "attributes"] - Dashboards:
["visualizations"] - Attributes:
["labels", "datasets"]
Example usage:
list_workspace_metrics(entity_id="revenue_total")
list_workspace_dashboards(entity_id="sales_dashboard", include=["visualizations"])
list_workspace_attributes(include=["labels", "datasets"])Users
- list_users - Browse organization users.
- list_workspace_users - Browse users with access to the current workspace.
Agents
- list_agents - List the organization’s AI agents. Requires the AI entitlement.
Datasources and Data Modeling
- list_datasources - List datasources with optional RSQL filtering and pagination. This is a read-only operation and supports optional
datasource_idfor single-datasource retrieval. - test_datasource - Test datasource connectivity before scanning.
- scan_datasource - Discover Physical Data Model (PDM) from database schemas.
- generate_ldm - Generate Logical Data Model (LDM) from PDM.
- register_upload_notification - Invalidate cache after new data uploads.
Note: Datasource operations are organization-scoped and may require elevated permissions, such as MANAGE.
Analytics Authoring
- get_workspace_analytics - Retrieve complete analytics model from a workspace, including metrics, dashboards, visualizations, filter contexts, attribute hierarchies, export definitions, and dashboard plugins.
- create_metric - Create a new governed metric in the workspace.
- deploy_workspace_analytics - Deploy full analytics model to a workspace.
- create_visualization - Create a visualization and render it inline in an MCP Apps host. This tool requires the experimental MCP Apps feature. For more information, see MCP Apps.
Warning
deploy_workspace_analytics replaces the existing analytics model in the workspace. Use it carefully.
Generated GoodData v1 API Tools
The MCP Server exposes supported GoodData v1 metadata API operations as generated MCP tools.
Every workspace-scoped GET endpoint in the metadata service is exposed as a read tool. Create tools are generated for these allowlisted workspace-scoped POST entities:
metricsvisualizationObjectsanalyticalDashboardsdashboardPluginsfilterContextsfilterViewsexportDefinitionsattributeHierarchiescustomApplicationSettingsmemoryItems
Generated tools do not include:
PUT,PATCH, orDELETEoperations- action endpoints
- organization-scoped or admin-scoped endpoints
- create operations outside the allowlist
This lets agents read and create supported workspace metadata through MCP without calling the REST API separately.
Generated tools grant no additional access. The backend authorizes each call using the same permissions as the underlying GoodData API.
Memory
- create_memory_item - Add persistent instruction or context to the AI system prompt for the workspace. Maximum length is 255 characters.
AI-Powered Search and Chat
- ai_search - Natural language search across workspace data with AI-generated insights.
- ai_chat - Conversational assistant with intelligent routing:
- Semantic Search - Find existing dashboards, metrics, and visualizations.
- Visualization Creation - Generate new visualizations from natural language.
- General Questions - Get answers about analytics concepts and best practices.
- Supports thread continuity for multi-turn conversations.
Key Driver Analysis
- run_key_driver_analysis - Analyze what drove a change in a metric.
AFM Execution (Label Elements)
- compute_label_elements - Retrieve distinct label (attribute) values with:
- Pattern filtering (SQL LIKE syntax:
"Premium%") - Exact filtering (
["USA", "Canada"]) - Exclusion mode (
complement_filter=True) - Pagination (default: 100, max: 10000)
- Dependent filters and validation by metrics/attributes
- Pattern filtering (SQL LIKE syntax:
- execute_visualization - Execute a saved visualization and return its computed result so MCP clients can use the data in downstream analysis or assistant workflows.
Automations and Alerts
- list_notification_channels - Discover available delivery channels (email, Slack, webhooks).
- list_automations - List all automations in the workspace.
- create_metric_alert - Create unified metric-based alerts supporting:
- Comparison alerts:
GREATER_THAN,LESS_THAN,EQUAL_TO,GREATER_THAN_OR_EQUAL_TO,LESS_THAN_OR_EQUAL_TO,NOT_EQUAL_TO - Range alerts:
BETWEEN,NOT_BETWEEN - Relative alerts:
INCREASES_BY,DECREASES_BY,CHANGES_BY(withDIFFERENCEorCHANGEarithmetic) - Schedule configuration (cron format, timezone)
- Recipients (internal user IDs and/or external email addresses)
- Metric formatting (titles and number formats for readable notifications)
- Comparison alerts:
- update_metric_alert - Update alert thresholds, operators, recipients, schedules, or convert alert type.
- update_alert_state - Pause or resume alerts by setting the target state. Use
state="pause"orstate="unpause". The tool accepts either a single automation ID or a list of automation IDs. - create_scheduled_export - Create a recurring export of a dashboard or visualization.
Example of Use
- You ask the assistant: “Alert me if Total Revenue drops below 90K.”
- The assistant analyzes your request and sets parameters:
- metric =
Total Revenue - operator =
LESS_THAN - threshold =
90000 - schedule = every morning at 8am
- delivery = your default method
- metric =
- You get confirmation: “Alert created: will check daily and notify you when Total Revenue < 90K.”
Important Recipient Rules:
Recipient types must match the notification channel’s allowedRecipients setting:
- CREATOR: Only the current user can be an internal recipient.
- INTERNAL: Only
internal_recipients(user IDs) are allowed. - EXTERNAL: Both internal user IDs and external email addresses are allowed.
Export Tools
- run_export - Run an on-demand export and return a download URL and file metadata.
The run_export tool can run supported export modes, such as:
- dashboard PDF export
- tabular XLSX export
- raw execution export
- dashboard slide deck export in PPTX format
- widget image export, such as PNG snapshots
The tool returns structured metadata where available, such as MIME type, file size, dashboard or visualization links, row and column counts for tabular exports, and width and height for image exports. Large files are returned through download URLs instead of being embedded in the response. Small image assets may be returned inline when supported by the client.
Exports are asynchronous. The tool reports progress while the export is being prepared and returns the file information after the export is complete. Some export types, such as slide decks, may take longer than simple image or tabular exports.
The tool uses existing GoodData export permissions. If the user lacks the required permission, the tool returns an error with information about what needs to be fixed before retrying.
Knowledge Base Tools
The GoodData MCP Server provides tools for accessing platform documentation and analytics knowledge. These allow MCP clients to retrieve structured guidance on MAQL, dashboards, datasets, visualizations, and the Logical Data Model.
- get_maql_guide - Returns MAQL syntax rules, function explanations, and examples. Clients can use this to learn metric syntax that is not part of general LLM training data.
- list_knowledge_topics - Lists available knowledge topics and their resource URIs.
- get_knowledge_topic - Retrieves the full content of a specific knowledge topic.
The following tools provide additional documentation guides:
- get_gooddata_ui_docs_guide - Returns instructions for finding and using the current GoodData.UI documentation, including the
llms.txtindex. Use it before writing or reviewing GoodData.UI front-end code. - get_migration_guide - Returns the
gooddata-legacy2cloudCLI reference, including commands, configuration, and migration order. Use it before preparing migration commands.
Example: Work With GoodData.UI
When you ask an MCP-connected agent to embed a dashboard in a React application or configure a GoodData.UI component, it can call get_gooddata_ui_docs_guide first. The guide points to the GoodData.UI documentation index, which links to current guides and the API reference.
The tool returns instructions and links, not the documentation pages. Your MCP client must be able to access the documentation website to follow those links. When referencing a page or section, use its website URL or the section link provided by the documentation.
Example: Migrate From GoodData Legacy
Before generating gooddata-legacy2cloud commands, an MCP-connected agent can call get_migration_guide to read the CLI reference, including setup requirements and the order of migration operations. For an overview of the migration tool, see Migrating from GoodData Legacy.
Knowledge Resources
All knowledge topics exposed through the Knowledge Tools are also available as MCP Resources for clients that support resource querying. This allows AI agents to load documentation directly as structured content and use it to understand GoodData concepts.
Available Knowledge Resource URIs:
| MCP Resource URI | Description |
|---|---|
gdc-analytics-rules://gooddata | Overview of the GoodData analytics platform, key concepts, and system structure. Useful for general platform understanding. |
gdc-analytics-rules://maql | MAQL reference including syntax, operators, functions, and examples. Essential for generating or validating metrics. |
gdc-analytics-rules://dashboards | Documentation for dashboards, widgets, layout, filters, and interactions. Helps AI agents reference or construct dashboards correctly. |
gdc-analytics-rules://visualizations | Details on visualization types, configuration options, bucket structure, sorting, and limitations. Useful for generating valid visualization definitions. |
gdc-analytics-rules://datasets | Information about dataset structure, grain, roles, and relationships. Useful for metadata reasoning or dataset design. |
gdc-analytics-rules://ldm-schema | Logical Data Model structure and modeling rules, including dataset relationships and keys. Important for AI-driven LDM creation and validation. |
The documentation guides are also available as MCP Resources:
| MCP Resource URI | Description |
|---|---|
gdc-analytics-rules://gooddata-ui | Guide to the current GoodData.UI documentation entry points. Clients follow its links to retrieve documentation pages. |
gdc-analytics-rules://migration-from-legacy | gooddata-legacy2cloud CLI reference, including commands, configuration, and migration order. |
Each resource contains structured documentation that AI assistants can load, summarize, and reason about, enabling more accurate results when working with analytics or metadata definitions.
How Workspace Inheritance Affects MCP Tool Results
When an AI agent connects to a child workspace through the MCP Server, it can access the analytical objects available in that workspace, including inherited metrics, attributes, visualizations, and dashboards.
The agent can use list_workspace_metrics, list_workspace_attributes, list_workspace_visualizations, and list_workspace_dashboards to discover available objects. It can then use tools such as execute_visualization to work with those objects.
Example: Analyze Data in a Child Workspace
Suppose a parent workspace, sales, contains a revenue_by_region visualization. Its child workspace, sales_west, inherits the visualization and has a workspace data filter that limits the relevant data to the West region.
A user asks an AI agent connected to sales_west:
“Show me revenue by region.”
The agent can find the inherited visualization and execute it using the MCP tools. The result respects the child workspace’s data restrictions, so it may differ from the result of executing the same visualization in the parent workspace.
The user does not need to know which tools to call or whether the visualization is inherited.
Connect
Endpoint
Use this endpoint to connect:
https://<your-gooddata-host>/api/v1/actions/workspaces/<workspaceId>/ai/mcpReplace <workspaceId> with the workspace ID you want to work in.
Authentication
The MCP Server supports multiple authentication approaches. Choose the method based on how the MCP client runs:
| Authentication | Best for | Runs as the end user? |
|---|---|---|
| Interactive SSO | A person using a compatible MCP client | Yes. The user signs in through the organization’s identity provider. |
| Signed JWT | Integrations with their own server-side backend | Yes. The backend creates a short-lived token for the mapped user. |
| Per-user API token | Small or static user sets without a backend | Yes. The token represents its owner. |
| Shared API token | Prototypes, demos, or single-user setups | No. All requests use the same identity. |
For server-side integrations, prefer a signed JWT when the integration needs to act as individual users.
For a person using a supported MCP client directly, Interactive SSO allows browser-based sign-in with the organization’s identity provider. Requests run with that user’s permissions. See Interactive SSO.
Interactive SSO
With Interactive SSO, a supported MCP client can connect without a manually configured API token. GoodData acts as the OAuth 2.1 authorization server for the MCP client. The user signs in through the organization’s existing OpenID Connect identity provider, and GoodData then issues an access token to the MCP client. The identity provider does not communicate directly with the MCP client. The token represents the user’s GoodData access and is not limited to MCP operations.
Interactive SSO is disabled by default. For activation, consent, token expiry, and OAuth endpoints, see OAuth 2.1 for Interactive AI Clients.
Beta Feature
Interactive SSO is available in Beta. Enable Interactive SSO under your organization’s Early Access settings. You can also enable Interactive SSO - Consent Screen for local clients. Hosted clients always require consent.
Local MCP clients use loopback callbacks. Hosted MCP clients use HTTPS callbacks that must be accepted by the organization’s redirect policy.
Example: Connect Slackbot
Slackbot is one example of a hosted MCP client. A Slack workspace admin configures the app once, and each user connects their own GoodData account.
Create a Slack app in Slack app settings, or add the MCP configuration to an existing app. Use your workspace MCP URL:
{ "display_information": { "name": "GoodData" }, "features": { "bot_user": { "display_name": "GoodData", "always_online": true } }, "oauth_config": { "scopes": { "bot": ["mcp:connect"] } }, "settings": { "org_deploy_enabled": false, "socket_mode_enabled": false, "token_rotation_enabled": false }, "mcp_servers": { "GoodData": { "url": "https://<your-gooddata-host>/api/v1/actions/workspaces/<workspaceId>/ai/mcp", "auth_type": "dynamic_client_registration" } } }Install or reinstall the app so the
mcp:connectscope applies. On Enterprise Grid, follow your organization’s Slack app installation process.Make sure the GoodData redirect policy accepts
https://oauth2.slack.com/external/auth/callback. Trial organizations require no additional redirect-policy setup. Other organizations must explicitly allow the callback.In Slackbot, open Apps and select Connect next to GoodData.
Complete the GoodData sign-in in the browser. Review the consent screen, which identifies
oauth2.slack.com, and select Allow. Slackbot can then call GoodData tools as your user.
To connect, configure the MCP endpoint without an Authorization header. For example:
{
"mcpServers": {
"GoodData": {
"type": "http",
"url": "https://<your-gooddata-host>/api/v1/actions/workspaces/<workspaceId>/ai/mcp"
}
}
}For Claude Code, add the MCP server with:
claude mcp add --transport http GoodData \
"https://<your-gooddata-host>/api/v1/actions/workspaces/<workspaceId>/ai/mcp"On first use, your MCP client detects that authentication is required, opens the browser sign-in flow, and returns to the client after you sign in and complete any required consent. Subsequent tool calls use your GoodData permissions.
Build a Client with Interactive SSO
MCP clients that support interactive OAuth discover the required endpoints automatically. If you build your own client, use the discovery and registration endpoints described in OAuth Discovery and Endpoints.
For MCP clients that send the OAuth resource parameter, accepted values are the organization’s origin (for example, https://<your-gooddata-host>) or the MCP endpoint URL. Omitting resource is also accepted. Other values return invalid_target. The token is bound to the organization.
API Token
API-token authentication continues to work. Pass the token as a bearer token in the MCP client configuration:
Authorization: Bearer <your-api-token>Example Configurations
The examples below use API-token authentication. If your client supports Interactive SSO, configure only the MCP server URL as described in Interactive SSO and omit the Authorization header.
Claude Desktop
Claude Desktop supports stdio MCP servers natively. To connect to the GoodData streamable HTTP endpoint, use the mcp-remote bridge through npx.
Configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"GoodData": {
"command": "npx",
"args": [
"-y",
"mcp-remote@latest",
"https://<your-gooddata-host>/api/v1/actions/workspaces/<workspaceId>/ai/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer <your-api-token>"
}
}
}
}Restart Claude Desktop after saving the configuration. The Bearer token is passed through the env block instead of directly as a CLI argument to avoid cross-platform issues with spaces.
Claude Code
claude mcp add --transport http GoodData \
"https://<your-gooddata-host>/api/v1/actions/workspaces/<workspaceId>/ai/mcp" \
--header "Authorization: Bearer <your-api-token>"The --transport option must come before the server name. Use http as the transport value, not streamable-http.
Cursor
Configuration file: ~/.cursor/mcp.json for global configuration, or .cursor/mcp.json for a project. You can also configure the server from Cursor Settings > MCP.
{
"mcpServers": {
"GoodData": {
"url": "https://<your-gooddata-host>/api/v1/actions/workspaces/<workspaceId>/ai/mcp",
"headers": {
"Authorization": "Bearer <your-api-token>"
}
}
}
}Cursor auto-detects the transport from the URL. You do not need to add a type field.
VS Code with GitHub Copilot
Configuration file: .vscode/mcp.json, or use MCP: Open User Configuration from the Command Palette.
{
"servers": {
"GoodData": {
"type": "http",
"url": "https://<your-gooddata-host>/api/v1/actions/workspaces/<workspaceId>/ai/mcp",
"headers": {
"Authorization": "Bearer <your-api-token>"
}
}
}
}The root key is servers, not mcpServers. The type is http, not streamable-http. VS Code tries Streamable HTTP first and falls back to SSE. This setup requires the GitHub Copilot extension with MCP support enabled.
Usage Examples
Browse Metrics
Tool: list_workspace_metrics
Optional filters:
title=like=*revenue*- Find metrics with “revenue” in the titletags=in=('finance','kpi')- Filter by tagslimit=10- Limit results to 10 metrics
Get specific metric:
list_workspace_metrics(entity_id="revenue_total")- Retrieve full metric details including MAQL definition
Create a Metric
Tool: create_metric
Use this tool to create a governed metric in the workspace. The metric becomes part of the semantic layer and can be reused by other GoodData capabilities.
Create Alerts
Tool: create_metric_alert
Comparison Alert Example:
automation_id: "revenue-milestone"
metric_id: "revenue_total"
operator: "LESS_THAN"
threshold: 90000
metric_format: "$#,##0"
metric_title: "Total Revenue"
notification_channel_id: "email-channel-id"
internal_recipients: ["user-id-123"]
cron: "0 0 8 * * *"Range Alert Example:
operator: "BETWEEN"
from_value: 100000
to_value: 1000000Relative Alert Example:
operator: "INCREASES_BY"
compare_metric_id: "revenue_last_month"
threshold: 0.10
arithmetic_operator: "CHANGE"
compare_metric_format: "$#,##0"
compare_metric_title: "Last Month Revenue"Update Alerts
Tool: update_metric_alert
Examples:
- Update threshold:
threshold=2000000 - Convert to range alert:
operator="BETWEEN",from_value=100000,to_value=500000 - Change to relative alert:
operator="INCREASES_BY",compare_metric_id="revenue_last_month",threshold=0.15 - Update schedule:
cron="0 30 14 * * 1-5",timezone="UTC"
Update Alert State
Tool: update_alert_state
Use this tool to pause or resume alerts.
automation_id: "revenue-milestone"
state: "pause"Create Scheduled Exports
Tool: create_scheduled_export
Use this tool to create recurring exports of dashboards or visualizations.
Run an Export
Tool: run_export
Use this tool to create an on-demand export. The MCP client can resolve a dashboard, visualization, or widget first, and then call run_export with the required export mode and identifiers.
Example requests:
Export the Executive KPI dashboard to PDF.Give me the Revenue table for Q4 as Excel.Create a PPTX of the Quarterly Review dashboard.Capture a PNG of the Pipeline Funnel widget at 1920 x 1080.
The response includes a download URL and metadata for the exported file.
Use Generated API Tools
Generated API tools are available by default. Use search_tools to find a generated tool and call_tool to run it, or call a known generated tool directly by its exact name.
Generated API tools let agents read or create supported workspace metadata without making a separate REST API call.
Important Notice
Generated tools are subject to the same permissions as the GoodData API. Tool availability does not guarantee that the current user has permission to complete the requested operation.
AI Search and Chat
AI Search:
ai_search(question="What were the total sales last quarter?")AI Chat:
ai_chat(question="Give me bar chart slicing revenue by country")Multi-turn conversation:
# First request
result1 = ai_chat(question="Give me revenue by country")
thread_id = result1.thread_id_suffix
# Follow-up maintains context
result2 = ai_chat(
question="And now filter to USA only",
thread_id_suffix=thread_id
)Label Elements (AFM)
Tool: compute_label_elements
Examples:
- Basic lookup:
label_id="attr.customer.name" - Pattern search:
pattern_filter="Premium%" - Exact filter:
exact_filter=["North America", "Europe"] - Exclusion:
exact_filter=["Archived", "Deleted"],complement_filter=True - Pagination:
offset=200,limit=100
Scan Datasource and Generate LDM
Step 1: Scan datasource
scan_datasource(
datasource_id="my_db",
schemas=["public"],
scan_tables=True,
scan_views=True
)Step 2: Generate LDM
generate_ldm(
datasource_id="my_db",
pdm=scan_result # Pass entire scan result or scan_result["pdm"]
)Register Upload Notification
Tool: register_upload_notification
Use this tool after new data is uploaded for a datasource to invalidate related cache. This operation is organization-scoped and requires the MANAGE permission.
Security and Permissions
- Authentication: All operations require bearer authentication. Use a GoodData API token, signed JWT, or a token issued after Interactive SSO sign-in.
- Workspace Isolation: All operations are scoped to the authenticated user’s workspace context.
- Permission Enforcement: Tools respect user permissions and only return objects you can access. Generated API tools grant no additional access and enforce the same permissions as the underlying GoodData API.
- Organization-scoped Operations: Datasource operations may require elevated permissions.
- Alert Recipients: Must match the notification channel’s
allowedRecipientsconfiguration.
Limits and Behavior
Stateless HTTP Streaming: Optimized for MCP clients with stateless operation.
Pagination: List tools support
limitparameter (recommended: 10-50 for quick browsing).RSQL Filtering: Advanced filtering using RSQL syntax on list operations.
Cron Format:
"second minute hour day month weekday"(e.g.,"0 0 8 * * *"= daily at 8 AM).Label Elements: Default limit 100, maximum 10000.
Error Handling: Structured error responses with field-level validation messages.
Tool Search:
tools/listreturns onlysearch_toolsandcall_tool. All other tools remain callable by exact name.Generated API Tools: Generated tools are enabled by default, are workspace-scoped, and include metadata-service
GEToperations and allowlisted create operations only.
- Exports: On-demand exports may take time to complete. Large files are returned through download URLs rather than embedded in the tool response.
Troubleshooting
401/403 Errors:
- If Interactive SSO is enabled and your client supports it, an HTTP
401challenge can cause the client to open the browser sign-in flow. This is expected behavior. - If you use an API token, verify that the token is valid and has access to the workspace.
- A
403usually means the authenticated user does not have permission for the requested operation. Check the required workspace or organization permissions.
Interactive SSO Does Not Start:
- Verify that Interactive SSO is enabled in the organization’s Early Access settings. If it is disabled, the OAuth discovery URLs return
404. See OAuth 2.1 for Interactive AI Clients. - Verify that the MCP client supports interactive OAuth.
- For a local client, verify that the browser can return to the client’s loopback callback.
- For a hosted client, verify that the organization’s redirect policy accepts the client’s exact HTTPS callback URL.
- If a previously working connection has been inactive for seven days, the client may ask you to sign in again.
- A dynamically registered client is remembered for 30 days. If a client has not been used for longer, a new sign-in can cause the client to register itself again.
Hosted Client Cannot Connect:
- If sign-in fails with HTTP 400 and the error mentions the redirect, check the redirect policy mode and the exact callback URL. Callback matching is exact.
- If the hosted connection is configured but no browser opens, or discovery fails, verify that Interactive SSO is enabled and that the GoodData host is reachable from the internet. A GoodData host reachable only through a VPN cannot be used by a hosted MCP client.
- For Slackbot, app collaborators can inspect connection and tool-call activity in the Slack app settings under MCP Servers > Logs.
404 Errors:
- Object may not exist or you may lack permission to view it.
- Verify workspace ID is correct in the endpoint URL.
Invalid RSQL Filter:
- Check RSQL syntax (e.g.,
title=like=*revenue*). - Verify field names match available metadata fields.
Alert Creation Failures:
- Comparison alerts require
thresholdparameter. - Range alerts require both
from_valueandto_value. - Relative alerts require
compare_metric_idandthreshold. - Recipients must match notification channel’s
allowedRecipientspolicy.
Only search_tools and call_tool Are Listed:
- This is expected when tool search is enabled for your organization.
- Use
search_toolsto discover a tool andcall_toolto run it. - If your integration already knows the exact tool name, it can call that tool directly. Do not use
tools/listas a complete catalog.
Generated API Tool Is Missing:
- Use
search_toolsto find generated tools instead of relying on the initial tool list. - Some operations are intentionally not exposed, including
PUT,PATCH,DELETE, action endpoints, organization-scoped endpoints, and non-allowlisted create operations.
Export Fails:
- Verify that you have the required export permission for the requested export type.
- Check that the referenced dashboard, visualization, widget, or execution result exists and is accessible.
- For large exports, wait for the export to complete and use the returned download URL.
Label Elements Errors:
limitmust be > 0 and ≤ 10000.sort_ordermust be"ASC"or"DESC".
LDM Generation:
- Ensure PDM comes from successful
scan_datasourceoperation. - Can pass entire scan result or just the
pdmfield.
Compatibility
The GoodData MCP Server is compatible with MCP clients that support the required transport and protocol version.
Interactive SSO requires a client that supports interactive OAuth. Desktop applications and CLI clients can use loopback callbacks. Hosted clients can also use Interactive SSO when the organization’s redirect policy accepts their HTTPS callback.
Tool search is enabled by default. Clients can discover tools with search_tools, or call tools they already know by exact name. Client capability does not change which tools are available on the server.
Supported client examples:
- Claude Desktop, through
mcp-remote - Claude Code
- Cursor
- VS Code with GitHub Copilot
- MCP Inspector
- Custom MCP clients