Install
$ agentstack add mcp-streamnative-streamnative-mcp-server ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
StreamNative MCP Server
A Model Context Protocol (MCP) server for integrating AI agents with StreamNative Cloud resources and Apache Kafka/Pulsar messaging systems.
Overview
StreamNative MCP Server provides a standard interface for LLMs (Large Language Models) and AI agents to interact with StreamNative Cloud services, Apache Kafka, and Apache Pulsar. This implementation follows the Model Context Protocol specification, enabling AI applications to access messaging services through a standardized interface.
The server currently negotiates MCP protocol versions 2025-11-25, 2025-06-18, 2025-03-26, and 2024-11-05. The default preference is 2025-11-25, while older clients remain supported through protocol negotiation.
Features
- StreamNative Cloud Integration:
- Connect to StreamNative Cloud resources with authentication
- Switch to clusters available in your organization
- Describe the status of clusters resources
- Apache Kafka Support: Interact with Apache Kafka resources including:
- Kafka Admin operations (topics, partitions, consumer groups)
- Schema Registry operations
- Kafka Connect operations (*)
- Kafka Client operations (producers, consumers)
- Apache Pulsar Support: Interact with Apache Pulsar resources including:
- Pulsar Admin operations (topics, namespaces, tenants, schemas, etc.)
- Pulsar Client operations (producers, consumers)
- Functions, Sources, and Sinks management
- Read-only MCP resources for context, catalog, and bounded admin summaries
- Multiple Connection Options:
- Connect to StreamNative Cloud with service account authentication
- Connect directly to external Apache Kafka clusters
- Connect directly to external Apache Pulsar clusters
> *: The Kafka Connect operations are only tested and verified on StreamNative Cloud.
Installation
Homebrew (macOS and Linux)
The easiest way to install streamnative-mcp-server is using Homebrew:
# Add the tap repository
brew tap streamnative/streamnative
# Install streamnative-mcp-server
brew install streamnative/streamnative/snmcp
Docker Image
StreamNative MCP Server releases the Docker Image to streamnative/snmcp, and it can be used to run both stdio server and sse server via docker command.
# Pull image from Docker Hub
docker pull streamnative/snmcp
Helm Chart (Kubernetes)
See [charts/snmcp/README.md](charts/snmcp/README.md) for Helm installation via the StreamNative chart repository.
From Github Release
Visit https://github.com/streamnative/streamnative-mcp-server/releases to get the latest binary of StreamNative MCP Server.
From Source
# Clone the repository
git clone https://github.com/streamnative/streamnative-mcp-server.git
cd streamnative-mcp-server
go mod tidy
go mod download
# Build the binary
make
Usage
Prerequisites
If you want to access to your StreamNative Cloud, you will need to have following resources ready:
- Access to StreamNative Cloud.
- StreamNative Cloud Organization
- StreamNative Cloud instance and cluster
- Service Account with admin role
- Download the Service Account Key file
Start the MCP Server
Using stdio Server
# Start MCP server with StreamNative Cloud authentication
bin/snmcp stdio --organization my-org --key-file /path/to/key-file.json
# Start MCP server with StreamNative Cloud authentication and pre-configured context
# When --pulsar-instance and --pulsar-cluster are provided, context mutation tools are disabled
bin/snmcp stdio --organization my-org --key-file /path/to/key-file.json --pulsar-instance my-instance --pulsar-cluster my-cluster
# Start MCP server with external Kafka
bin/snmcp stdio --use-external-kafka --kafka-bootstrap-servers localhost:9092 --kafka-auth-type SASL_SSL --kafka-auth-mechanism PLAIN --kafka-auth-user user --kafka-auth-pass pass --kafka-use-tls --kafka-schema-registry-url https://sr.local --kafka-schema-registry-auth-user user --kafka-schema-registry-auth-pass pass
# Start MCP server with external Pulsar
bin/snmcp stdio --use-external-pulsar --pulsar-web-service-url http://pulsar.example.com:8080
bin/snmcp stdio --use-external-pulsar --pulsar-web-service-url http://pulsar.example.com:8080 --pulsar-token "xxx"
# Start MCP server with stdio by docker with StreamNative Cloud authentication
docker run -i --rm -e SNMCP_ORGANIZATION=my-org -e SNMCP_KEY_FILE=/key.json -v /path/to/key-file.json:/key.json -p 9090:9090 streamnative/snmcp stdio
Using SSE (Server-Sent Events) Server
# Start MCP server with SSE and StreamNative Cloud authentication
bin/snmcp sse --http-addr :9090 --http-path /mcp --organization my-org --key-file /path/to/key-file.json
# Start MCP server with SSE and pre-configured StreamNative Cloud context
# When --pulsar-instance and --pulsar-cluster are provided, context mutation tools are disabled
bin/snmcp sse --http-addr :9090 --http-path /mcp --organization my-org --key-file /path/to/key-file.json --pulsar-instance my-instance --pulsar-cluster my-cluster
# Start MCP server with SSE and external Kafka
bin/snmcp sse --http-addr :9090 --http-path /mcp --use-external-kafka --kafka-bootstrap-servers localhost:9092
# Start MCP server with SSE and external Pulsar
bin/snmcp sse --http-addr :9090 --http-path /mcp --use-external-pulsar --pulsar-web-service-url http://pulsar.example.com:8080
# Start MCP server with SSE by docker with StreamNative Cloud authentication
docker run -i --rm -e SNMCP_ORGANIZATION=my-org -e SNMCP_KEY_FILE=/key.json -v /path/to/key-file.json:/key.json -p 9090:9090 streamnative/snmcp sse
Multi-Session Pulsar Mode (SSE only)
When running the SSE server with external Pulsar, you can enable multi-session mode to support per-user authentication. In this mode, each HTTP request must include an Authorization: Bearer header, and the server will create separate Pulsar sessions for each unique token.
# Start SSE server with multi-session Pulsar mode
bin/snmcp sse --http-addr :9090 --http-path /mcp \
--use-external-pulsar \
--pulsar-web-service-url http://pulsar.example.com:8080 \
--multi-session-pulsar \
--session-cache-size 100 \
--session-ttl-minutes 30
Key features:
- Per-user sessions: Each user's Pulsar token creates a separate session
- LRU caching: Sessions are cached with LRU eviction when the cache is full
- TTL-based cleanup: Idle sessions are automatically cleaned up after the configured TTL
- Strict authentication: Requests without a valid
Authorizationheader receive HTTP 401 Unauthorized
Authentication flow:
- Client connects to SSE endpoint with
Authorization: Bearerheader - Server validates the token by attempting to create a Pulsar session
- If valid, the session is cached and reused for subsequent requests
- If invalid or missing, server returns HTTP 401 Unauthorized
Configuration options: | Flag | Default | Description | |------|---------|-------------| | --multi-session-pulsar | false | Enable per-user Pulsar sessions | | --session-cache-size | 100 | Maximum number of cached sessions | | --session-ttl-minutes | 30 | Session idle timeout before eviction |
> Note: Multi-session mode is only available for external Pulsar mode (--use-external-pulsar) and only works with the SSE server, not stdio.
Command-line Options
Usage:
bin/snmcp [command]
Available Commands:
stdio Start stdio server
sse Start sse server
help Help about any command
Flags:
--audience string The audience identifier for the API server (default "https://api.streamnative.cloud")
--client-id string The client ID to use for authorization grants (default "AJYEdHWi9EFekEaUXkPWA2MqQ3lq1NrI")
--config-dir string If present, the config directory to use
--enable-command-logging When enabled, the server will log all command requests and responses to the log file
--features strings Features to enable, defaults to `all`
-h, --help help for bin/snmcp
--issuer string The OAuth 2.0 issuer endpoint (default "https://auth.streamnative.cloud/")
--kafka-auth-mechanism string The auth mechanism to use for Kafka
--kafka-auth-pass string The auth password to use for Kafka
--kafka-auth-type string The auth type to use for Kafka
--kafka-auth-user string The auth user to use for Kafka
--kafka-bootstrap-servers string The bootstrap servers to use for Kafka
--kafka-ca-file string The CA file to use for Kafka
--kafka-client-cert-file string The client certificate file to use for Kafka
--kafka-client-key-file string The client key file to use for Kafka
--kafka-schema-registry-auth-pass string The auth password to use for the schema registry
--kafka-schema-registry-auth-user string The auth user to use for the schema registry
--kafka-schema-registry-bearer-token string The bearer token to use for the schema registry
--kafka-schema-registry-url string The schema registry URL to use for Kafka
--key-file string The key file to use for authentication to StreamNative Cloud
--log-file string Path to log file
--organization string The organization to use for the API server
--proxy-location string The proxy location to use for the API server (default "https://proxy.streamnative.cloud")
--pulsar-auth-params string The auth params to use for Pulsar
--pulsar-auth-plugin string The auth plugin to use for Pulsar
--pulsar-token string The token to use for Pulsar
--pulsar-cluster string The default cluster to use for the API server
--pulsar-instance string The default instance to use for the API server
--pulsar-tls-allow-insecure-connection The TLS allow insecure connection to use for Pulsar
--pulsar-tls-cert-file string The TLS cert file to use for Pulsar
--pulsar-tls-enable-hostname-verification The TLS enable hostname verification to use for Pulsar (default true)
--pulsar-tls-key-file string The TLS key file to use for Pulsar
--pulsar-tls-trust-certs-file-path string The TLS trust certs file path to use for Pulsar
--pulsar-web-service-url string The web service URL to use for Pulsar
-r, --read-only Read-only mode
--server string The server to connect to (default "https://api.streamnative.cloud")
--use-external-kafka Use external Kafka
--use-external-pulsar Use external Pulsar
--http-addr string HTTP server address (default ":9090")
--http-path string HTTP server path for SSE endpoint (default "/mcp")
--multi-session-pulsar Enable per-user Pulsar sessions based on Authorization header tokens (only for external Pulsar mode)
--session-cache-size int Maximum number of cached Pulsar sessions when multi-session is enabled (default 100)
--session-ttl-minutes int Session TTL in minutes before eviction when multi-session is enabled (default 30)
-v, --version version for bin/snmcp
Tool Configuration
The StreamNative MCP Server supports enabling or disabling specific groups of functionalities via the --features flag. This allows you to control which MCP tools are available to your AI tools. Enabling only the toolsets that you need can help the LLM with tool choice and reduce the context size.
Available Features
The StreamNative MCP Server allows you to enable or disable specific groups of features using the --features flag. This helps you control which tools are available to your AI agents and can reduce context size for LLMs.
Combination Feature Sets
| Feature | Description | |---------------|-----------------------------------------------------------------------------| | all | Enables all features: StreamNative Cloud, Pulsar, and Kafka tools |
Claude connector compatibility: admin tools that previously mixed read and write operations behind one operation parameter are exposed as separate read/write MCP tools, for example kafka_admin_topics_read and kafka_admin_topics_write. Read tools include annotations.readOnlyHint=true; write or side-effectful tools include annotations.destructiveHint=true. In --read-only mode, write/destructive tools are not registered.
Kafka Features
| Feature | Description | Docs | |--------------------------|--------------------------------------------------|------| | all-kafka | Enables all Kafka admin and client tools, without Apache Pulsar and StreamNative Cloud tools | | kafka-admin | Kafka administrative operations (all admin tools) | | | kafka-client | Kafka client operations (produce/consume) |[kafkaclientconsume.md](docs/tools/kafkaclientconsume.md), [kafkaclientproduce.md](docs/tools/kafkaclientproduce.md) | | kafka-admin-topics | Manage Kafka topics | [kafkaadmintopics.md](docs/tools/kafkaadmintopics.md) | | kafka-admin-partitions | Manage Kafka partitions | [kafkaadminpartitions.md](docs/tools/kafkaadminpartitions.md) | | kafka-admin-groups | Manage Kafka consumer groups | [kafkaadmingroups.md](docs/tools/kafkaadmingroups.md) | | kafka-admin-schema-registry | Interact with Kafka Schema Registry | [kafkaadminschemaregistry.md](docs/tools/kafkaadminschemaregistry.md) | | kafka-admin-connect | Manage Kafka Connect connectors | [kafkaadminconnect.md](docs/tools/kafkaadminconnect.md) |
Pulsar Features
| Feature | Description | Docs | |--------------------------|--------------------------------------------------|------| | all-pulsar | Enables all Pulsar admin and client tools, without Apache Kafka and StreamNative Cloud tools | [pulsarresources.md](docs/tools/pulsarresources.md) | | pulsar-admin | Pulsar administrative operations (all admin tools)| [pulsarresources.md](docs/tools/pulsarresources.md) | | pulsar-client | Pulsar client operations (produce/consume) | [pulsarclientconsume.md](docs/tools/pulsarclientconsume.md), [pulsarclientproduce.md](docs/tools/pulsarclientproduce.md) | | pulsar-admin-brokers | Manage Pulsar brokers | [pulsaradminbrokers.md](docs/tools/pulsaradminbrokers.md) | | pulsar-admin-brokers-status | Check Pulsar broker or proxy status | [pulsaradminstatus.md](docs/tools/pulsaradminstatus.md) | | pulsar-admin-broker-stats | Access Pulsar broker statistics | [pulsaradminbrokerstats.md](docs/tools/pulsaradminbrokerstats.md) | | pulsar-admin-clusters | Manage Pulsar clusters | [pulsaradminclusters.md](docs/tools/pulsaradminclusters.md) | | `pulsar-admin-functi
…
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: streamnative
- Source: streamnative/streamnative-mcp-server
- License: Apache-2.0
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.