Back to the catalog

com.streamkap/tools

Streamkap CLI & MCP server - manage CDC pipelines, sources, destinations, and transforms

Open source Open in the app JSON README (API)

About

Streamkap CLI & MCP server - manage CDC pipelines, sources, destinations, and transforms

Details

Kind
MCP servers
Topic
Developer tools
Publisher
com.streamkap
Origin
official
Category
ferramentas
Transport
http
Version
0.7.0
Added
2026-08-29 03:01:23
Updated
2026-08-29 03:01:23
Origin id
com.streamkap/tools

README

# Streamkap CLI & MCP Server

CLI and MCP server for [Streamkap](https://streamkap.com) -- manage real-time data pipelines from the command line or through AI agents.

Streamkap captures changes from databases (MySQL, PostgreSQL, MongoDB, SQL Server, DynamoDB, and more) and streams them to data warehouses, lakes, and other destinations in real time.

Requires Node.js 22.12.0+. For full documentation, visit [docs.streamkap.com](https://docs.streamkap.com).

---

## Quick Start

1. Log into your [Streamkap dashboard](https://app.streamkap.com)
2. Go to **Settings > API Keys** and create a new API key
3. Choose how you want to use it:

**CLI:**
```bash
npm install -g @streamkap/tools
streamkap auth login --client-id your-client-id --client-secret your-client-secret
streamkap doctor   # Verify everything works
```

**MCP -- Claude Code (one command):**
```bash
claude mcp add --scope user \
  --header "X-Streamkap-Client-ID: your-client-id" \
  --header "X-Streamkap-Client-Secret: your-client-secret" \
  --transport http \
  streamkap https://mcp.streamkap.com/mcp
```

**MCP -- one-click install:**

[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.png)](cursor://anysphere.cursor-deeplink/mcp/install?name=streamkap&config=eyJ1cmwiOiJodHRwczovL21jcC5zdHJlYW1rYXAuY29tL21jcCJ9)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_streamkap-0098FF?style=flat-square&logo=visualstudiocode)](https://insiders.vscode.dev/redirect/mcp/install?name=streamkap&config=%7B%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.streamkap.com%2Fmcp%22%7D)

Both install the hosted server and sign you in through OAuth -- no credentials to paste.

**MCP -- Cursor, Windsurf, VS Code Copilot (JSON config):**
```json
{
  "mcpServers": {
    "streamkap": {
      "type": "http",
      "url": "https://mcp.streamkap.com/mcp",
      "headers": {
        "X-Streamkap-Client-ID": "your-client-id",
        "X-Streamkap-Client-Secret": "your-client-secret"
      }
    }
  }
}
```

> **Claude Desktop users:** Claude Desktop requires a different setup using the absolute path to your Node.js binary. See the [Claude Desktop guide on docs.streamkap.com](https://docs.streamkap.com/mcp-server) for the full instructions.

---

## What's Included

| Credentials | What you get |
|-------------|--------------|
| **API key only** | All REST tools -- pipelines, sources, destinations, transforms, topics, schemas, alerts, logs |
| **+ Kafka user** | REST tools + direct Kafka produce / consume / subscribe + Schema Registry encode and decode |
| **[Project Key](#project-keys)** | All of the above, bundled into a single base64 value with tool scoping |

Most users only need an **API key**. For Kafka access plus pre-scoped tool access in a single credential, use a [Project Key](#project-keys).

---

## Project Keys

A **Project Key** is one file that bundles API + Kafka + Schema Registry credentials and MCP tool scoping. Use it instead of setting each env var or header individually.

Create one at **Settings > Project Keys** in the [Streamkap dashboard](https://app.streamkap.com), then encode it:

```bash
streamkap auth encode-key ~/Downloads/my-key-credentials.json
```

**CLI / stdio MCP:** set `STREAMKAP_PROJECT_KEY=<base64>`.
**Remote MCP:**

```json
{
  "mcpServers": {
    "streamkap": {
      "type": "http",
      "url": "https://mcp.streamkap.com/mcp",
      "headers": { "X-Streamkap-Project-Key": "<base64>" }
    }
  }
}
```

Full reference -- JSON shape, tool-scoping profiles, rotation, edit flow: [docs.streamkap.com/project-keys](https://docs.streamkap.com/project-keys).

---

## CLI

### Install

```bash
npm install -g @streamkap/tools
```

### Authenticate

```bash
# Environment variables (recommended for CI and scripts)
export STREAMKAP_CLIENT_ID="your-client-id"
export STREAMKAP_CLIENT_SECRET="your-client-secret"

# Or save credentials to a config file
streamkap auth login --client-id your-client-id --client-secret your-client-secret

# Or pass per command
streamkap pipelines list --client-id your-client-id --client-secret your-client-secret --json
```

### Common commands

```bash
streamkap --help                          # List all commands
streamkap doctor                          # Validate API, Kafka, Schema Registry
streamkap pipelines list --json           # List pipelines
streamkap sources metrics <id> --json     # Source metrics
streamkap dashboard stats --json          # Organisation overview
```

**Direct Kafka commands** (require Kafka credentials -- see [Adding Kafka Access](#adding-kafka-access)):

```bash
streamkap kafka produce <topic> --value '{"key":"val"}'   # Produce a single message
streamkap kafka consume <topic> --max-messages 10          # Consume a batch
streamkap kafka subscribe <topic> --timeout 30000          # Real-time subscribe
```

**Output format:** JSON when piped, text when interactive. Override with `--json` or `--format text`.

**Destructive commands** (delete, stop, reset) require `--yes` in interactive terminals. Preview with `--dry-run`. When piped (scripts and agents), they run without confirmation.

### Shell completions

```bash
streamkap completions bash >> ~/.bashrc
streamkap completions zsh >> ~/.zshrc
streamkap completions fish > ~/.config/fish/completions/streamkap.fish
```

For the full CLI reference see [docs.streamkap.com/cli](https://docs.streamkap.com/cli).

---

## MCP Server

The MCP server lets AI agents manage your Streamkap infrastructure through natural language. Detailed setup for every supported client is at [docs.streamkap.com/mcp-server](https://docs.streamkap.com/mcp-server).

### Claude Code

```bash
claude mcp add --scope user \
  --header "X-Streamkap-Client-ID: your-client-id" \
  --header "X-Streamkap-Client-Secret: your-client-secret" \
  --transport http \
  streamkap https://mcp.streamkap.com/mcp
```

### Cursor, Windsurf

Add to `.cursor/mcp.json` (Cursor) or `~/.codeium/windsurf/mcp_config.json` (Windsurf):

```json
{
  "mcpServers": {
    "streamkap": {
      "type": "http",
      "url": "https://mcp.streamkap.com/mcp",
      "headers": {
        "X-Streamkap-Client-ID": "your-client-id",
        "X-Streamkap-Client-Secret": "your-client-secret"
      }
    }
  }
}
```

### VS Code Copilot

Add to `.vscode/mcp.json` (note the different schema -- `servers` instead of `mcpServers`):

```json
{
  "servers": {
    "streamkap": {
      "type": "http",
      "url": "https://mcp.streamkap.com/mcp",
      "headers": {
        "X-Streamkap-Client-ID": "your-client-id",
        "X-Streamkap-Client-Secret": "your-client-secret"
      }
    }
  }
}
```

### Claude Desktop

Claude Desktop requires the absolute path to your Node.js binary because it does not source your shell environment. See the [Claude Desktop setup guide on docs.streamkap.com](https://docs.streamkap.com/mcp-server) for the full configuration.

### Example prompts

Once connected, ask your AI agent things like:

- "Give me an overview of my infrastructure"
- "Are any of my pipelines broken? Show me the details"
- "Check the logs for any errors in the last hour"
- "Produce a test message to my-topic"
- "Find all DLQ topics and check for errors"

---

## Capabilities

- **Pipelines** -- create, update, delete, monitor metrics and logs, bulk operations
- **Sources** -- manage CDC connectors (MySQL, PostgreSQL, MongoDB, etc.), deploy, pause, resume, restart, stop, snapshots
- **Destinations** -- manage sinks (Snowflake, BigQuery, ClickHouse, etc.), deploy, pause, resume, restart, stop, monitor lag
- **Transforms** -- manage stream processors, deploy to preview or production, run unit tests, clone
- **Topics** -- list, inspect, create Kafka topics, read sample messages
- **Tags** -- organise and search resources by tag
- **Schema Registry** -- browse subjects and schemas
- **Consumer Groups** -- inspect lag, identify stuck consumers, reset offsets
- **Dashboard & Logs** -- organisation statistics, data lineage, search and filter logs
- **Alerts** -- manage notification subscribers and preferences
- **Usage** -- query and export usage metrics
- **Kafka Access** -- manage direct-Kafka users
- **Cluster Scaling** -- inspect cluster status, scale up or down
- **Direct Kafka** -- produce and consume messages with optional Schema Registry encoding (Avro, JSON Schema, Protobuf)

---

## Adding Kafka Access

> Or use a [Project Key](#project-keys) -- one value instead of the individual env vars below.

To enable the direct Kafka tools and Schema Registry encoding, create a Kafka user from the **Kafka Access** page in your [Streamkap dashboard](https://app.streamkap.com). The dashboard gives you the bootstrap servers, username, and password. **All three are required together** — Streamkap's Kafka proxy always requires SASL/SSL, so partial credentials will fail at startup with a clear error.

Add them to your existing config:

```json
{
  "env": {
    "STREAMKAP_CLIENT_ID": "your-client-id",
    "STREAMKAP_CLIENT_SECRET": "your-client-secret",
    "KAFKA_BOOTSTRAP_SERVERS": "your-kafka-proxy:9092",
    "KAFKA_API_KEY": "your-kafka-username",
    "KAFKA_API_SECRET": "your-kafka-password",
    "SCHEMA_REGISTRY_URL": "https://your-schema-registry:8081"
  }
}
```

For the CLI, export the same values as environment variables in your shell.

---

## Environment Variables

### Core

Set a [Project Key](#project-keys) **or** a Client ID + Client Secret pair (individual vars win on conflict).

| Variable | Description |
|----------|-------------|
| `STREAMKAP_PROJECT_KEY` | Base64-encoded Project Key (see [Project Keys](#project-keys)) |
| `STREAMKAP_CLIENT_ID` | Streamkap API client ID |
| `STREAMKAP_CLIENT_SECRET` | Streamkap API client secret |
| `STREAMKAP_API_URL` | Override the API base URL (default `https://api.streamkap.com`) |

### Kafka (optional)

The three Kafka variables below must be set together — bootstrap servers alone is not enough. Create a Kafka user from the **Kafka Access** page in your [Streamkap dashboard](https://app.streamkap.com) to get all three at once.

| Variable | Description |
|----------|-------------|
| `KAFKA_BOOTSTRAP_SERVERS` | Kafka broker addresses (required when using direct Kafka tools) |
| `KAFKA_API_KEY` | Kafka SASL username (required when using direct Kafka tools) |
| `KAFKA_API_SECRET` | Kafka SASL password (required when using direct Kafka tools) |
| `SCHEMA_REGISTRY_URL` | Schema Registry URL -- enables Avro / JSON Schema / Protobuf encode and decode |
| `SCHEMA_REGISTRY_USERNAME` | Schema Registry basic auth username |
| `SCHEMA_REGISTRY_PASSWORD` | Schema Registry basic auth password |

### Tool filtering (optional)

Shrink the catalog an agent sees — useful for context-constrained clients (Flink Agents, small-context models) and for scoping what a key can do.

| Variable | Description |
|----------|-------------|
| `MCP_TOOL_PROFILE` | `full` (default), `read-only`, `agent-operator`, `infra-admin`, or `directory-default` |
| `MCP_ALLOW_TOOLS` | Comma-separated whitelist — when set, only these tools are authorized within the selected catalog |
| `MCP_BLOCK_TOOLS` | Comma-separated blacklist — removed from the catalog |
| `MCP_TOOLSETS` | Comma-separated feature groups such as `sources,topics,tags`; narrows the catalog before profile and allow/block rules |
| `MCP_CATALOG` | `full` (default) or `compact`; compact keeps the core tools plus the four meta-tools visible |

Blocked tools are hidden from `tools/list`, not just rejected at call time. In HTTP mode, use `X-Streamkap-Toolsets` or append `?toolsets=sources,tags` to narrow a session further. Environment, header, URL, and server-verified Project Key toolsets are intersected; unknown names or a disjoint intersection expose no tools. The available groups are `pipelines`, `sources`, `destinations`, `topics`, `transforms`, `observability`, `tags`, `schema-registry`, `consumer-groups`, `admin`, `kafka-access`, `alerts`, `usage`, `cluster`, `tenant`, `kafka`, and `meta` (`workflows` holds `diagnose_pipeline` and `health_overview`; `docs` holds `search_docs`).

Compact mode changes catalog shape, not authorization. It is the default for OAuth sessions — Connector Directory users get it unless they ask for `?catalog=full` — and opt-in everywhere else. Hidden authorized reads remain reachable through `streamkap_search_tools`, `streamkap_describe_tool`, and `streamkap_invoke_read_tool`; hidden writes require a profile that exposes `streamkap_invoke_write_tool`, which excludes `read-only`, `agent-operator`, and `directory-default`. When using `MCP_TOOLSETS`, include `meta` (for example, `sources,meta`) to expose the discovery and dispatch tools. For HTTP, send `X-Streamkap-Catalog: compact` or append `?catalog=compact`; a request can narrow `full` to `compact` but cannot widen an operator-pinned compact catalog.

[Project Keys](#project-keys) can carry profile, allow/block, and toolset scoping. The MCP server uses the backend's copy of that scoping in both stdio and HTTP modes; it refuses a Project Key whose server-side configuration cannot be verified.

---

## Telemetry

**Nothing is sent anywhere by default.** A fresh `npx @streamkap/tools` install makes no telemetry calls of any kind — the package contains an optional usage beacon and optional error tracking, and both stay inert unless *you* configure an endpoint for them.

| Layer | Sends data only when | Default |
|----------|-------------|---------|
| Anonymous usage beacon | `STREAMKAP_TELEMETRY_ENDPOINT` is set | off — no endpoint ships in the package |
| Sentry error tracking | `SENTRY_DSN` is set **and** you install `@sentry/node` yourself (optional peer dep) | off |
| OpenTelemetry traces | `STREAMKAP_OTEL_ENABLED=1` **and** you install the OTel peer deps yourself | off |
| Prometheus `/metrics` | you run the server in HTTP mode and scrape it | not exposed in stdio mode |

If the beacon is ever enabled, it sends one event per tool call: the tool name, duration, success/failure, package version, OS/arch, and a salted sha256 hash of your client ID. It does **not** send tool arguments, response bodies, record contents, topic names, tenant IDs, raw credentials, or stack traces.

To turn it off even where an endpoint is configured, set either:

```bash
DO_NOT_TRACK=1          # https://consoledonottrack.com
STREAMKAP_TELEMETRY=0   # equivalent, Streamkap-specific
```

The CLI (`streamkap`) never emits telemetry at all, regardless of configuration.

Full disclosure, including the exact payload and the source lines that gate every outbound call, is in `docs/TELEMETRY.md` in the source tree.

---


## License

[Elastic License 2.0](https://www.elastic.co/licensing/elastic-license). See [LICENSE](LICENSE).

More