discover_schemaLABSCO SUMMARY
Query the telemetry and change the pipeline that produces it, with the two halves joined by evidence rather than assumption.
Most observability servers stop at search. What is interesting here is the pipeline loop, and specifically that it is honest about its own gap: a configuration that validates is not a configuration that transformed the data. Live capture closes that by sampling real before-and-after items from nodes on running agents, and the dry-run tools cover the other side by showing what a processor will emit before anything is saved at all. Write tools are labelled as such, and the token you issue is where that boundary actually gets drawn.
What it is
Edge Delta's own server, with tools across two halves: querying observability data with CQL, and managing the telemetry pipelines that produce it — including sampling real before-and-after data from running agents to confirm a change actually took effect.
What you get
- discover_schema returns the filterable fields for a scope with sample values and a CQL reference; build_cql constructs a valid query from structured filters and validate_cql checks one before it runs, catching unknown fields and unsupported regex
- Search across the platform — get_log_search, get_metric_search, get_event_search, get_log_patterns and get_trace_timeline — with lookback as a Go duration and from and to as ISO 8601 timestamps
- Graph counterparts for the shape over time rather than the individual items: get_log_graph, get_metric_graph, get_trace_graph and get_pattern_graph
- facets and facet_options expose the dimensions available and the values inside them, and search_metrics does a fuzzy match on metric names before the tools that need an exact one
- Pipeline changes follow a deliberate loop: read the config, validate it without saving and get back valid with a reason, save it as a new version that is not yet deployed, then deploy to the fleet — with revert_pipeline to return to an earlier saved version and get_pipeline_history to see them all
- Live capture answers what validation cannot: start_pipeline_capture samples real data flowing through chosen nodes on running agents, get_pipeline_capture_status polls per agent, and get_pipeline_capture_results returns before and after per node so a transformation is confirmed rather than assumed
- Dry runs cover the opposite direction — test_pipeline_ottl runs OTTL statements against sample OTEL log items and returns the transformed items, and test_pipeline_node dry-runs a whole processor node such as log_to_metric, log_to_pattern, extract_metric, parse_json_attributes, grok or mask, with no save, no deploy and no live traffic
- get_all_dashboards and get_dashboard read the dashboards the organisation already has, and get_ingestion_endpoint returns where data goes in
- Every tool is documented as read-only or write, so deciding which token permissions to grant is a decision you can actually make rather than guess at
Requirements
A Go server distributed as a container image, so Docker Engine 20.10 or newer with the Buildx plugin available — included with Docker Desktop on macOS and Windows, installed separately on most Linux distributions. It authenticates to Edge Delta with an API token, and that token's permissions are what decide how much of the write half is reachable: the read-only tools never change anything in the organisation, while the write tools create pipeline versions and deploy them to the fleet.
Setup effort
One command plus a key — claude mcp add --transport http edgedelta "https://api.edgedelta.com/v1/orgs/<YOUR_ED_ORG_ID>/mcp?token=<YOUR_TOKEN>", then supply credentials
USE CASES
Investigating something when you do not know the field names
Ask for the schema of the scope, build a valid CQL query from structured filters, then run the search.
Seeing the shape rather than the individual lines
The graph tools return counts over time, and the pattern tools group the noise into the handful of shapes that actually occur.
Changing a pipeline without hoping
Validate the YAML without saving, save it as a version that is not yet live, then deploy it to the fleet deliberately.
Proving a change actually transformed the data
Start a capture on the affected nodes, poll until an agent reports success, then compare before against after per node.
Developing a processor before it touches live traffic
Dry-run the OTTL statements or the whole node against sample items and iterate until the output is right.
Backing out a deploy that went wrong
The version history shows what was saved and when, and revert puts an earlier version back on the fleet.
32 tools
Listed in project docs. Your client may show a different list.
search_metricsvalidate_cqlbuild_cqlget_log_searchget_metric_searchget_event_searchget_log_patternsget_trace_timelineget_log_graphget_metric_graphget_trace_graphget_pattern_graphfacetsfacet_optionsget_pipelinesget_pipeline_configget_pipeline_historyvalidate_pipeline_configsave_pipeline_configdeploy_pipelinerevert_pipelineadd_pipeline_sourcestart_pipeline_captureget_pipeline_capture_statusget_pipeline_capture_resultsget_pipeline_capture_tasktest_pipeline_ottltest_pipeline_nodeget_ingestion_endpointget_all_dashboardsget_dashboardBEFORE YOU INSTALL
What to know first
Tools you get
32 tools named in the project's documentation.
Requires
- A client that can reach a remote MCP server over HTTP
- ED_API_TOKEN in your environment
- ED_ORG_ID in your environment
INSTALLATION
Connect your client
Server setup
Claude Code — token
claude mcp add --transport http edgedelta "https://api.edgedelta.com/v1/orgs/<YOUR_ED_ORG_ID>/mcp?token=<YOUR_TOKEN>"MCP Clients
Claude Desktop, Claude.ai
Open Settings > Connectors > Add custom connector.
Paste your remote MCP endpoint:
https://api.edgedelta.com/v1/orgs/<YOUR_ED_ORG_ID>/mcp?token=<YOUR_TOKEN>Cursor
{
"mcpServers": {
"edgedelta": {
"url": "https://api.edgedelta.com/v1/orgs/<YOUR_ED_ORG_ID>/mcp?token=<YOUR_TOKEN>"
}
}
}VS Code
{
"servers": {
"edgedelta": {
"type": "http",
"url": "https://api.edgedelta.com/v1/orgs/<YOUR_ED_ORG_ID>/mcp?token=<YOUR_TOKEN>"
}
}
}Claude Code — OAuth
claude mcp add --transport http edgedelta https://api.edgedelta.com/mcpClaude Desktop — Docker
{
"mcpServers": {
"edgedelta": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ED_ORG_ID",
"-e",
"ED_API_TOKEN",
"ghcr.io/edgedelta/edgedelta-mcp-server:latest"
],
"env": {
"ED_API_TOKEN": "<YOUR_ED_API_TOKEN>",
"ED_ORG_ID": "<YOUR_ED_ORG_ID>"
}
}
}
}Cursor — Docker
{
"mcpServers": {
"edgedelta": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ED_ORG_ID",
"-e",
"ED_API_TOKEN",
"ghcr.io/edgedelta/edgedelta-mcp-server:latest"
],
"env": {
"ED_API_TOKEN": "<YOUR_TOKEN>",
"ED_ORG_ID": "<YOUR_ORG_ID>"
}
}
}
}