# data[].attributes.title
The Missing Protocol: How MCP Bridges LLMs and Data Streams

# data[].attributes.blurb.html
Nobody’s talking about this: MCP isn’t just another way to build chatbots. It’s the bridge we’ve been missing between AI reasoning and real-time data systems. Teams build AI applications that work great in demos but fall apart with production data. Your agents analyze historical reports but can’t tell what’s happening in your Kafka streams. They’re blind to schema changes and disconnected from events that matter to your business. Instead of treating streaming platforms like black boxes, you expose them directly to your agents via MCP protocol. Suddenly, your AI doesn’t just read about data—it lives inside your data flows. Learn what becomes possible when you stop thinking about AI as an external service and start treating it as part of your streaming architecture. We’ll build systems where agents subscribe to real-time events, reason about evolving schemas, and make decisions that ripple through your data platform.

# data[].attributes.slidedeck.data[].slides[].desc.html
The Missing Protocol How MCP Bridges LLMs and Data Streams Viktor Gamov — Principal Developer Advocate, Confluent X/Bluesky: @gamussa • linkedin.com/in/vikgamov

# data[].attributes.slidedeck.data[].slides[].desc.html
If you see this slide, the projector is working. (and my clicker too)

# data[].attributes.slidedeck.data[].slides[].desc.html
Who’s here? • How many of you are building AI agents right now? • Keep them up — how many use • How many of you have touched Kafka or any streaming platform? X/Bluesky: @gamussa MCP to connect them to real systems? ai-assisted.enginnering 4 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Three words changed AI this year. Can you name all three? Raise your hand if you can name the blue one. Keep your guesses. I’ll reveal the labels in about 4 minutes.

# data[].attributes.slidedeck.data[].slides[].desc.html
The Hype Everyone is talking about MCP. I have no idea why. (just kidding, I totally know why) Let’s look at the data… X/Bluesky: @gamussa ai-assisted.enginnering 5 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
The Reveal: Three Search Terms As promised. The three lines from four minutes ago — now with labels. Red: RAG X/Bluesky: @gamussa • Blue: Model Context Protocol • Yellow: Agent Skills The blue line is the reason we’re here. That’s what I’m going to talk about. ai-assisted.enginnering 6 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Who Am I? Viktor Gamov Principal Developer Advocate at Confluent Java Champion • book author I’ve been streaming data since before streaming was cool. (and definitely before it was on the LinkedIn influencer curriculum) X/Bluesky: @gamussa ai-assisted.enginnering 7 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Slides and Resources Everything from this talk — slides, links, resources gamov.dev/rel → speaking.gamov.io Scan the QR or type the short URL. X/Bluesky: @gamussa ai-assisted.enginnering 8 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Part 1: The Problem X/Bluesky: @gamussa ai-assisted.enginnering 9 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Your Agents Are Impressive. And Blind. Your agents can: • Query databases (stale by the time you ask) • Search the web (everyone else’s data) • Read your docs (written last quarter) • Call APIs (request/response, point-in-time) But they cannot see X/Bluesky: @gamussa what’s happening in your systems ai-assisted.enginnering right now. 10 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
The Evolution (and the Gap) LLM

Context

RAG

Agents

MCP Every layer solves one problem. But the API is still stateless. Each call starts fresh. RAG gives context. Agents give actions. MCP gives a standard way to connect both. X/Bluesky: @gamussa ai-assisted.enginnering 11 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Why Streaming Data? What’s streaming? Where does it live? • Orders placed • Apache Kafka (most common) • Sensors reporting • Apache Flink (processing) • Users clicking • Schema Registry • Payments processing • Topics, not tables This is the data your agents are X/Bluesky: @gamussa ai-assisted.enginnering (contracts) missing. 12 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
The Integration Nightmare Every AI tool vendor says: “Just use our SDK!” So you write custom code for: Claude API Your vector DB OpenAI API Your Kafka cluster Gemini API Your Flink jobs Llama via Ollama Your monitoring Mistral API Your internal APIs That’s N × M X/Bluesky: @gamussa integrations. Does it make sense? No. It’s a nightmare. ai-assisted.enginnering 13 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Remember USB-A? Have you ever tried to put a USB-A cable in correctly on the first try? I’ll give you a moment. You turn it one way. Doesn’t fit. You turn it the other way. Still doesn’t fit. You turn it back. Now it fits. Thank you, European Union. We finally have USB-C. MCP is USB-C for AI integrations. X/Bluesky: @gamussa ai-assisted.enginnering 14 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Part 2: Enter MCP X/Bluesky: @gamussa ai-assisted.enginnering 15 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
What is MCP? Model Context Protocol • A • JSON-RPC based — an open standard by Anthropic protocol, not a product (I know, I know… JSON-RPC in 2026… but hear me out) • Client-Server architecture • Language agnostic • One protocol X/Bluesky: @gamussa to connect LLMs to everything ai-assisted.enginnering 16 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
MCP Architecture Host (Claude / IDE / Custom App) MCP Client MCP Server JSON-RPC → Tools Resources Prompts X/Bluesky: @gamussa ai-assisted.enginnering 17 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
The Three Primitives Tools Functions the LLM can call Data the LLM can query_topic() topic: send_message() schema: create_pipeline() metrics: / / / / / X/Bluesky: @gamussa / Resources orders avro/user lag ai-assisted.enginnering read Prompts Templates the LLM can use debug_consumer analyze_throughput explain_schema 18 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Part 3: MCP Meets Data Streaming X/Bluesky: @gamussa ai-assisted.enginnering 19 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
What If… What if your AI agent could: • Subscribe • Query • Understand • Monitor • Create X/Bluesky: @gamussa to a Kafka topic and react to events a Flink materialized view in real time your Avro schemas without you explaining them consumer lag and alert you before things break new streaming pipelines from natural language ai-assisted.enginnering 20 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
MCP + Kafka Architecture AI Application (Agent + MCP Client) ↓ JSON-RPC Kafka MCP Server ↓ Streaming Platform: X/Bluesky: @gamussa Kafka • Schema Registry ai-assisted.enginnering • Flink 21 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Real Example: Anomaly Detection You: “Hey Claude, anything weird happening in the orders topic?” Claude (via MCP): I checked the orders topic. In the last 5 minutes: • Order volume dropped 73% compared to the hourly average • Consumer group payment-processor has lag of • Last successful commit was 45,000 messages 8 minutes ago This looks like the payment service is down. Want me to check the payment-service-health topic? X/Bluesky: @gamussa ai-assisted.enginnering 22 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
The Streaming Lakehouse Pipeline Kafka + Flink + Tableflow + Iceberg Sources → Kafka → Flink SQL + Tableflow → Iceberg Tables → Query Engines (Spark / Trino / DuckDB) MCP doesn’t replace any of these. It X/Bluesky: @gamussa orchestrates them. ai-assisted.enginnering 23 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Part 4: Let’s Build It X/Bluesky: @gamussa ai-assisted.enginnering 24 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Kafka MCP Server Config { “mcpServers”: { “confluent-kafka”: { “command”: “npx”, “args”: [ “-y”, “@confluentinc/mcp-confluent”, “-e”, “.env” ] } } } X/Bluesky: @gamussa ai-assisted.enginnering 25 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Two Flavors, Same API Confluent Cloud OSS / Self-managed @confluentinc/mcp-confluent mcp-kafka • Managed Kafka, Flink, SR • Any Kafka cluster • Confluent Cloud auth • Open source • Full platform integration • Same tools, same API github.com/confluentinc/mcp-confluent They’re X/Bluesky: @gamussa tool-compatible github.com/gamussa/mcp-kafka — swap the server, same agent code works. ai-assisted.enginnering 26 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
What Tools Does It Expose? list-topics → See all topics in the cluster consume-messages → Read from any topic produce-message → Write to any topic list-schemas → Browse Schema Registry create-flink-statement → Run Flink SQL get-consumer-group-lag → Monitor consumer health create-connector → Deploy connectors diagnostics → Troubleshoot errors X/Bluesky: @gamussa ai-assisted.enginnering 27 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Flink SQL via MCP Ask your agent: “Create a real-time dashboard for flight delays” The agent writes and submits: INSERT INTO flight_dashboard SELECT airline_name, CASE WHEN dep_delay > 0 THEN ‘DELAYED’ ELSE ‘ON_TIME’ END AS status, CASE WHEN HOUR(dep_time) < 12 THEN ‘morning’ WHEN HOUR(dep_time) < 17 THEN ‘afternoon’ ELSE ‘evening’ END AS time_of_day, . . . X/Bluesky: @gamussa ai-assisted.enginnering 28 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Meet the Brewmaster An AI agent that manages a craft brewery’s streaming platform. The setup The agent • Confluent Cloud cluster • LangChain4J + TUI4J + Anthropic • Topics for sensors, alerts, metrics • @confluentinc/mcp-confluent • Flink SQL for real-time analytics • Natural language only • Schema Registry for Avro schemas • No code, no dashboards Let’s see what happens when you talk to your data platform like a person. X/Bluesky: @gamussa ai-assisted.enginnering 29 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Demo: The Brewmaster Agent X/Bluesky: @gamussa ai-assisted.enginnering 30 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Part 5: Honest Trade-offs X/Bluesky: @gamussa ai-assisted.enginnering 37 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
What Works ✓ Schema-aware queries — agent understands Avro/Protobuf automatically ✓ Ad-hoc exploration — “show me the last 10 messages from topic X” ✓ Pipeline creation — natural language to Flink SQL ✓ Cross-system correlation — “why is consumer lag growing?” ✓ Debugging X/Bluesky: @gamussa — agent reads logs, schemas, configs in context ai-assisted.enginnering 38 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
What Doesn’t (Yet) ✗ High-throughput consumption — MCP is request/response, not streaming ✗ Latency guarantees — LLM reasoning adds seconds, not milliseconds ✗ Autonomous production writes — do you really want an LLM producing to orders? ✗ Complex stateful processing — Flink is better at this than any agent MCP is for orchestration and exploration, not replacing your streaming pipeline. X/Bluesky: @gamussa ai-assisted.enginnering 39 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Use Case A: 3 AM Anomaly Investigation Scenario: Pager goes off. “Orders topic looks weird.” You want to: understand what’s happening, fast, without writing queries Best tool: MCP + LLM Why: ad-hoc, exploratory, cross-system correlation, nobody wants to write kafka-console-consumer at 3 AM X/Bluesky: @gamussa ai-assisted.enginnering 40 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Use Case B: Continuous Temperature Alerts Scenario: Alert every time fermenter temperature drifts >2° in 10s window You want to: reliable, low-latency, stateful, deterministic detection Best tool: Flink SQL Why: sub-second latency, deterministic, well-understood, no LLM in the hot path X/Bluesky: @gamussa (the agent wrote it, but Flink runs it) ai-assisted.enginnering 41 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Use Case C: “Daily operational summary” Scenario: “Every morning, summarize yesterday’s activity in a Slack message” Best tool: It depends — • If you need structured reliable output • If you want rich narrative analysis The real answer: X/Bluesky: @gamussa → Flink aggregates, agent narrates → MCP + LLM reads live data both, with each doing what it’s good at ai-assisted.enginnering 42 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
The Elephant in the Room: Governance Before you deploy this on Monday, three questions: 1. Who can the agent talk to? (RBAC on your MCP server is not optional) 2. What can it write? (default to read-only in prod; writes need human-in-loop) 3. Who owns the audit trail? (every tool call is an event — log it like one) These aren’t MCP’s job. They’re X/Bluesky: @gamussa your job. ai-assisted.enginnering 43 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
When to Use What Use Case Tool Real-time event processing Flink Persistent streaming pipelines Kafka + Flink Ad-hoc data exploration MCP + LLM Pipeline creation & debugging MCP + LLM Anomaly investigation MCP + LLM Automated alerting Flink (not an agent) “What happened at 3 AM?” MCP + LLM The right tool for the right job. Not everything needs AI. But some things really do. X/Bluesky: @gamussa ai-assisted.enginnering 45 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Why This Matters We’re at an inflection point. Before MCP — AI and streaming are separate worlds. Your dashboards show data. Your agents answer questions. They don’t talk to each other. After MCP — AI agents become first-class citizens of your data platform. They can read streams, understand schemas, create pipelines, investigate incidents. The streaming platform becomes the MCP becomes the X/Bluesky: @gamussa nervous system. interface between human intent and machine execution. ai-assisted.enginnering 46 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
What to Do Monday Morning 1. Install the Confluent MCP server npx @confluentinc/mcp-confluent 2. Connect Claude Desktop to your dev cluster (not prod… yet) 3. Ask it questions “What topics do I have? What’s the schema for X?” 4. Build an agent 5. Come talk to me X/Bluesky: @gamussa for your own streaming use case — I’ll be around after ai-assisted.enginnering 47 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Resources • MCP Spec modelcontextprotocol.io • Confluent MCP github.com/confluentinc/mcp-confluent • Brewmaster demo github.com/gAmUssA/tui-kafka-agent • Confluent Cloud ask me for $400 credit code gamov.dev/rel X/Bluesky: @gamussa ai-assisted.enginnering 48 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
The Real Question I Want to Leave You With Would you let your LLM write to a production Kafka topic? I’ve told you I want to hear X/Bluesky: @gamussa Who’s first? my answer: no, not without human-in-loop. yours. ai-assisted.enginnering 49 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
As always, have a nice day. Viktor Gamov — X/Bluesky: @gamussa

# data[].attributes.slidedeck.data[].slides[].desc.html
X/Bluesky: @gamussa ai-assisted.enginnering 52 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
Questions? I’ll be around after. Come find me. X/Bluesky: @gamussa LinkedIn: linkedin.com/in/vikgamov X/Bluesky: @gamussa ai-assisted.enginnering 51 / 53

# data[].attributes.slidedeck.data[].slides[].desc.html
THE MISSING PROTOCOL How MCP Bridges LLMs and Data Streams Viktor Gamov Part 1: The Problem → → Part 2: Enter MCP Part 4: Let’s Build It → → | @gamussa | Confluent Part 3: Meets Streaming Part 5: Honest Trade-offs speaking.gamov.io ai-assisted.enginnering | AI in Practice | Thu 2:15 PM