Apache Iggy
AI

MCP Server

The Model Context Protocol (MCP) is an open protocol that standardizes how applications provide context to LLMs. The Apache Iggy MCP Server is an implementation of the MCP protocol for the message streaming infrastructure. It is built using the rmcp crate and supports both stdio and HTTP transports.

Getting started

To start the MCP server, simply run cargo run --bin iggy-mcp.

The docker image is available, and can be fetched via docker pull apache/iggy-mcp.

Configuration

The minimal viable configuration requires at least the Iggy credentials, to create the connection with the running Iggy server using TCP with which the MCP server will communicate. You can choose between HTTP and STDIO transports (e.g. for the local usage with tools such as Claude Desktop choose stdio).

transport = "stdio" # http or stdio are supported

[iggy]
address = "localhost:8090" # TCP address of the Iggy server
username = "iggy"
password = "iggy"
# token = "secret" # Personal Access Token (PAT) can be used instead of username and password
# consumer = "iggy-mcp" # Optional consumer name

# TLS settings for connecting to Iggy server
# [iggy.tls]
# enabled = false
# cert_file = "path/to/cert.pem"

[http] # Optional HTTP API configuration
address = "127.0.0.1:8082"
path = "/mcp"

[http.cors] # Optional CORS configuration for HTTP API
enabled = false
allowed_methods = ["GET", "POST", "PUT", "DELETE"]
allowed_origins = ["*"]
allowed_headers = ["content-type"]
exposed_headers = [""]
allow_credentials = false
allow_private_network = false

[http.tls] # Optional TLS configuration for HTTP API
enabled = false
cert = "core/certs/iggy_cert.pem"
key = "core/certs/iggy_key.pem"

[permissions]
create = true
read = true
update = true
delete = true

[telemetry] # Optional OpenTelemetry integration
enabled = false
service_name = "iggy-mcp"

Keep in mind that either of toml, yaml, or json formats are supported for the configuration file. The path to the configuration can be overriden by IGGY_MCP_CONFIG_PATH environment variable. Each configuration section can be also additionally updated by using the following convention IGGY_MCP_SECTION_NAME.KEY_NAME e.g. IGGY_MCP_IGGY_USERNAME and so on.

Available tools

The MCP server exposes 40+ tools covering the full Iggy API:

Server

ToolDescription
pingHealth check
get_statsServer statistics (streams, topics, partitions, OS info)
get_meCurrent client info
get_clientGet specific client details
get_clientsList all connected clients
get_cluster_metadataCluster information
snapshotCollect troubleshooting data

Streams

ToolDescription
get_streamsList all streams
get_streamGet stream details
create_streamCreate a new stream
update_streamUpdate stream name
delete_streamDelete a stream
purge_streamPurge all messages from a stream

Topics

ToolDescription
get_topicsList topics in a stream
get_topicGet topic details
create_topicCreate a new topic
update_topicUpdate topic settings
delete_topicDelete a topic
purge_topicPurge all messages from a topic

Partitions & Segments

ToolDescription
create_partitionsAdd partitions to a topic
delete_partitionsRemove partitions from a topic
delete_segmentsDelete segments from a partition

Messages

ToolDescription
send_messagesSend messages (partitioning: balanced, key, partition)
poll_messagesPoll messages (strategies: offset, first, last, next, timestamp)

Consumer Groups

ToolDescription
get_consumer_groupsList consumer groups
get_consumer_groupGet consumer group details
create_consumer_groupCreate a consumer group
delete_consumer_groupDelete a consumer group

Consumer Offsets

ToolDescription
get_consumer_offsetGet stored consumer offset
store_consumer_offsetStore consumer offset
delete_consumer_offsetDelete consumer offset

Users & Access Tokens

ToolDescription
get_usersList users
get_userGet user details
create_userCreate a user
update_userUpdate user details
delete_userDelete a user
update_permissionsUpdate user permissions
change_passwordChange user password
get_personal_access_tokensList PATs
create_personal_access_tokenCreate a PAT
delete_personal_access_tokenDelete a PAT

Permissions

The [permissions] section provides a first layer of access control, checked before any request is forwarded to the Iggy server. This lets you restrict the MCP server to read-only operations, for example:

[permissions]
create = false
read = true
update = false
delete = false

On top of this, the Iggy user account used by the MCP server has its own granular permissions. For production use, create a dedicated user with the minimum required permissions.

Claude Desktop integration

Here's the example configuration to be used with Claude Desktop:

{
  "mcpServers": {
    "iggy": {
      "command": "/path/to/iggy-mcp",
      "args": [],
      "env": {
        "IGGY_MCP_TRANSPORT": "stdio"
      }
    }
  }
}

Docker

Run the MCP server as a container:

docker run -e IGGY_MCP_TRANSPORT=http \
  -e IGGY_MCP_IGGY_ADDRESS=iggy-server:8090 \
  -e IGGY_MCP_IGGY_USERNAME=iggy \
  -e IGGY_MCP_IGGY_PASSWORD=iggy \
  -p 8082:8082 \
  apache/iggy-mcp

On this page