Skip to content

Commit 9ef384e

Browse files
committed
Refactor landing and docs
1 parent 5c5d488 commit 9ef384e

54 files changed

Lines changed: 5196 additions & 453 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

content/blog/message-headers.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Since the headers are optional, you can send a message without any headers at al
2020

2121
For now, there are no reserved headers, so you can use any key you want. However, in the future, we might introduce some reserved headers used by the streaming server for the specific purposes such as the message compression, distributed tracing and so no.
2222

23-
The **sample applications** using the message headers can be found [here](https://github.com/apache/iggy/tree/master/core/examples/src/message-headers).
23+
The **sample applications** using the message headers can be found [here](https://github.com/apache/iggy/tree/master/examples/rust/src/message-headers).
2424

2525
## Implementation
2626

content/blog/release-0.6.0.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ All SDKs received significant updates:
4343

4444
- [Rust](https://crates.io/crates/iggy) - builder pattern for client, unified TransportProtocol enum, cluster metadata support
4545
- [C#](https://www.nuget.org/packages/Apache.Iggy/) - high-level IggyPublisher/IggyConsumer clients, TCP reconnection, TLS support, AES encryption
46-
- [Java](https://mvnrepository.com/artifact/org.apache.iggy/iggy-java-sdk) - complete async API using Netty with CompletableFutures, TLS TCP support, fixed memory leak for sync client
46+
- [Java](https://mvnrepository.com/artifact/org.apache.iggy/iggy) - complete async API using Netty with CompletableFutures, TLS TCP support, fixed memory leak for sync client
4747
- [Python](https://pypi.org/project/apache-iggy/) - connection string support, bytes data, typing stubs, musllinux wheels
4848
- [Node.js (TypeScript)](https://www.npmjs.com/package/apache-iggy) - virtual commands (ensureStream, ensureTopic), cluster metadata, added examples
4949
- [Go](https://pkg.go.dev/github.com/apache/iggy/foreign/go) - DeleteConsumerOffset, improved error handling and deserialization

content/blog/release-0.7.0.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ All SDKs now have **auto-publishing** enabled — edge and RC versions are autom
9797

9898
- [Rust](https://crates.io/crates/iggy) — improved high-level producer/consumer with ordered sharding, graceful `shutdown()`, and message loss prevention; fixed `max_in_flight` permit acquisition and client reconnection after disconnect
9999
- [C#](https://www.nuget.org/packages/Apache.Iggy/) — .NET 10 support, `DeleteSegments` and `GetSnapshot` methods, `TimeSpan`-based expiry handling, source link for debugging
100-
- [Java](https://mvnrepository.com/artifact/org.apache.iggy/iggy-java-sdk) — fluent builder API (`Iggy.tcpClientBuilder().blocking()`), semantic exception hierarchy, BDD tests with Cucumber, user headers support, TLS for HTTP, memory leak detection in CI
100+
- [Java](https://mvnrepository.com/artifact/org.apache.iggy/iggy) — fluent builder API (`Iggy.tcpClientBuilder().blocking()`), semantic exception hierarchy, BDD tests with Cucumber, user headers support, TLS for HTTP, memory leak detection in CI
101101
- [Python](https://pypi.org/project/apache-iggy/)`AsyncIterator` interface for `IggyConsumer`, `message_expiry` parameter in `create_topic`, Windows build support
102102
- [Node.js (TypeScript)](https://www.npmjs.com/package/apache-iggy) — comprehensive JSDoc comments for improved API documentation and IDE support
103103
- [Go](https://pkg.go.dev/github.com/apache/iggy/foreign/go) — leader redirection for cluster failover handling

content/docs/ai/mcp.mdx

Lines changed: 127 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22
title: MCP Server
33
---
44

5-
The [Model Context Protocol](https://modelcontextprotocol.io) (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.
5+
The [Model Context Protocol](https://modelcontextprotocol.io) (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.
6+
7+
## Getting started
68

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

911
The [docker image](https://hub.docker.com/r/apache/iggy-mcp) is available, and can be fetched via `docker pull apache/iggy-mcp`.
1012

13+
## Configuration
14+
1115
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](https://claude.ai/download) choose `stdio`).
1216

1317
```toml
@@ -20,6 +24,11 @@ password = "iggy"
2024
# token = "secret" # Personal Access Token (PAT) can be used instead of username and password
2125
# consumer = "iggy-mcp" # Optional consumer name
2226

27+
# TLS settings for connecting to Iggy server
28+
# [iggy.tls]
29+
# enabled = false
30+
# cert_file = "path/to/cert.pem"
31+
2332
[http] # Optional HTTP API configuration
2433
address = "127.0.0.1:8082"
2534
path = "/mcp"
@@ -43,10 +52,115 @@ create = true
4352
read = true
4453
update = true
4554
delete = true
55+
56+
[telemetry] # Optional OpenTelemetry integration
57+
enabled = false
58+
service_name = "iggy-mcp"
4659
```
4760

4861
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.
4962

63+
## Available tools
64+
65+
The MCP server exposes 40+ tools covering the full Iggy API:
66+
67+
### Server
68+
69+
| Tool | Description |
70+
|------|-------------|
71+
| `ping` | Health check |
72+
| `get_stats` | Server statistics (streams, topics, partitions, OS info) |
73+
| `get_me` | Current client info |
74+
| `get_client` | Get specific client details |
75+
| `get_clients` | List all connected clients |
76+
| `get_cluster_metadata` | Cluster information |
77+
| `snapshot` | Collect troubleshooting data |
78+
79+
### Streams
80+
81+
| Tool | Description |
82+
|------|-------------|
83+
| `get_streams` | List all streams |
84+
| `get_stream` | Get stream details |
85+
| `create_stream` | Create a new stream |
86+
| `update_stream` | Update stream name |
87+
| `delete_stream` | Delete a stream |
88+
| `purge_stream` | Purge all messages from a stream |
89+
90+
### Topics
91+
92+
| Tool | Description |
93+
|------|-------------|
94+
| `get_topics` | List topics in a stream |
95+
| `get_topic` | Get topic details |
96+
| `create_topic` | Create a new topic |
97+
| `update_topic` | Update topic settings |
98+
| `delete_topic` | Delete a topic |
99+
| `purge_topic` | Purge all messages from a topic |
100+
101+
### Partitions & Segments
102+
103+
| Tool | Description |
104+
|------|-------------|
105+
| `create_partitions` | Add partitions to a topic |
106+
| `delete_partitions` | Remove partitions from a topic |
107+
| `delete_segments` | Delete segments from a partition |
108+
109+
### Messages
110+
111+
| Tool | Description |
112+
|------|-------------|
113+
| `send_messages` | Send messages (partitioning: balanced, key, partition) |
114+
| `poll_messages` | Poll messages (strategies: offset, first, last, next, timestamp) |
115+
116+
### Consumer Groups
117+
118+
| Tool | Description |
119+
|------|-------------|
120+
| `get_consumer_groups` | List consumer groups |
121+
| `get_consumer_group` | Get consumer group details |
122+
| `create_consumer_group` | Create a consumer group |
123+
| `delete_consumer_group` | Delete a consumer group |
124+
125+
### Consumer Offsets
126+
127+
| Tool | Description |
128+
|------|-------------|
129+
| `get_consumer_offset` | Get stored consumer offset |
130+
| `store_consumer_offset` | Store consumer offset |
131+
| `delete_consumer_offset` | Delete consumer offset |
132+
133+
### Users & Access Tokens
134+
135+
| Tool | Description |
136+
|------|-------------|
137+
| `get_users` | List users |
138+
| `get_user` | Get user details |
139+
| `create_user` | Create a user |
140+
| `update_user` | Update user details |
141+
| `delete_user` | Delete a user |
142+
| `update_permissions` | Update user permissions |
143+
| `change_password` | Change user password |
144+
| `get_personal_access_tokens` | List PATs |
145+
| `create_personal_access_token` | Create a PAT |
146+
| `delete_personal_access_token` | Delete a PAT |
147+
148+
## Permissions
149+
150+
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:
151+
152+
```toml
153+
[permissions]
154+
create = false
155+
read = true
156+
update = false
157+
delete = false
158+
```
159+
160+
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.
161+
162+
## Claude Desktop integration
163+
50164
Here's the example configuration to be used with Claude Desktop:
51165

52166
```json
@@ -63,4 +177,15 @@ Here's the example configuration to be used with Claude Desktop:
63177
}
64178
```
65179

66-
**Remember to use the appropriate Iggy account credentials for your environment** (e.g. create the user with read-only permissions to avoid modifying the data). On top of this, you can also configure the `permissions` for the MCP server to control which operations are allowed (this will be checked first, before forwarding the actual request to the Iggy server).
180+
## Docker
181+
182+
Run the MCP server as a container:
183+
184+
```bash
185+
docker run -e IGGY_MCP_TRANSPORT=http \
186+
-e IGGY_MCP_IGGY_ADDRESS=iggy-server:8090 \
187+
-e IGGY_MCP_IGGY_USERNAME=iggy \
188+
-e IGGY_MCP_IGGY_PASSWORD=iggy \
189+
-p 8082:8082 \
190+
apache/iggy-mcp
191+
```

0 commit comments

Comments
 (0)