Chronosphere

Fetch logs, metrics, traces, and events from the Chronosphere observability platform.

Chronosphere MCP Server

MCP server for Chronosphere. Serves tools for fetching logs, metrics, traces, events as well as select entities.

This project uses semver for release versions. We have not graduated to 1.0, so breaking changes may occur for minor version bumps.

MCP config with popular hosts (claude desktop, cursor)

Remote Server

The easiest way to use the MCP server is using our remote hosted server:

Auth

You can use either a Chronosphere API token or OAuth with the Chronosphere MCP server. To use MCP with OAuth, the MCP client must support OAuth.

OAuth support is new and have not been tested with all clients. If it does not work for you, please raise the issue to Chronosphere support in slack with the following information:

  1. MCP client you're using (e.g. VS code, codex, cursor, etc)
  2. What steps you took to attempt authentication
  3. What error you're seeing.

Cursor/VSCode

{
    "mcpServers": {
        "chronosphere": {
            "url": "https://<org name>.chronosphere.io/api/mcp/mcp",
            "headers": {
                "Authorization": "Bearer <chronosphere api token>"
            }
        }
    }
}

This configuration should work for Cursor and VSCode. Leave out the headers section to use OAuth instead of a Chronosphere API token.

More details for VSCode here and Cursor here

Claude code

Adding chronosphere MCP server to claude code

claude mcp add -t http -H "Authorization: ${CHRONOSPHERE_API_TOKEN}" chronosphere "https://${CHRONOSPHERE_ORG_NAME}.chronosphere.io/api/mcp/mcp"

You can leave out the Authorization header if you are using OAuth. Once you're in claude type /mcp and select the server to login to trigger the OAuth flow.

More details here

Codex CLI

experimental_use_rmcp_client = true
[mcp_servers.chronosphere]
url = "https://<org_name>.chronosphere.io/api/mcp/mcp"
bearer_token = "<chronosphere api token>"

For oauth login, you must enable experimental_use_rmcp_client = true and then run codex mcp login chronosphere

More details here

Building from source

First build the binary

make chronomcp
{
  "mcpServers": {
    "chronosphere-mcp": {
      "command": "<PATH/TO/REPO>/bin/chronomcp",
      "args": [
        "-c",
        "<PATH/TO/REPO>/config.yaml"
      ],
      "env": {
        "CHRONOSPHERE_ORG_NAME": "<your org here>",
        "CHRONOSPHERE_API_TOKEN": "<your api token here>"
      }
    }
  }
}

Developing

Running the server

Authentication to Chronosphere

This MCP server uses the same authentication methods as chronoctl. By default, the Makefile expects the API token to be stored in .chronosphere_api_token.

Run the mcp server

make run-chronomcp CHRONOSPHERE_ORG_NAME=<your org here> CHRONOSPHERE_API_TOKEN=<your api token here>

Debugging MCP Tools

The MCP project provides an inspector useful for directly calling tools APIs. To use:

  1. Start the MCP server with streamable http transport make run-chronomcp CONFIG_FILE=./config.http.yaml CHRONOSPHERE_ORG_NAME=<your org here>
  2. Run npx @modelcontextprotocol/inspector node build/index.js.
  3. Open http://localhost:6274/#resources , fill in http://0.0.0.0:8081/mcp in the URL, with transport type Streamable HTTP.

Available Tools

GroupTool NameDescription
configapiget_classic_dashboardGet classic-dashboards resource
configapiget_dashboardGet dashboards resource
configapiget_drop_ruleGet drop-rules resource
configapiget_mapping_ruleGet mapping-rules resource
configapiget_monitorGet monitors resource
configapiget_notification_policyGet notification-policies resource
configapiget_recording_ruleGet recording-rules resource
configapiget_rollup_ruleGet rollup-rules resource
configapiget_sloGet slos resource
configapilist_classic_dashboardsList classic-dashboards resources
configapilist_dashboardsList dashboards resources
configapilist_drop_rulesList drop-rules resources
configapilist_mapping_rulesList mapping-rules resources
configapilist_monitorsList monitors resources
configapilist_notification_policiesList notification-policies resources
configapilist_recording_rulesList recording-rules resources
configapilist_rollup_rulesList rollup-rules resources
configapilist_slosList slos resources
eventsget_events_metadataList properties you can query on events
eventslist_eventsList events from a given query
eventslist_events_label_valuesList values for a given label name
logsget_logGet a full log message by its ID. The ID is the unique identifier for the log.
logsget_log_histogramGet histogram of logs from a given query
logslist_log_field_namesList field names of logs
logslist_log_field_valuesList field values of logs
logsquery_logs_rangeExecute a range query for logs. This endpoint returns logs as either timeSeries or gridData. It may return a large amount of data, so be careful putting the result of this direction into context. U...
logscalequery_logscaleQuery LogScale repository with a given query string. LogScale uses its own query language for searching and analyzing logs.
metricslist_prometheus_label_namesReturns the list of label names (keys) available on metrics that match the given selectors. Use this tool when you need to discover what labels are available on specific metrics or services. Exampl...
metricslist_prometheus_label_valuesReturns the list of values for a specific label name, optionally filtered by selectors. Use this tool when you know the label name and want to discover what values it has across your metrics. Commo...
metricslist_prometheus_seriesReturns the complete time series (full label sets with all key-value pairs) that match the given selectors. Each result shows the exact combination of labels for an active time series. Use this too...
metricslist_prometheus_series_metadata
metricsquery_prometheus_instantEvaluates a Prometheus instant query at a single point in time
metricsquery_prometheus_rangeExecutes a Prometheus PromQL query over a specified time range and returns time series data points as JSON. Supports standard PromQL syntax plus Chronosphere custom functions: - cardinality_estimat...
metricsrender_prometheus_range_queryEvaluates a Prometheus expression query over a range of time and renders it as a PNG image.
monitorslist_monitor_statusesLists the current status of monitors in Chronosphere. Returns monitor statuses with alert states and optional signal and series details.
traceslist_tracesList traces from a given query

Note: To regenerate this table after tool updates, run: make tools-gen && go run scripts/generate-tools-table.go

Agent (experimental)

See agent/README.md

Releases

We use goreleaser to manage releases.

You'll need a github token and put it in a .github_release_token file. The token needs at least the following permissions

  • content: write
  • issues: write

To create a new release, first create a tag:

git tag vX.Y.Z
git push origin vX.Y.Z

Then run the following command to perform a dry run of the release:

```sh
make release-dry-run
# verify the release looks good, then run:
make release

Related Servers