SSM MCP Server
Provides access to Cloudera Streams Messaging Manager (SMM) for cluster management, topic listing, broker management, configuration management, and admin endpoints in both standalone and CDP deployments.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SSM MCP Server list all topics"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SSM MCP Server
The Streams Messaging Manager home interface showing cluster overview and navigation
Model Context Protocol server providing access to Cloudera Streams Messaging Manager (SMM) with support for both direct SMM access and CDP integration.
Works with both standalone SMM deployments and Cloudera Data Platform (CDP) SMM deployments - provides core SMM functionality through Claude Desktop.
⚠️ Current Status
34.4% Success Rate - 22 out of 64 MCP tools are currently working. Core functionality including cluster management, topic listing, and admin operations is operational. Many advanced features (metrics, alerts, consumer groups) are not yet working due to API endpoint limitations.
Working Features:
✅ Core SMM Management (100%)
✅ Cluster Management (100%)
✅ Broker Management (100%)
✅ Topic Management (100%)
✅ Configuration Management (100%)
✅ Admin Endpoints (100%) - NEW!
Related MCP server: MCP cldkctl Server
Features
Multiple Authentication Methods:
Direct SMM Authentication: Basic auth for standalone SMM deployments
Apache Knox Integration: JWT tokens, cookies, and passcode tokens for CDP deployments
Read-only by default - Safe exploration of SMM clusters and configuration
Working SMM API coverage with 22 verified MCP tools for core SMM management:
✅ Core SMM Management: Version info, system details (100% working)
✅ Cluster Management: Cluster details, broker information (100% working)
✅ Broker Management: Broker details, metrics, configurations (100% working)
✅ Topic Management: List topics, get topic info, configurations (100% working)
✅ Configuration Management: Broker configs, topic configs (100% working)
✅ Admin Endpoints: Detailed cluster, broker, and topic data (100% working)
⚠️ Consumer Group Management: Not available through SMM API (0% working)
⚠️ Metrics & Monitoring: Not available through SMM API (0% working)
⚠️ Alert Management: Not available through SMM API (0% working)
⚠️ Topic Data Sampling: Not available through SMM API (0% working)
⚠️ Kafka Connect: Not available through SMM API (0% working)
⚠️ Health Monitoring: Not available through SMM API (0% working)
Quick Start
The Streams Messaging Manager home interface showing cluster overview and navigation
For Standalone SMM Deployments
Install and setup:
git clone https://github.com/your-org/ssm-mcp-server.git cd ssm-mcp-server # Option A: Using uv (recommended) make setup # Installs uv if needed and dependencies # Option B: Using pip python3 -m venv .venv source .venv/bin/activate pip install -e .Configure Claude Desktop - Edit
~/Library/Application Support/Claude/claude_desktop_config.json:{ "mcpServers": { "ssm-mcp-server": { "command": "/FULL/PATH/TO/SSM-MCP-Server/run_mcp_server.sh", "args": [], "cwd": "/FULL/PATH/TO/SSM-MCP-Server", "env": { "MCP_TRANSPORT": "stdio", "SMM_API_BASE": "http://localhost:8080/api/v2", "SMM_USER": "admin", "SMM_PASSWORD": "admin", "SMM_READONLY": "true" } } } }Set your credentials:
# Option A: Interactive setup (recommended) python setup_config.py # Option B: Manual setup cp config.template .env nano .env # Edit with your actual credentialsRestart Claude Desktop and start interacting with your SMM cluster!
For CDP SMM deployments (via Apache Knox)
Your Knox gateway URL will typically be:
https://<your-knox-gateway>:8444/gateway/smmGet your Knox JWT token from the CDP UI and use it with the configurations below.
Knox Configuration Examples
Option A: JWT Token Authentication
{
"mcpServers": {
"ssm-mcp-server": {
"command": "/FULL/PATH/TO/SSM-MCP-Server/run_mcp_server.sh",
"args": [],
"cwd": "/FULL/PATH/TO/SSM-MCP-Server",
"env": {
"MCP_TRANSPORT": "stdio",
"KNOX_GATEWAY_URL": "https://your-knox-gateway:8444/gateway/smm",
"KNOX_TOKEN": "your-knox-jwt-token",
"SMM_READONLY": "true"
}
}
}
}Option B: Username/Password Authentication
{
"mcpServers": {
"ssm-mcp-server": {
"command": "/FULL/PATH/TO/SSM-MCP-Server/run_mcp_server.sh",
"args": [],
"cwd": "/FULL/PATH/TO/SSM-MCP-Server",
"env": {
"MCP_TRANSPORT": "stdio",
"KNOX_GATEWAY_URL": "https://your-knox-gateway:8444/gateway/smm",
"KNOX_USER": "your-username",
"KNOX_PASSWORD": "your-password",
"KNOX_TOKEN_ENDPOINT": "https://your-knox-gateway:8444/gateway/knoxsso/api/v1/websso",
"SMM_READONLY": "true"
}
}
}
}Configuration Options
All configuration is done via environment variables:
Direct SMM Authentication (Standalone)
Variable | Required | Description |
| Yes | Full SMM API URL (e.g., |
| Yes | SMM username (e.g., |
| Yes | SMM password (e.g., |
| No | Read-only mode (default: |
| No | HTTP timeout in seconds (default: |
Knox Authentication (CDP)
Variable | Required | Description |
| Yes* | Knox gateway URL (e.g., |
| Yes* | Knox JWT token for authentication |
| No | Alternative: provide full cookie string instead of token |
| No | Alternative: Knox passcode token (auto-exchanged for JWT) |
| No | Knox username for basic auth |
| No | Knox password for basic auth |
| No | Knox token endpoint for JWT exchange |
| No | Verify SSL certificates (default: |
| No | Path to CA certificate bundle |
| No | Read-only mode (default: |
| No | HTTP timeout in seconds (default: |
* Either SMM_API_BASE (for direct) or KNOX_GATEWAY_URL (for Knox) is required
Development with uv
This project uses uv for fast dependency management and Python project management.
Quick Commands
# Install uv and dependencies
make setup
# Run the server
make run
# Run tests
make test
# Run linting
make lint
# Format code
make format
# Show all available commands
make helpManual uv Commands
# Install dependencies
uv sync
# Run the server
uv run python -m ssm_mcp_server.server
# Run tests
uv run python test_connection_uv.py
# Add a new dependency
uv add package-name
# Add a development dependency
uv add --dev package-name
# Update dependencies
uv sync --upgradeExample Usage
Once configured, you can ask Claude questions like:
Basic Information
"What version of SMM am I running?"
"Show me the cluster details"
"List all brokers in the cluster"
"What topics are available?"
"Show me all consumer groups"
Example: Cluster health and broker information display
Topic Management
"Show me the configuration for topic 'sales-data'"
"Show me the content of topic 'logs' partition 0"
"List all topics in the cluster"
"What are the metrics for topic 'user-events'?"
Example: Listing all user topics in the cluster
Example: Detailed topic information and configuration
Example: Topic configuration management and analysis
Note: SMM is primarily a monitoring tool. For topic creation/deletion, use Kafka admin tools:
kafka-topics.sh --create --topic user-events --partitions 3 --bootstrap-server localhost:9092kafka-topics.sh --delete --topic test-topic --bootstrap-server localhost:9092
Broker Management
"Show me all brokers in the cluster"
"What are the details for broker 1?"
"Show me broker metrics for the last hour"
"What are the broker configurations?"
Example: Detailed broker information and monitoring
Configuration Management
"Show me broker configurations"
"What are the topic configurations for 'heartbeats'?"
"Show me default topic configurations"
"What are the cluster configuration details?"
Available Tools
Current Status: 34.4% success rate (22 out of 64 MCP tools working)
The following tools are currently working and functional:
🔧 Core SMM Management (100% working)
get_smm_info()- Get SMM version and system informationget_smm_version()- Get SMM version details
🏢 Cluster Management (100% working)
get_cluster_details()- Get cluster details and information
🖥️ Broker Management (100% working)
get_brokers()- Get all brokers in the clusterget_broker(broker_id)- Get details of a specific brokerget_broker_metrics(broker_id, duration?, from_time?, to_time?)- Get metrics for a specific brokerget_all_broker_details()- Get all broker details with configurationsget_broker_details(broker_id)- Get detailed broker information including configuration
📊 Topic Management (100% working)
get_all_topic_infos()- Get all topic informationget_topic_description(topic_name)- Get detailed description of a specific topicget_topic_info(topic_name)- Get basic information about a specific topicget_topic_partitions(topic_name)- Get partition information for a specific topicget_topic_partition_infos(topic_name)- Get detailed partition information for a specific topicget_topic_configs(topic_name)- Get configuration for a specific topicget_all_topic_configs()- Get configurations for all topicsget_default_topic_configs()- Get default topic configurations
⚙️ Configuration Management (100% working)
get_broker_configs()- Get broker configurations
🔧 Admin Endpoints (100% working) - NEW!
get_admin_cluster()- Get admin cluster information with detailed broker and controller dataget_admin_brokers()- Get admin brokers information with detailed broker dataget_admin_topics()- Get admin topics information with detailed topic and partition dataget_admin_topic_details(topic_name)- Get admin topic details for a specific topicget_admin_topic_partitions(topic_name)- Get admin topic partitions for a specific topic
📋 For complete information about non-working tools and limitations, see LimitationsREADME.md
Write Operations
By default, the server runs in read-only mode for CDP deployments and write-enabled for standalone deployments. To change this:
Set
SMM_READONLY=false(enable writes) orSMM_READONLY=true(read-only)Restart the MCP server
⚠️ Important Limitations: SMM is primarily a monitoring tool and does not actually perform write operations on topics.
Supported Write Operations:
Creating and managing alert policies
Managing Kafka Connect connectors
Schema registry operations
Consumer group offset management
Not Supported (SMM Limitations):
Topic creation/deletion: SMM API accepts requests but doesn't create/delete topics
Topic configuration changes: SMM API accepts requests but doesn't modify topic configs
Partition management: SMM API accepts requests but doesn't create/modify partitions
For topic management, use Kafka admin tools or the Kafka Admin API directly.
Limitations
For detailed information about current limitations, non-working features, and known issues, please see:
📋 LimitationsREADME.md - Comprehensive documentation of:
SMM topic creation limitations
Non-working MCP tools (65.6% currently not working)
Working MCP tools (34.4% success rate)
API endpoint limitations and resolution status
Contributing guidelines for fixes
Quick Summary: The server currently has a 34.4% success rate (22/64 tools working) due to SMM API limitations. Core functionality like cluster management, topic listing, broker monitoring, and admin operations is operational. Many advanced features are not available through the SMM API.
Security
All sensitive data (passwords, tokens, secrets) is automatically redacted in responses
Large collections are truncated to prevent overwhelming the LLM
Read-only mode is enabled by default for CDP deployments to prevent accidental modifications
Direct SMM authentication uses basic auth over HTTP (suitable for local development)
CDP integration uses secure JWT token authentication
Troubleshooting
Common Issues
"Unauthorized" errors: Check your authentication credentials
For direct SMM: Verify
SMM_USERandSMM_PASSWORDFor CDP: Verify
SMM_TOKENorSMM_USER/SMM_PASSWORD
"Connection refused" errors: Ensure SMM services are running
Check SMM service status
Verify port mappings and network connectivity
"Topic not found" errors: Verify topic names and cluster access
Use
get_all_topic_infos()to list available topicsCheck topic permissions and access rights
SSL certificate errors: For CDP deployments
Set
SMM_VERIFY_SSL=falsefor self-signed certificatesOr provide proper CA bundle with
SMM_CA_BUNDLE
Debug Mode
Enable debug logging by setting environment variable:
export MCP_LOG_LEVEL=DEBUGSummary
The SSM MCP Server is a focused management platform for Cloudera Streams Messaging Manager, providing Claude Desktop with access to core SMM functionality through 22 verified MCP tools.
🎯 What You Get:
Core SMM Control: Manage clusters, brokers, and topics
Comprehensive Monitoring: Detailed cluster and broker information
Configuration Management: Broker and topic configuration access
Admin Operations: Advanced cluster, broker, and topic data access
Enterprise Features: Multi-environment support and secure authentication
🚀 Key Benefits:
34.4% API Coverage: Access to core SMM functionality that's actually available
22 Working Tools: Reliable toolset for essential SMM operations
6 Functional Categories: Organized, discoverable capabilities
Production Ready: Stable, tested functionality for real-world use
User Friendly: Natural language interaction through Claude Desktop
Flexible: Supports both standalone and CDP deployments
📈 Perfect For:
Data Engineers: Topic management, cluster monitoring, configuration analysis
DevOps Teams: Cluster management, broker monitoring, system health
Platform Admins: System monitoring, configuration management, cluster oversight
Kafka Users: Topic exploration, broker details, cluster information
The SSM MCP Server transforms Claude Desktop into a reliable SMM management interface, enabling natural language interaction with your Streams Messaging Manager environment! 🎉
License
Apache License 2.0
Available Tools
78 toolsdisable_alert_policyD
Disable an alert policy.
Inputs: policy_id (required). Returns: result
enable_alert_policyC
Enable an alert policy.
Inputs: policy_id (required). Returns: result
get_accessC
Get access information.
Inputs: no named parameters. Returns: result
get_admin_brokersC
Get admin brokers information with detailed broker data.
Inputs: no named parameters. Returns: result
get_admin_clusterA
Get admin cluster information with detailed broker and controller data.
Inputs: no named parameters. Returns: result
get_admin_topic_detailsC
Get admin topic details for a specific topic.
Inputs: topic_name (required). Returns: result
get_admin_topic_partitionsC
Get admin topic partitions for a specific topic.
Inputs: topic_name (required). Returns: result
get_admin_topicsC
Get admin topics information with detailed topic and partition data.
Inputs: no named parameters. Returns: result
get_alert_notificationsB
Get all alert notifications.
Inputs: no named parameters. Returns: result
get_alert_notifications_by_entityC
Get alert notifications by entity type and ID.
Inputs: entity_type (required), entity_id (required). Returns: result
get_alert_notifications_by_entity_typeC
Get alert notifications by entity type.
Inputs: entity_type (required). Returns: result
get_alert_notifications_by_entity_type_and_nameC
Get alert notifications by entity type and name.
Inputs: entity_type (required), entity_name (required). Returns: result
get_alert_policyC
Get details of a specific alert policy.
Inputs: policy_id (required). Returns: result
get_alert_policy_automataC
Get alert policy automata details.
Inputs: policy_id (required). Returns: result
get_all_alert_policiesA
Get all alert policies.
Inputs: no named parameters. Returns: result
get_all_broker_detailsC
Get all broker details with configurations.
Inputs: no named parameters. Returns: result
get_all_consumer_group_metricsC
Get metrics for all consumer groups.
Inputs: duration, from_time, to_time, state, +2 more. Returns: result
get_all_consumer_infoB
Get information about all consumers.
Inputs: no named parameters. Returns: result
get_all_producer_metricsC
Get metrics for all producers.
Inputs: duration, from_time, to_time. Returns: result
get_all_topic_configsC
Get configurations for all topics.
Inputs: no named parameters. Returns: result
get_all_topic_infosC
Get all topic information.
Inputs: no named parameters. Returns: result
get_brokerC
Get details of a specific broker.
Inputs: broker_id (required). Returns: result
get_broker_detailsC
Get detailed broker information including configuration.
Inputs: broker_id (required). Returns: result
get_broker_metricsC
Get metrics for a specific broker.
Inputs: broker_id (required), duration, from_time, to_time. Returns: result
get_brokersB
Get all brokers in the cluster.
Inputs: no named parameters. Returns: result
get_cluster_detailsC
Get cluster details and information.
Inputs: no named parameters. Returns: result
get_cluster_with_broker_metricsC
Get cluster metrics including broker metrics.
Inputs: duration, from_time, to_time. Returns: result
get_cluster_with_topic_metricsC
Get cluster metrics including topic metrics.
Inputs: duration, from_time, to_time. Returns: result
get_connectorC
Get details of a specific connector.
Inputs: connector_name (required). Returns: result
get_connector_config_defC
Get connector configuration definition.
Inputs: connector_name (required). Returns: result
get_connector_config_definitionsC
Get connector configuration definitions.
Inputs: connector_plugin_class (required). Returns: result
get_connector_config_sampleC
Get sample connector configuration.
Inputs: name (required), connector_plugin_class (required), version (required). Returns: result
get_connector_permissionsC
Get connector permissions.
Inputs: connector_name (required). Returns: result
get_connectorsA
Get all Kafka Connect connectors.
Inputs: no named parameters. Returns: result
get_connector_sink_metricsC
Get connector sink metrics.
Inputs: connector_name (required). Returns: result
get_connector_templatesA
Get available connector templates.
Inputs: no named parameters. Returns: result
get_connect_worker_metricsC
Get Kafka Connect worker metrics.
Inputs: duration, from_time, to_time. Returns: result
get_consumer_group_infoC
Get detailed information about a specific consumer group.
Inputs: group_name (required). Returns: result
get_consumer_group_lineageC
Get lineage information for a consumer group.
Inputs: group_name (required). Returns: result
get_consumer_group_metricsC
Get metrics for a specific consumer group.
Inputs: group_name (required), duration, from_time, to_time. Returns: result
get_consumer_group_namesB
Get all consumer group names.
Inputs: no named parameters. Returns: result
get_consumer_groupsC
Get all consumer groups.
Inputs: no named parameters. Returns: result
get_consumer_infoC
Get information about a specific consumer.
Inputs: consumer_id (required). Returns: result
get_default_topic_configsC
Get default topic configurations.
Inputs: no named parameters. Returns: result
get_key_schema_version_infosC
Get key schema version information for a topic.
Inputs: topic_name (required). Returns: result
get_notifierC
Get specific notifier details.
Inputs: notifier_id (required). Returns: result
get_notifier_provider_configsB
Get notifier provider configurations.
Inputs: no named parameters. Returns: result
get_notifiersA
Get all notifiers.
Inputs: no named parameters. Returns: result
get_producer_lineageC
Get lineage information for a producer.
Inputs: producer_id (required). Returns: result
get_producer_metricsC
Get metrics for a specific producer.
Inputs: producer_id (required), duration, from_time, to_time. Returns: result
get_replication_statsC
Get replication statistics.
Inputs: no named parameters. Returns: result
get_replication_stats_by_clusterC
Get replication stats by source and target clusters.
Inputs: source (required), target (required). Returns: result
get_schema_meta_for_topicC
Get schema metadata for a specific topic.
Inputs: topic_name (required). Returns: result
get_schema_registry_infoC
Get schema registry information.
Inputs: no named parameters. Returns: result
get_smm_infoA
Get SMM version and system information.
Inputs: no named parameters. Returns: result
get_smm_versionB
Get SMM version information.
Inputs: no named parameters. Returns: result
get_topic_configsC
Get configuration for a specific topic.
Inputs: topic_name (required). Returns: result
get_topic_contentC
Get content from a topic partition.
Inputs: topic_name (required), partition (required), offset (required), limit. Returns: result
get_topic_descriptionC
Get detailed description of a specific topic.
Inputs: topic_name (required). Returns: result
get_topic_etelatencyC
Get end-to-end latency for a topic.
Inputs: topic_name (required), duration, from_time, to_time. Returns: result
get_topic_group_etelatencyC
Get end-to-end latency for topic and consumer group.
Inputs: topic_name (required), group_name (required), duration, from_time, +1 more. Returns: result
get_topic_infoC
Get basic information about a specific topic.
Inputs: topic_name (required). Returns: result
get_topic_lineageC
Get lineage information for a topic.
Inputs: topic_name (required). Returns: result
get_topic_metricsC
Get metrics for a specific topic.
Inputs: topic_name (required), duration, from_time, to_time. Returns: result
get_topic_offsetsC
Get offset information for a topic.
Inputs: topic_name (required). Returns: result
get_topic_partition_infosC
Get detailed partition information for a specific topic.
Inputs: topic_name (required). Returns: result
get_topic_partition_lineageC
Get lineage information for a topic partition.
Inputs: topic_name (required), partition (required). Returns: result
get_topic_partition_metricsB
Get metrics for a specific topic partition.
Inputs: topic_name (required), partition_num (required), duration, from_time, +1 more. Returns: result
get_topic_partitionsC
Get partition information for a specific topic.
Inputs: topic_name (required). Returns: result
get_topic_replication_statsC
Get replication stats for specific topic.
Inputs: source (required), target (required), topic_name (required). Returns: result
get_topic_replication_stats_simpleC
Get simple replication stats for topic.
Inputs: topic_name (required). Returns: result
get_value_schema_version_infosB
Get value schema version information for a topic.
Inputs: topic_name (required). Returns: result
is_connect_configuredB
Check if Kafka Connect is configured.
Inputs: no named parameters. Returns: result
is_replication_configuredB
Check if replication is configured.
Inputs: no named parameters. Returns: result
mark_alert_notifications_readC
Mark alert notifications as read.
Inputs: notification_ids (required). Returns: result
perform_connector_actionC
Perform connector actions (start, stop, restart, etc.).
Inputs: connector_name (required), action (required). Returns: result
reset_offsetC
Reset consumer group offset.
Inputs: group_name (required), topic_name (required), partition (required), offset (required). Returns: result
validate_connector_configC
Validate connector configuration.
Inputs: config (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 78 tools
Many tools have overlapping purposes, e.g., get_broker vs get_broker_details vs get_broker_metrics, and get_topic_info vs get_topic_description. The abundance of similarly named tools makes it difficult for an agent to select the correct one without confusion.
Most tools follow a get_<noun> pattern, but there are inconsistencies like get_admin_brokers vs get_broker, and variations like get_all_consumer_info vs get_consumer_info. Plural vs singular usage is inconsistent.
78 tools is excessive for a server focused on monitoring and management. The granularity creates unnecessary complexity, with many tools covering similar concerns.
The set covers a wide range of read operations across brokers, topics, consumer groups, connectors, and alerts. However, it lacks mutation tools for most entities (e.g., create/update/delete topics or connectors), leaving notable gaps in lifecycle coverage.
Maintenance
Related MCP Connectors
Enable secure connectivity between Sentry issues and debugging data, and LLM clients, using a Model Context Protocol (MCP) server.
Model Context Protocol server for Studex tools, notifications, and profile integrations
A Model Context Protocol server for Wix AI tools
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Related MCP Servers
- FlicenseBqualityDmaintenanceA Model Context Protocol server that enables users to kickoff and monitor deployed CrewAI workflows through Claude Desktop.260-
- AlicenseCqualityCmaintenanceA Model Context Protocol server that provides access to Cloudeka's cldkctl CLI functionality through Claude Desktop, Cursor, and other MCP-compatible clients.1001MIT
- FlicenseNot gradedqualityDmaintenanceA comprehensive MCP server for Apache Kafka operations, enabling seamless integration with Claude Desktop and other MCP clients for cluster management, topic operations, and message streaming.2-

fontem-mcp-serverofficial
AlicenseNot gradedqualityBmaintenanceA Model Context Protocol server that surfaces Fontem entities and queries to Claude via standard MCP tools.Apache 2.0