peaka-mcp-server

by peakacom

166 downloads
Not rated
GitHub

About

peaka-mcp-server is a Model Context Protocol (MCP) server that gives LLMs access to Peaka's text2SQL capabilities. It enables AI agents to inspect database schemas and execute SQL queries on Peaka projects.

Details

Author
peakacom
Downloads
166
Categories
Other

- List and manage Peaka projects and connections
- Inspect database schemas, tables, and columns
- Execute raw SQL queries via Peaka
- Query and create golden question/SQL pairs
- Manage table caches (create, refresh, update, delete)
- Create and manage saved queries and semantic catalogs

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name peaka-mcp-server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install by adding a configuration entry to your MCP client's config file (e.g., Claude Desktop's claude_desktop_config.json). Run the server via npx -y @peaka/mcp-server-peaka@latest and set the PEAKA_API_KEY environment variable. For packaged installation, run npm run pack to produce a .mcpb bundle and install it as a Claude Desktop extension.

peaka_query_golden_sqls

Query question/sql pairs from Peaka's golden sql vector store. If you find an existing query matching the user's question, just use it. Otherwise use the other tools to figure out the tables and write the query. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_execute_sql_query

Runs the given sql query on Peaka. BEFORE RUNNING THIS TOOL: 1: Use peaka_get_project_metadata to determine which tables should be used in the query and their schemas. 2: Use peaka_list_tables to determine if the tables of interest are cached or not (this response has isCached property) 3: If one or more tables that you need to query are cacheable but not cached: 3a: Warn the user that the results will be limited and ask if you should start the caching process for those tables, and start the caching process using the create cache tool 3b: If the caching is rejected by the user, warn them that the query results will be limited and use LIMIT statements on the query to make sure it doesn't run forever If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_execute_query

Execute a saved query by its ID in the Peaka project. Use peaka_list_queries to find available query IDs. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_get_query

Read a single saved query by its ID. Returns the full query object including displayName, inputQuery (SQL), queryType, and the auto-refresh schedule for materialized queries. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_create_query

Create a named, saved query in the Peaka project's semantic layer. Returns the created query object including its ID, which can be passed to peaka_execute_query. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_update_query

Update an existing saved query in the Peaka project. Adjusts the display name, SQL body, and/or the auto-refresh schedule (for materialized queries). At least one of displayName, inputQuery, or schedule must be provided. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_delete_query

Delete a saved query from the Peaka project. Use the queryId returned from peaka_list_queries. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_refresh_materialized_query

Trigger a refresh on a materialized saved query in the Peaka project. Use the queryId returned from peaka_list_queries for queries whose queryType is "MATERIALIZED". If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_get_materialized_query_statuses

Inspect the auto-refresh state of materialized saved queries in the Peaka project. Returns each query's last refresh status, last/next scheduled execution times, and its schedule settings (interval/cron). Pass a queryId to inspect a single materialized query; omit it to list all of them. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_get_project_metadata

Get metadata for all catalogs, schemas, and tables in the Peaka project in a single call. Optionally filter by catalogId and/or schemaName. Use this tool to discover the data structure before writing queries. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_refresh_project_metadata

Refresh project metadata for a specific catalog. This is a long-running operation that should only be used when a data source has structurally changed (e.g. new tables or columns added). Triggers the refresh asynchronously and returns immediately; it does not wait for completion. Poll peaka_get_metadata_refresh_status to track progress until it reports COMPLETED or FAILED. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_get_metadata_refresh_status

Check the current status of a metadata refresh job for a specific catalog. Possible statuses: NOT_ACTIVE, COMPLETED, WAITING, ACTIVE, DELAYED, FAILED, PAUSED, STUCK. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_create_cache

Create a cache for a table in the Peaka project. Caching a table improves query performance by storing the data locally. Schedule expressions are optional at creation time and use ISO-8601 durations (e.g. PT6H, P1D, P7D, P30D); they can be set later with peaka_update_cache. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_create_cache_batch

Create caches for multiple tables in a single call. Use this instead of repeated peaka_create_cache calls when caching many tables — it avoids partial-failure states where some caches are created and others aren't. Each item supports the same optional schedule expressions as peaka_create_cache (ISO-8601 durations, e.g. PT6H, P1D, P7D, P30D). If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_get_cache_statuses

Get all cache statuses for tables in the Peaka project. Returns the current caching state, execution history, and progress for each cached table. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_refresh_cache_full

Trigger a full refresh on an existing cache in the Peaka project. Use the cacheId returned from peaka_get_cache_statuses. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_refresh_cache_incremental

Trigger an incremental update on an existing cache in the Peaka project. Fetches only new/changed rows — much faster than a full refresh. Use the cacheId returned from peaka_get_cache_statuses. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_update_cache

Update cache settings on an existing cache in the Peaka project. This endpoint replaces — not merges — the schedules, so both incrementalSchedule and fullRefreshSchedule must be supplied with the full intended state every call. Schedule expressions use ISO-8601 durations (e.g. PT6H, P1D, P7D, P30D). If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_delete_cache

Delete an existing cache in the Peaka project. Removes the cache entirely; the underlying table is not affected. Use the cacheId returned from peaka_get_cache_statuses. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_list_catalogs

List all available catalogs in the Peaka project. Returns catalog names, types, and connection info. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_list_schemas

List all available schemas for a given catalog in the Peaka project. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_list_tables

List all available tables for a given catalog and schema in the Peaka project. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_list_columns

List all columns for a given table in the Peaka project. Returns column names, data types, and constraints. Use peaka_get_project_metadata first to discover available catalogs, schemas, and tables. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_list_queries

List all saved queries in the Peaka project. Returns query names, SQL content, and whether they are plain or materialized. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_list_projects

List all projects accessible for the user. Use this tool to discover projectIds, then pass the chosen projectId to subsequent tool calls.

peaka_get_relations

Get table relationships (foreign keys) for a catalog in the Peaka project. Useful for understanding how tables connect when constructing JOINs — without this, JOIN conditions have to be guessed from column-name similarity. The response is an open-ended object map keyed by relation identifier. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_get_table_statistics

Get column-level statistics for a table in the Peaka project. Returns the catalog/schema/table identifiers and a per-column distinctFraction (estimated fraction of distinct values vs total rows), useful for cardinality estimation and query optimization. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_list_connections

List all data source connections in the Peaka project. Returns each connection's id, name, type, and (for OAuth-based connections) callback URL. Useful for discovering what data sources are wired up; pair with peaka_get_connection_detail for connection-specific configuration. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_get_connection_detail

Get connection-specific configuration detail for a data source connection in the Peaka project. The response shape varies by connection type — only the `type` field is guaranteed; remaining fields are connection-specific. Use peaka_list_connections to discover the connectionId. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_create_semantic_catalog

Create a semantic catalog in the Peaka project. A semantic catalog groups semantic tables — saved queries surfaced as queryable tables — under a single namespace. Returns the created catalog including its id. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_create_semantic_table

Create a semantic table inside a semantic catalog in the Peaka project. The table is backed by an existing saved query, so the catalog/schema/table identifiers become a queryable view over that query. Use peaka_create_query (or peaka_list_queries) to obtain the queryId, and peaka_create_semantic_catalog (or peaka_list_catalogs) for the catalogId. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

peaka_delete_semantic_table

Delete a semantic table from a semantic catalog in the Peaka project. Removes the table mapping only; the saved query that backs it is not affected. If you do not already know the projectId for the current task, call peaka_list_projects first and ask the user which project to use. Remember the chosen projectId for subsequent calls in this conversation.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "peaka-mcp-server": {
            "peaka": {
                "command": "npx",
                "args": [
                    "-y",
                    "@peaka/mcp-server-peaka@latest"
                ],
                "env": {
                    "PEAKA_API_KEY": "<YOUR_API_KEY>"
                }
            }
        }
    }
}

McpServers

{
    "peaka": {
        "command": "npx",
        "args": [
            "-y",
            "@peaka/mcp-server-peaka@latest"
        ],
        "env": {
            "PEAKA_API_KEY": "<YOUR_API_KEY>"
        }
    }
}

peaka-mcp-server

Model Context Protocol (MCP) is a new, standardized protocol for managing context between large language models (LLMs) and external systems.

Peaka Model Context Protocol server that provides access to Peaka's text2SQL capabilities.

This server enables LLMs to inspect schemas and execute sql queries on provided Peaka projects.

Components

Resources

- peaka_sql_query_rule_set
- Peaka SQL Query Rule Set is guidelines for writing sql queries for Peaka.
- peaka_artifact_template
- Style guide and HTML template for generating visual reports, dashboards, and artifacts from Peaka query results.

Tools

Every project-scoped tool takes a projectId argument. If the MCP client does not already know the projectId, it should call peaka_list_projects first and pass the chosen id to subsequent calls. The server itself is stateless with respect to project selection — each call carries its own projectId.

- peaka_list_projects
- List all projects accessible with the current API key. For Partner API keys, enumerates projects across all organizations and workspaces. For Project API keys, returns the single project bound to the key.
- peaka_query_golden_sqls
- Query question/sql pairs from Peaka's golden sql vector store. If an existing query matches the user's question, it can be reused directly.
- peaka_execute_sql_query
- Runs the given sql query on Peaka.
- peaka_get_project_metadata
- Get metadata for all catalogs, schemas, and tables in the Peaka project in a single call. Optionally filter by catalogId and/or schemaName.
- peaka_list_catalogs
- List all available catalogs in the Peaka project. Returns catalog names, types, and connection info.
- peaka_list_schemas
- List all available schemas for a given catalog in the Peaka project.
- peaka_list_tables
- List all available tables for a given catalog and schema in the Peaka project.
- peaka_list_columns
- List all columns for a given table in the Peaka project. Returns column names, data types, and constraints.
- peaka_get_relations
- Get table relationships (foreign keys) for a catalog. Useful for constructing accurate JOINs.
- peaka_get_table_statistics
- Get column-level statistics for a table, including distinct-value fractions per column.
- peaka_create_cache
- Create a cache for a table in the Peaka project. Caching a table improves query performance by storing the data locally.
- peaka_create_cache_batch
- Create caches for multiple tables in a single call. Preferred over repeated peaka_create_cache calls.
- peaka_get_cache_statuses
- Get all cache statuses for tables in the Peaka project, including current caching state, execution history, and progress.
- peaka_refresh_cache_full
- Trigger a full refresh on an existing cache.
- peaka_refresh_cache_incremental
- Trigger an incremental update on an existing cache, fetching only new or changed rows.
- peaka_update_cache
- Update cache settings (schedules) on an existing cache. Replaces both schedules entirely each call.
- peaka_delete_cache
- Delete an existing cache; the underlying table is not affected.
- peaka_list_queries
- List all saved queries in the Peaka project. Returns query names, SQL content, and whether they are plain or materialized.
- peaka_get_query
- Read a single saved query by its ID. Returns the full query object including SQL, type, and the materialized-query refresh schedule.
- peaka_execute_query
- Execute a saved query by its ID in the Peaka project.
- peaka_create_query
- Create a named, saved query in the project's semantic layer. Returns the created query including its ID. For materialized queries, accepts an optional schedule to set the auto-refresh cadence — {type: "interval", repeatDuration: "PT6H"}, {type: "cron", cronExpression: "0 0 *", timezone: "UTC"}, or {type: "none"} to disable.
- peaka_update_query
- Update an existing saved query's display name, SQL body, and/or auto-refresh schedule (interval, cron, or {type: "none"} to disable; materialized queries only).
- peaka_delete_query
- Delete a saved query from the Peaka project.
- peaka_refresh_materialized_query
- Trigger a refresh on a materialized saved query. Use peaka_list_queries to find query IDs whose queryType is MATERIALIZED.
- peaka_get_materialized_query_statuses
- Inspect the auto-refresh state of materialized queries: last refresh status, last/next scheduled execution, and schedule settings. Pass a queryId for a single query or omit it to list all.
- peaka_list_connections
- List all data source connections in the Peaka project, including each connection's id, name, and type.
- peaka_get_connection_detail
- Get connection-specific configuration detail for a data source connection.
- peaka_create_semantic_catalog
- Create a semantic catalog in the Peaka project. A semantic catalog groups semantic tables (saved queries surfaced as queryable tables) under a single namespace.
- peaka_create_semantic_table
- Create a semantic table inside a semantic catalog, backed by a saved query. Requires catalogId, schemaName, tableName, and queryId.
- peaka_delete_semantic_table
- Delete a semantic table from a semantic catalog. The underlying saved query is not affected.
- peaka_refresh_project_metadata
- Refresh project metadata for a specific catalog. Long-running; triggers the refresh and polls for completion.
- peaka_get_metadata_refresh_status
- Check the current status of a metadata refresh job for a specific catalog.

Usage with Claude Desktop

- Edit the configuration file config.json:
- on macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
- on Windows: %APPDATA%\Claude\claude_desktop_config.json
- Add the following configuration to the mcpServers object:

{
  "mcpServers": {
    "peaka": {
      "command": "npx",
      "args": ["-y", "@peaka/mcp-server-peaka@latest"],
      "env": {
        "PEAKA_API_KEY": "<YOUR_API_KEY>"
      }
    }
  }
}

Change the {PEAKA_API_KEY} with your project API Key. Check out Peaka Documentation for creating your API Key and follow detailed instructions by clicking here.

- Restart Claude Desktop

Packaging as a Claude Desktop extension

This repo ships with a pack script that builds the server and then runs mcpb pack (from @anthropic-ai/mcpb) to produce a .mcpb bundle — a zip-like archive containing the built server and manifest.json that Claude Desktop can load as a custom MCP extension.

npm run pack

This produces peaka-mcp-server.mcpb at the repo root. To install it, open Claude Desktop → Settings → Extensions -> Advanced Settings -> Install Extension -> Select the .mcpb file -> Enter your API key when prompted and enable the extension.

Environment variables

You can use following environment variable for configuration:

| Name | Description | Default Value |
| -------------------- | ------------------------------------------------------- | ----------------------------------- |
| PEAKA_API_KEY | Project API key for authenticating with Peaka services. | - |
| PARTNER_API_BASE_URL | Base URL for Peaka partner API | https://partner.peaka.studio/api/v1 |
| OAUTH_AUTHORIZATION_SERVER_URL | Protected-resource metadata URL advertised in the WWW-Authenticate header on 401 responses (httpStream mode). | - |

Contact

For feature requests and bugs, please create an issue in this repo. For further support, see the following resources:

- Peaka Community Discord

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.