Parseable
MCP server for Parseable.
What it can do
- List Datasets: List all log datasets (streams) on this Parseable server. Returns an array of dataset metadata. Use this first to discover what data is available.
- Get Dataset Schema: Get the Arrow schema (columns + types) for a dataset. Run this before writing SQL so you know available columns.
- Get Dataset Info: Get metadata for a dataset: created_at, first/last event time, owner, retention, hot-tier config, time partition.
What data it sees
Do you need an account
An API key from the service settings is required
MCP server for Parseable. Lets LLMs discover and query Parseable.
How to connect
How to connect Parseable to Claude
The server address to paste into Claude settings:
https://parseable--parseable.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect Parseable to ChatGPT
The server address to paste into ChatGPT settings:
https://parseable--parseable.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect Parseable to Cursor
The server address to paste into Cursor settings:
https://parseable--parseable.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (27)
Raw names from tools/list. Only developers need these.
| list_datasets | List all log datasets (streams) on this Parseable server. Returns an array of dataset metadata. Use this first to discover what data is available. |
| get_dataset_schema | Get the Arrow schema (columns + types) for a dataset. Run this before writing SQL so you know available columns. |
| get_dataset_info | Get metadata for a dataset: created_at, first/last event time, owner, retention, hot-tier config, time partition. |
| get_dataset_stats | Get event count, ingested bytes, and storage (compressed) bytes for a dataset. Useful for cost and volume audits. |
| sample_events | Return the most recent N events from a dataset. Useful for understanding the shape of data before writing SQL. |
| query_sql | Execute a SQL SELECT against a Parseable dataset over a time window. Use this for any analytical question on logs/events. Run get_dataset_schema first to know columns. Time window is mandatory. |
| query_promql | Execute a PromQL query against a Parseable metrics dataset. Pass start+end+step for a range query (time series), or omit them for an instant query (single point). Requires a metrics dataset name in `stream`. |
| list_alerts | List all alerts on this Parseable server with their IDs, names, state (enabled/disabled), severity, and last evaluation. Use first to discover what alerts exist before drilling in with get_alert. |
| get_alert | Get full configuration for one alert: query, threshold, evaluation window, targets, tags, state, last fired timestamp. |
| list_alert_tags | List all tags currently in use across alerts. Useful for filtering and grouping alerts by service/team/severity. |
| enable_alert | Enable a previously-disabled alert. |
| disable_alert | Disable an active alert (stops evaluating + firing). |
| evaluate_alert | Force-evaluate an alert immediately (out-of-schedule). MAY TRIGGER REAL NOTIFICATIONS if threshold breached - confirm with user before running on production alerts. |
| create_alert | Create a new Parseable alert. BEFORE calling this tool, gather inputs from the user ONE QUESTION AT A TIME. Do not invent values. Ask in this order: 1. "What should this alert be called?" → title 2. "Which dataset should it watch?" → call list_datasets if user is unsure, then pick 3. "What condition should trigger it?" → translate user's natural-language condition into: - a SQL SELECT against the dataset that returns a single numeric column - operator from > < = >= <= != - numeric threshold value Confirm the translated SQL + operator + value back to the user. 4. "How far back should each check look?" → evalStart (e.g. "5m", "15m", "1h") 5. "How often should it evaluate?" → evalFrequency in minutes (integer) 6. "Severity: critical, high, medium, or low?" → default medium 7. "Any tags? (comma-separated, optional)" → tags array, empty if none 8. "Notification targets?" → call list_alert_targets to fetch existing targets, present them as a numbered list, ask user to pick by number/name. Collect chosen target IDs into the targets array. If no targets exist or user wants none, use an empty array. Then show the fully assembled JSON spec to the user and ask "Create this alert?" Only call create_alert after explicit confirmation. If user wants edits, update fields and re-confirm. |
| list_alert_targets | List all alert notification targets (Slack webhooks, generic webhooks, Alertmanager endpoints) configured on this Parseable server. Returns array of `{id, name, type, ...}`. Use BEFORE create_alert so the user can pick valid target IDs for the alert's `targets` array. |
| get_alert_target | Get full config for one alert target (endpoint URL, auth, headers, notification interval). |
| create_alert_target | Create a new notification target (Slack/webhook/Alertmanager). Ask the user step-by-step: name, type, endpoint URL, then type-specific fields (headers for webhook, basic auth for Alertmanager). Confirm full JSON before submitting. |
| ping | Check connectivity and report server version/build info. Returns about (version, mode, license, deployment id), liveness, and readiness. Use for diagnosing MCP-server-to-Parseable connection issues. |
| explain_query | Run EXPLAIN on a SQL query to see the DataFusion execution plan without executing it. Useful for debugging slow queries, verifying predicate pushdown, and checking partition pruning. Same SELECT-only restriction as query_sql. |
| list_users | List all registered users on this Parseable server. Returns user IDs and basic metadata. Caller must have ListUser permission. Read-only - this server does not provide user creation/deletion. |
| get_user_roles | Get the roles assigned to a specific user. Returns a map of role name → role definition. Combine with list_roles + get_role to determine effective permissions for a user (which datasets they can read, write, manage alerts on, etc.). |
| list_roles | List all roles defined on this Parseable server. Returns role names. Use get_role on each to inspect privileges. Read-only - this server does not provide role creation/modification. |
| get_role | Get the full privilege definition for a role: which actions (Ingest, Query, GetStream, PutAlert, etc.) the role grants, and which datasets each privilege applies to. Use to answer 'does role X let me write to dataset Y?' style questions. |
| get_default_role | Get the default role assigned to new users on this Parseable server. Returns the role name, or null if no default is set. |
| get_cluster_status | List all nodes in this Parseable cluster (Prism, Querier, Ingestor, Indexer) with their domains, status, and metadata. Only works on distributed Parseable deployments - standalone instances will return an error. |
| get_cluster_metrics | Get aggregated metrics across all nodes in this Parseable cluster (ingest rate, query latency, storage utilization, errors). Distributed mode only. |
| get_retention | Get the retention policy for a dataset - how long data is kept before being deleted, and any tiering rules. Read-only; modification stays in the Parseable UI. |