<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: DataWorkers</title>
    <description>The latest articles on DEV Community by DataWorkers (@dataworkersteam).</description>
    <link>https://dev.to/dataworkersteam</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3960590%2F4a313246-4cc6-450c-89f8-ca28fe7108fc.png</url>
      <title>DEV Community: DataWorkers</title>
      <link>https://dev.to/dataworkersteam</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dataworkersteam"/>
    <language>en</language>
    <item>
      <title>Why We Bet on MCP (And What We're Still Figuring Out)</title>
      <dc:creator>DataWorkers</dc:creator>
      <pubDate>Sun, 31 May 2026 01:51:04 +0000</pubDate>
      <link>https://dev.to/dataworkersteam/why-we-bet-on-mcp-and-what-were-still-figuring-out-50n6</link>
      <guid>https://dev.to/dataworkersteam/why-we-bet-on-mcp-and-what-were-still-figuring-out-50n6</guid>
      <description>&lt;p&gt;When we started building Data Workers, we had to make a foundational decision: how do our AI agents connect to the dozens of tools in a modern data stack? We could build custom integrations for each tool. We could use existing orchestration frameworks. Or we could bet on the Model Context Protocol (MCP).&lt;/p&gt;

&lt;p&gt;We bet on MCP. Here is why, and what we are still figuring out.&lt;/p&gt;

&lt;h2&gt;
  
  
  What MCP Actually Is
&lt;/h2&gt;

&lt;p&gt;MCP is an open protocol, originally developed by Anthropic, that standardizes how AI models interact with external tools and data sources. Think of it as a USB-C port for AI — a universal connector that lets an AI agent talk to any tool that implements the protocol.&lt;/p&gt;

&lt;p&gt;The ecosystem has exploded. There are now 12,230+ MCP servers available, covering everything from databases to CI/CD tools to cloud platforms. A year ago, this number was in the hundreds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why We Chose MCP Over Custom Integrations
&lt;/h2&gt;

&lt;p&gt;The math is simple. Data Workers needs to connect to warehouses (Snowflake, Databricks, BigQuery, Redshift), orchestrators (Airflow, Dagster, Prefect), transformation tools (dbt, Spark), catalogs (Unity Catalog, Datahub, Hive Metastore), BI tools (Tableau, Looker, Power BI), and more.&lt;/p&gt;

&lt;p&gt;Building and maintaining custom integrations for each of these is a full-time job for a team our size. With MCP, we get a standard interface. If a tool has an MCP server, our agents can connect to it. We are building custom MCP servers for each agent in our swarm.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Working
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rapid prototyping.&lt;/strong&gt; Our Incident Debugging Agent prototype connected to Snowflake query logs, dbt manifests, and Airflow DAGs through MCP in days, not weeks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Composability.&lt;/strong&gt; Because each agent has its own MCP server, agents can share context through the protocol. When the Incident Debugging Agent identifies a data quality issue, it can invoke tools from the Quality Monitoring Agent's server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community leverage.&lt;/strong&gt; We do not have to build an Airflow integration from scratch because community MCP servers for Airflow already exist.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What We're Still Figuring Out
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Authentication at scale.&lt;/strong&gt; Managing credentials across dozens of tools in an enterprise environment is complex. OAuth flows, service accounts, token rotation, least-privilege access.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency.&lt;/strong&gt; Each MCP call adds network overhead. When an agent needs to make 15-20 tool calls to diagnose an incident, those round trips add up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server quality variance.&lt;/strong&gt; The 12,230+ MCP servers vary wildly in quality. We have had to fork and fix community servers more than we expected.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stateful workflows.&lt;/strong&gt; MCP is fundamentally request-response. But data engineering workflows are stateful. We are building a context layer on top of MCP to handle this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security surface area.&lt;/strong&gt; Every MCP connection is an attack surface. When an agent can execute queries against your warehouse, the security implications are serious.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Our Honest Assessment
&lt;/h2&gt;

&lt;p&gt;MCP is the right bet for us. The alternative — building custom integrations — would consume our entire engineering bandwidth. MCP lets a small team connect to a broad tool landscape.&lt;/p&gt;

&lt;p&gt;But MCP is not a silver bullet. It solves the connector problem, not the intelligence problem. Our agents still need to know what queries to run, how to interpret results, and when to escalate to a human. MCP gives us the plumbing. We still have to build the logic.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://dataworkers.io/blog/why-we-bet-on-mcp/" rel="noopener noreferrer"&gt;https://dataworkers.io/blog/why-we-bet-on-mcp/&lt;/a&gt;. Data Workers is an open-source autonomous agent swarm for data engineering — &lt;a href="https://github.com/DataWorkersProject/dataworkers-claw-community" rel="noopener noreferrer"&gt;see the repo&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dataengineering</category>
      <category>ai</category>
      <category>opensource</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Copilots, Agents, and Swarms: A Decision Framework for Data Teams</title>
      <dc:creator>DataWorkers</dc:creator>
      <pubDate>Sun, 31 May 2026 01:38:03 +0000</pubDate>
      <link>https://dev.to/dataworkersteam/copilots-agents-and-swarms-a-decision-framework-for-data-teams-abk</link>
      <guid>https://dev.to/dataworkersteam/copilots-agents-and-swarms-a-decision-framework-for-data-teams-abk</guid>
      <description>&lt;p&gt;Every vendor in data engineering is an 'agent' now. Every product has 'agentic capabilities.' The word has lost all meaning — which makes it harder for data teams to evaluate what they actually need and what is just marketing.&lt;/p&gt;

&lt;p&gt;After talking to dozens of data teams, we think the confusion comes from collapsing three fundamentally different things into one buzzword. Getting the category wrong means either over-building (spending agent-level effort on a copilot problem) or under-building (slapping a chat interface on something that needs autonomous capability).&lt;/p&gt;

&lt;h2&gt;
  
  
  Copilots: AI as an Assistant
&lt;/h2&gt;

&lt;p&gt;A copilot helps a human do their existing job faster. It responds to explicit requests. It does not take independent action. Think GitHub Copilot for pipeline code, or Databricks Assistant for SQL.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good for:&lt;/strong&gt; Writing SQL queries, generating dbt models, explaining error messages, exploring unfamiliar datasets. Useful — but limited to tasks where the human is always present and initiating.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The limitation that matters:&lt;/strong&gt; Copilots do not handle multi-step workflows. They do not monitor your pipelines at 2 AM. They do not alert, triage, or take action when you are asleep. If a pipeline breaks on Saturday night, your copilot is not going to fix it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agents: AI as a Specialist
&lt;/h2&gt;

&lt;p&gt;An agent handles a specific workflow end-to-end with limited human oversight. It operates on triggers — an alert fires, a schema changes, a query fails — rather than waiting for human prompts. It can observe, decide, and act within a defined domain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good for:&lt;/strong&gt; Incident triage, data quality monitoring, schema change management, cost optimization — workflows where the trigger-observe-decide-act loop is well-defined and the patterns are repeatable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where it gets interesting:&lt;/strong&gt; Databricks Genie and BigQuery Data Canvas are copilots — you ask a question, they write a query. An agent like our Data Science and Insights Agent grounds queries in a semantic layer, disambiguates business terms (is 'revenue' gross or net?), and validates results against governed definitions before returning an answer. Google's benchmarks show a 66% accuracy improvement when queries are grounded in a semantic layer. That gap is the difference between a copilot and an agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Swarms: Coordinated Agent Teams
&lt;/h2&gt;

&lt;p&gt;A swarm is multiple agents that share context and coordinate actions. The whole is greater than the sum of the parts because agents can hand off context, trigger each other, and maintain a shared understanding of the environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt; When an incident spans quality, lineage, schema, and governance simultaneously, a single agent cannot solve it. You need coordinated intelligence — the Quality Agent provides diagnostic context, the Schema Agent generates the fix, the Pipeline Agent deploys it, the Catalog Agent documents what happened. Four agents, coordinated automatically, resolving what would take a human hours.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Decide What You Need
&lt;/h2&gt;

&lt;p&gt;Ask three questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Does this task require autonomous action?&lt;/strong&gt; If the human is always present, you want a copilot. If the work needs to happen when no one is watching, you want an agent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Does this task span multiple domains?&lt;/strong&gt; If self-contained, a single agent or copilot is fine. If it requires context from multiple systems, you want coordinated agents.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What is the cost of a wrong action?&lt;/strong&gt; If cheap to fix, a copilot with minimal guardrails works. If expensive (production data, financial reports, compliance), you need agents with human-in-the-loop approval, audit trails, and rollback capability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most data teams need all three categories for different problems. The mistake is treating 'agent' as a universal solution. Match the architecture to the problem.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://dataworkers.io/blog/copilots-agents-swarms-framework/" rel="noopener noreferrer"&gt;https://dataworkers.io/blog/copilots-agents-swarms-framework/&lt;/a&gt;. Data Workers is an open-source autonomous agent swarm for data engineering — &lt;a href="https://github.com/DataWorkersProject/dataworkers-claw-community" rel="noopener noreferrer"&gt;see the repo&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dataengineering</category>
      <category>ai</category>
      <category>opensource</category>
      <category>mcp</category>
    </item>
    <item>
      <title>How to Give Claude Access to Snowflake Without Exposing PII</title>
      <dc:creator>DataWorkers</dc:creator>
      <pubDate>Sun, 31 May 2026 01:25:03 +0000</pubDate>
      <link>https://dev.to/dataworkersteam/how-to-give-claude-access-to-snowflake-without-exposing-pii-48lk</link>
      <guid>https://dev.to/dataworkersteam/how-to-give-claude-access-to-snowflake-without-exposing-pii-48lk</guid>
      <description>&lt;p&gt;You want Claude — or Cursor, or ChatGPT, or any MCP-aware agent — to answer questions about your Snowflake data. You also do not want the agent to read social security numbers, free-text customer notes, or anything subject to GDPR / HIPAA / SOC 2. The default MCP setup hands the agent everything its connection role can see. That is the problem.&lt;/p&gt;

&lt;p&gt;This post walks through five layers of defense, ordered from cheapest to most thorough. Each is independent — pick the ones that match your risk tolerance. The whole stack takes roughly an hour to set up on an existing Snowflake account.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Default Posture (and Why It Is Wrong)
&lt;/h2&gt;

&lt;p&gt;A typical MCP server for Snowflake — including the official one — connects with a service account, exposes a &lt;code&gt;query&lt;/code&gt; tool, and lets the model run any SQL the role can run. That role is usually scoped to a warehouse and a database, but rarely to columns or row sets. The model gets a fluent SQL interface to your warehouse and the warehouse trusts every query it sees.&lt;/p&gt;

&lt;p&gt;The blast radius is large. According to the 2025 IBM Cost of a Data Breach Report, the average cost of a data breach hit $4.88M, with breaches involving extensive cloud data exposure costing 23% more than average. Letting an AI agent run uncurated queries against a production warehouse is exactly the cloud-data-exposure category that drives the premium.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 1: A Dedicated MCP Role
&lt;/h2&gt;

&lt;p&gt;First step, every time: create a role that exists only for the agent. Do not reuse the analytics role, do not reuse the dbt role, and definitely do not use SYSADMIN.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Grant USAGE on the warehouse you want the agent to use. Use a small, dedicated warehouse (X-Small or Small) so a runaway query has a bounded cost ceiling.&lt;/li&gt;
&lt;li&gt;Grant USAGE on the database and the specific schemas the agent should see.&lt;/li&gt;
&lt;li&gt;Grant SELECT on the specific views the agent should query — not raw tables. Views give you a place to apply masking, filters, and joins without modifying the underlying data.&lt;/li&gt;
&lt;li&gt;Never grant CREATE, INSERT, UPDATE, DELETE, or TRUNCATE. The agent is a read-only role.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A read-only role with view-only SELECT grants is roughly 80% of what most teams need. The remaining 20% is where the PII risk actually lives.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 2: Column-Level Masking Policies
&lt;/h2&gt;

&lt;p&gt;Snowflake supports masking policies that fire based on the executing role. The same SELECT statement returns the raw value for an analyst role and a masked value for the agent role. This is the single most important PII control because it does not depend on the agent or the MCP server behaving correctly.&lt;/p&gt;

&lt;p&gt;A masking policy that returns SHA2(email) for any role except ANALYTICS_HUMAN means even if the model is jailbroken into producing a SELECT * query, it gets hashes, not addresses. The policy is enforced at the SQL engine layer, not at the application layer.&lt;/p&gt;

&lt;p&gt;Apply masking policies to every column tagged as PII. If you do not have PII tags yet, an audit tool (or the Data Workers governance agent) can scan the schema and tag candidate columns automatically — emails, phone numbers, SSNs, free-text columns, IP addresses, dates of birth.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 3: Row Access Policies
&lt;/h2&gt;

&lt;p&gt;Masking hides values. Row access policies hide entire rows. For multi-tenant data — or any case where the agent should see only one customer's, one region's, or one fiscal-year's data — row access policies are the right primitive.&lt;/p&gt;

&lt;p&gt;Common patterns: scope the agent role to the last 90 days of data, exclude rows tagged sensitive = true, restrict to a specific tenant_id. Like masking policies, these are enforced inside the engine — no application-layer code can bypass them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 4: Audit Logging
&lt;/h2&gt;

&lt;p&gt;Every query the agent runs should be auditable for at least 30 days. Snowflake's QUERY_HISTORY view is the source of truth — it includes the SQL text, the executing role, the start and end times, and the rows returned. Pipe it into your SIEM (Datadog, Splunk, S3+Athena) so you can answer 'what did the agent see last week' without writing custom code.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tag every agent-driven query with a comment header (e.g., &lt;code&gt;/* mcp_agent=data_workers, session=abc123 */&lt;/code&gt;) so you can filter QUERY_HISTORY trivially.&lt;/li&gt;
&lt;li&gt;Set up an alert for any agent query that returns more than 10,000 rows. That is almost never the intended behavior.&lt;/li&gt;
&lt;li&gt;Set up a hard query timeout on the agent's warehouse (try 60 seconds to start). Runaway agents are cheap when they cannot run for 30 minutes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Layer 5: Schema-Aware Catalog as a Guardrail
&lt;/h2&gt;

&lt;p&gt;The most subtle PII leak is the one that comes from the agent picking the wrong table. The agent does not know that &lt;code&gt;customers_legacy&lt;/code&gt; was deprecated in 2024 but never deleted. It does not know that &lt;code&gt;orders_raw&lt;/code&gt; has unredacted payment data but &lt;code&gt;orders&lt;/code&gt; has the cleaned version. Without a catalog, the agent picks whichever table sounds right.&lt;/p&gt;

&lt;p&gt;A data catalog that the agent reads before writing SQL solves this. The agent asks the catalog: 'Where is order data?' and the catalog responds with the governed view, the ownership, the freshness, and the PII tags. The agent never sees the legacy table because the catalog never surfaces it.&lt;/p&gt;

&lt;p&gt;This is exactly what Data Workers' Catalog Agent does. It exposes catalog discovery as MCP tools, so when Claude queries it for 'order data', it gets the governed answer — same response shape, same masking policies applied. The catalog itself enforces what the agent can see.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Each Layer Buys You
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Defends Against&lt;/th&gt;
&lt;th&gt;Setup Time&lt;/th&gt;
&lt;th&gt;Production Impact&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Dedicated MCP role&lt;/td&gt;
&lt;td&gt;Privilege escalation&lt;/td&gt;
&lt;td&gt;10 min&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Column masking&lt;/td&gt;
&lt;td&gt;PII column exfiltration&lt;/td&gt;
&lt;td&gt;20 min per table&lt;/td&gt;
&lt;td&gt;&amp;lt;1ms per query&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Row access policies&lt;/td&gt;
&lt;td&gt;Tenant / scope leakage&lt;/td&gt;
&lt;td&gt;30 min per table&lt;/td&gt;
&lt;td&gt;&amp;lt;5ms per query&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Audit logging&lt;/td&gt;
&lt;td&gt;Detection after the fact&lt;/td&gt;
&lt;td&gt;1 hr (with SIEM)&lt;/td&gt;
&lt;td&gt;Storage cost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Catalog guardrail&lt;/td&gt;
&lt;td&gt;Wrong-table selection&lt;/td&gt;
&lt;td&gt;1 day to wire MCP&lt;/td&gt;
&lt;td&gt;Adds 1 round-trip&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do these controls work with ChatGPT and Cursor too, or just Claude?&lt;/strong&gt; Yes. All of these are Snowflake-side controls. They apply regardless of which MCP client is connecting — Claude, Cursor, OpenClaw, ChatGPT (via remote MCP), or a custom agent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What about BigQuery and Databricks?&lt;/strong&gt; Same five layers. BigQuery has authorized views and column-level access controls; Databricks has Unity Catalog row filters and column masks. The naming differs, the pattern does not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Will masking break joins or aggregations?&lt;/strong&gt; Masking policies preserve datatype, so JOIN and GROUP BY still work — they just operate on the masked value. For HASH-based masks, this means 'group by hashed email' still gives you per-customer counts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I know if my current MCP server is leaking PII?&lt;/strong&gt; Run a query against QUERY_HISTORY filtered to your agent role, look at the SQL text, and check whether any of those queries select columns that should have been masked. If you cannot tell whether a column should be masked, you do not have PII tagging yet — start there.&lt;/p&gt;




&lt;p&gt;The Data Workers governance agent ships a &lt;code&gt;pii_audit_snowflake&lt;/code&gt; tool that does the scan, the tag, and the policy generation in one call. It is open source. The point of this post, though, is that you do not need it — five SQL-level controls and an hour of work close the largest part of the gap. The catalog guardrail is the icing.&lt;/p&gt;

&lt;p&gt;If you are running into specific issues setting this up, we keep notes on what works in our open-source repo at github.com/DataWorkersProject/dataworkers-claw-community. Issues and PRs welcome.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://dataworkers.io/blog/claude-snowflake-without-pii-exposure/" rel="noopener noreferrer"&gt;https://dataworkers.io/blog/claude-snowflake-without-pii-exposure/&lt;/a&gt;. Data Workers is an open-source autonomous agent swarm for data engineering — &lt;a href="https://github.com/DataWorkersProject/dataworkers-claw-community" rel="noopener noreferrer"&gt;see the repo&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dataengineering</category>
      <category>ai</category>
      <category>opensource</category>
      <category>mcp</category>
    </item>
    <item>
      <title>MCP Servers for BI Tools: Looker, Tableau, Power BI, Mode (2026)</title>
      <dc:creator>DataWorkers</dc:creator>
      <pubDate>Sun, 31 May 2026 01:12:02 +0000</pubDate>
      <link>https://dev.to/dataworkersteam/mcp-servers-for-bi-tools-looker-tableau-power-bi-mode-2026-29le</link>
      <guid>https://dev.to/dataworkersteam/mcp-servers-for-bi-tools-looker-tableau-power-bi-mode-2026-29le</guid>
      <description>&lt;p&gt;Every AI-agent-meets-data-stack project hits the same problem in the same order. First the agent connects to the warehouse and runs raw SQL. Then someone notices it is bypassing the semantic layer and getting numbers wrong. Then someone proposes 'just point it at the BI tool' — and the project stalls for six months because the BI surface is the most heterogeneous, least API-friendly part of the modern data stack.&lt;/p&gt;

&lt;p&gt;MCP changes that. The Model Context Protocol gives every BI vendor a way to expose dashboards, datasets, and semantic models to AI agents through a single contract. As of May 2026, four major BI tools have working MCP coverage. The catch is that 'working' means different things in each ecosystem.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Four BI Tools, Their MCP Surfaces, and Their Trade-offs
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;BI Tool&lt;/th&gt;
&lt;th&gt;MCP Server&lt;/th&gt;
&lt;th&gt;Surface Exposed&lt;/th&gt;
&lt;th&gt;Auth&lt;/th&gt;
&lt;th&gt;Production-Ready?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Looker&lt;/td&gt;
&lt;td&gt;Community LookML MCP servers; official Google not yet&lt;/td&gt;
&lt;td&gt;Explores, dashboards, LookML measures/dimensions&lt;/td&gt;
&lt;td&gt;API3 client_id / client_secret&lt;/td&gt;
&lt;td&gt;Beta — most coverage of LookML semantics; admin-API gated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tableau&lt;/td&gt;
&lt;td&gt;Community Tableau Server / Cloud MCP servers&lt;/td&gt;
&lt;td&gt;Workbooks, views, published data sources, VizQL&lt;/td&gt;
&lt;td&gt;Personal access tokens&lt;/td&gt;
&lt;td&gt;Beta — read-heavy; write actions limited&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Power BI&lt;/td&gt;
&lt;td&gt;Power BI Analyst MCP (community)&lt;/td&gt;
&lt;td&gt;Workspaces, datasets, DAX queries, measures&lt;/td&gt;
&lt;td&gt;Azure AD service principal&lt;/td&gt;
&lt;td&gt;Beta — DAX execution + large-result paging via local CSV&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mode&lt;/td&gt;
&lt;td&gt;No official or community MCP yet&lt;/td&gt;
&lt;td&gt;n/a — Mode's REST API is the workaround&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;td&gt;No — query via REST or Mode's native AI&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Why BI Is Harder Than Warehouses
&lt;/h2&gt;

&lt;p&gt;A Snowflake or BigQuery MCP server has it easy. The data is in tables, the query language is SQL, the auth model is roles, and the audit log lives in one place. BI tools are the opposite of all four:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The data is in projections.&lt;/strong&gt; A 'view' or 'workbook' or 'report' is a derivation of underlying tables, often with embedded calculations the warehouse cannot see. An agent that reads only the warehouse misses the actual answer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The query language is proprietary per vendor.&lt;/strong&gt; LookML, DAX, VizQL, Mode's HTML/CSS-embedded SQL — each is a different surface. No common abstraction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The auth model is per-user or per-app, with row-level security baked in.&lt;/strong&gt; What an analyst sees in Looker is different from what an executive sees in the same dashboard. Bypassing that for an agent breaks the security model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit trails are vendor-specific and often partial.&lt;/strong&gt; Compared to Snowflake's QUERY_HISTORY, BI audit logs are inconsistent. Wiring agent access without observability is the easiest way to lose track of what the agent did.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Each MCP Server Actually Does
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Looker MCP servers&lt;/strong&gt; (multiple community projects) expose Explores (LookML's semantic abstraction) as discoverable resources, and let agents construct queries by combining dimensions and measures. The strongest path is to expose LookML's governed metrics as tools — &lt;code&gt;query_revenue(time_grain, breakdown_by)&lt;/code&gt; becomes a typed MCP tool rather than a raw SQL surface. This matches the semantic-layer guardrail pattern that reduces text-to-SQL hallucinations by ~66% (per Google's benchmarks).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tableau MCP servers&lt;/strong&gt; are read-heavier. They expose published data sources, workbooks, and views; querying typically resolves through VizQL or the published data source's underlying connection. The practical pattern is one tool per data source, with the agent picking the right one based on the question.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Power BI Analyst MCP&lt;/strong&gt; is the most production-ready of the community options. It connects through Azure AD service principals, lets agents browse workspaces, datasets, tables, and measures, and runs DAX queries. Notable: it pages large query results to local CSV so an agent does not blow its context window on a million rows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mode&lt;/strong&gt;: no MCP yet. The pragmatic workaround is to use Mode's REST API behind a thin MCP wrapper (5-10 tools: list reports, run a parameterized report, fetch results). Several teams have built private versions; nothing is published yet as of May 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  Production Checklist (Same Across All Four)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Read-only auth.&lt;/strong&gt; Always start the agent with read-only credentials, even if the BI tool supports writes via the API. The blast radius of an agent accidentally publishing a dashboard is large.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Row-level security must pass through.&lt;/strong&gt; Do not impersonate an admin account; pass the actual user identity or use a least-privilege service principal scoped to the questions the agent will answer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cache layer for large datasets.&lt;/strong&gt; BI tools are not optimized for repeated identical queries from an agent's exploratory loop. Add a 5-15 min cache for query results unless the freshness requirement is sub-minute.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Log every MCP call to your existing observability stack&lt;/strong&gt; (Datadog, Honeycomb, etc.). BI vendors will not give you the granularity you need.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quota the agent's question budget.&lt;/strong&gt; A loop agent can rack up thousands of dashboard renders without anyone noticing. Set a daily quota per agent identity.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where This Is Headed
&lt;/h2&gt;

&lt;p&gt;By end of 2026 every major BI vendor will ship an official MCP server. The community servers will get absorbed or formalized. What will not change quickly: the underlying complexity that makes BI integration hard — heterogeneous query languages, per-user security models, vendor-specific audit. The MCP server is a contract, not a fix.&lt;/p&gt;

&lt;p&gt;The teams that get this right early will be the ones whose AI agents answer business questions with the same numbers the dashboards show — not approximations from raw SQL. That alignment is what makes AI agents trustworthy to non-engineering stakeholders, and it is what determines whether AI rolls out company-wide or stays in a sandbox.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Does Data Workers ship an MCP server for any of these BI tools?&lt;/strong&gt; Catalog and lineage tools, yes. BI-specific (Looker, Tableau, Power BI, Mode), not yet — we partner with the community servers listed above and the upcoming official ones. Our Insights agent is the layer above: it composes BI server outputs with warehouse and catalog data to answer questions across the stack.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I use ChatGPT instead of Claude with these MCP servers?&lt;/strong&gt; Yes. ChatGPT supports remote MCP via the Apps platform. The same servers work, the auth flow differs (OAuth instead of local credentials).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What about Superset, Metabase, and Hex?&lt;/strong&gt; Superset has a mature community MCP (135+ tools — bintocher/mcp-superset). Metabase has 1luvc0d3/metabase-mcp with 28 tools. Hex has no public MCP server as of May 2026. The same production checklist applies to all three.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Will MCP eat BI tools' UI surface?&lt;/strong&gt; Long-term, partially. Most exploratory analytics will move into chat interfaces backed by MCP. Heavy-customization dashboards (executive summaries, embedded analytics) will stay in BI UIs. The split will look like terminal vs IDE — both exist, different jobs.&lt;/p&gt;




&lt;p&gt;We track the MCP-for-BI ecosystem in the Data Workers OSS repo at github.com/DataWorkersProject/dataworkers-claw-community. PRs welcome with new servers as the community ships them.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://dataworkers.io/blog/mcp-servers-for-bi-tools-looker-tableau-powerbi-mode/" rel="noopener noreferrer"&gt;https://dataworkers.io/blog/mcp-servers-for-bi-tools-looker-tableau-powerbi-mode/&lt;/a&gt;. Data Workers is an open-source autonomous agent swarm for data engineering — &lt;a href="https://github.com/DataWorkersProject/dataworkers-claw-community" rel="noopener noreferrer"&gt;see the repo&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dataengineering</category>
      <category>ai</category>
      <category>opensource</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Atlan Alternatives: 6 Open-Source Data Catalogs Compared (2026)</title>
      <dc:creator>DataWorkers</dc:creator>
      <pubDate>Sun, 31 May 2026 01:11:31 +0000</pubDate>
      <link>https://dev.to/dataworkersteam/atlan-alternatives-6-open-source-data-catalogs-compared-2026-20gk</link>
      <guid>https://dev.to/dataworkersteam/atlan-alternatives-6-open-source-data-catalogs-compared-2026-20gk</guid>
      <description>&lt;p&gt;Atlan does a lot of things well. It also costs $40-80k/year for mid-market deployments, and it gates several features (machine-learning auto-classification, certain integrations, advanced lineage) behind enterprise tiers. If you have a budget, a roadmap that does not depend on a single vendor's velocity, or just a strong open-source preference, the alternatives are stronger in 2026 than they were even six months ago.&lt;/p&gt;

&lt;p&gt;This is the field, ranked by what each one is &lt;em&gt;actually&lt;/em&gt; best at — not by feature-checkbox count. We will explicitly say where Atlan is still better, because pretending otherwise wastes your time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Comparison Matrix
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;License&lt;/th&gt;
&lt;th&gt;Strongest At&lt;/th&gt;
&lt;th&gt;Weakest At&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OpenMetadata&lt;/td&gt;
&lt;td&gt;Apache 2.0&lt;/td&gt;
&lt;td&gt;Lineage, glossary, native integrations&lt;/td&gt;
&lt;td&gt;UI polish, real-time updates&lt;/td&gt;
&lt;td&gt;Teams who want depth + community&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DataHub (Acryl)&lt;/td&gt;
&lt;td&gt;Apache 2.0&lt;/td&gt;
&lt;td&gt;Streaming lineage, programmatic API&lt;/td&gt;
&lt;td&gt;Setup complexity, learning curve&lt;/td&gt;
&lt;td&gt;Engineering-led teams&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Amundsen (Lyft)&lt;/td&gt;
&lt;td&gt;Apache 2.0&lt;/td&gt;
&lt;td&gt;Fast search, discovery UX&lt;/td&gt;
&lt;td&gt;Lineage, governance workflows&lt;/td&gt;
&lt;td&gt;Discovery-first use cases&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Marquez (OpenLineage)&lt;/td&gt;
&lt;td&gt;Apache 2.0&lt;/td&gt;
&lt;td&gt;Lineage as a primitive, OpenLineage spec&lt;/td&gt;
&lt;td&gt;Catalog UI, business metadata&lt;/td&gt;
&lt;td&gt;Data engineering teams&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unity Catalog (open)&lt;/td&gt;
&lt;td&gt;Apache 2.0&lt;/td&gt;
&lt;td&gt;Multi-cloud governance, Iceberg native&lt;/td&gt;
&lt;td&gt;Maturity outside Databricks&lt;/td&gt;
&lt;td&gt;Databricks + Iceberg shops&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data Workers Catalog Agent&lt;/td&gt;
&lt;td&gt;Apache 2.0&lt;/td&gt;
&lt;td&gt;Cross-catalog search via MCP, agent-native&lt;/td&gt;
&lt;td&gt;Single-pane UI (it is agent-first)&lt;/td&gt;
&lt;td&gt;Teams using Claude/Cursor/ChatGPT&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  1. OpenMetadata — The Closest Open Atlan Equivalent
&lt;/h2&gt;

&lt;p&gt;OpenMetadata is the most mature open-source catalog by adoption. Backed by Collate (commercial fork) and a large GitHub community (~6k stars, ~1k contributors). It covers data discovery, lineage, governance, glossary, quality, and observability in one binary.&lt;/p&gt;

&lt;p&gt;What it does well: 90+ native connectors (Snowflake, BigQuery, Redshift, Databricks, Looker, Tableau, Power BI, Airflow, dbt, Fivetran). End-to-end lineage including column-level. Built-in tagging, glossary, classifications. Embedded data quality test framework. Active release cadence.&lt;/p&gt;

&lt;p&gt;Where it is not Atlan: UI is less polished. Some advanced governance workflows are simpler. Real-time updates can lag in larger environments. Documentation is still catching up to the feature set.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pick OpenMetadata if:&lt;/strong&gt; you want the broadest feature set, are comfortable running a Postgres + Elasticsearch + service deployment, and have a team that can occasionally read Java/Python source code.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. DataHub (Acryl) — The Engineering-Led Catalog
&lt;/h2&gt;

&lt;p&gt;DataHub came out of LinkedIn and now drives Acryl's commercial offering. It is the most programmatically extensible catalog in the space — emits CloudEvents, has a strong GraphQL API, integrates streaming lineage via Kafka.&lt;/p&gt;

&lt;p&gt;What it does well: real-time and streaming lineage (uniquely strong here). Programmatic ingestion is a first-class citizen — you can push metadata from any source without writing a connector. Strong RBAC. Good Snowflake / dbt / Airflow integrations.&lt;/p&gt;

&lt;p&gt;Where it is not Atlan: steeper learning curve. The UI assumes a technical user. Setup is more involved than OpenMetadata (Kafka, MySQL, Elasticsearch, multiple services).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pick DataHub if:&lt;/strong&gt; your team is engineering-led, you want a catalog you can extend programmatically, and you have streaming data that needs streaming lineage.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Amundsen — The Discovery-First Option
&lt;/h2&gt;

&lt;p&gt;Amundsen came out of Lyft and is laser-focused on data discovery — fast search, ranked results by usage, simple UX. It is intentionally less of an everything-tool than OpenMetadata or DataHub.&lt;/p&gt;

&lt;p&gt;What it does well: search ranking is the best in the field. Sub-second discovery on millions of tables. Simple Neo4j + Elasticsearch + Flask stack. The UX gets analysts to data faster than any of the alternatives.&lt;/p&gt;

&lt;p&gt;Where it is not Atlan: weak on governance workflows. Lineage support has improved but is still behind OpenMetadata/DataHub. Community activity has slowed since 2023 — fewer recent commits than the others on this list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pick Amundsen if:&lt;/strong&gt; the problem you are solving is 'analysts cannot find data', and you are not yet trying to govern it.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Marquez + OpenLineage — Lineage As A First-Class Citizen
&lt;/h2&gt;

&lt;p&gt;Marquez is the reference implementation of the OpenLineage spec — the emerging standard for emitting lineage events from any data tool (Airflow, dbt, Spark, Flink). It is not a full catalog, but it is the canonical way to get lineage right.&lt;/p&gt;

&lt;p&gt;What it does well: pure lineage focus. Open standard (OpenLineage) means you are not locked in. Airflow has native OpenLineage support; dbt-OpenLineage adapter exists. Good Kubernetes deployment story.&lt;/p&gt;

&lt;p&gt;Where it is not Atlan: not a catalog. No glossary, classifications, governance workflows. You will pair it with OpenMetadata or DataHub or similar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pick Marquez if:&lt;/strong&gt; lineage is the single biggest gap, and you want lineage that survives tool changes (because OpenLineage is the spec underneath it).&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Unity Catalog (Open Source) — Multi-Cloud Governance, Iceberg-Native
&lt;/h2&gt;

&lt;p&gt;Databricks open-sourced Unity Catalog in June 2024. It is the only catalog on this list that is explicitly designed for Iceberg + multi-cloud governance (Snowflake, Databricks, BigQuery all readable through one API).&lt;/p&gt;

&lt;p&gt;What it does well: Iceberg-native. Multi-cloud table access through a single grants model. REST API is the same as Databricks' commercial Unity Catalog (so portability is real). Strong on access policies.&lt;/p&gt;

&lt;p&gt;Where it is not Atlan: maturity outside Databricks deployments is still catching up. Discovery / search UI is minimal compared to others. Less of a business-glossary tool, more of a governance plane.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pick Unity Catalog if:&lt;/strong&gt; you are betting on Iceberg, want multi-cloud table access governed in one place, and care less about a discovery UI.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Data Workers Catalog Agent — Agent-Native, Cross-Catalog
&lt;/h2&gt;

&lt;p&gt;This is us. We built the Catalog Agent because every catalog on this list assumes a human user clicking through a UI. AI agents (Claude Code, Cursor, ChatGPT) cannot click. They need catalog access through MCP tools.&lt;/p&gt;

&lt;p&gt;What it does well: federates across OpenMetadata, DataHub, Amundsen, Unity Catalog (and Atlan via API) so a single MCP tool call resolves 'where is order data?' against whichever catalog has the answer. 18 catalog tools (entity resolution, toolsets, 4-signal RRF ranking, 200 golden queries eval suite). Apache 2.0. No vendor lock-in.&lt;/p&gt;

&lt;p&gt;Where it is not Atlan: there is no standalone UI. The Catalog Agent is designed to be consumed by an AI agent or to wrap an existing catalog. If you want a single-pane-of-glass UI for humans, pair it with OpenMetadata.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pick Data Workers Catalog Agent if:&lt;/strong&gt; AI agents are the primary consumers of your catalog, or you want federated cross-catalog discovery.&lt;/p&gt;

&lt;h2&gt;
  
  
  When You Should Still Pay For Atlan
&lt;/h2&gt;

&lt;p&gt;Open source is not the right answer for everyone. Pay for Atlan if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You need a polished UI that non-technical users will adopt without training.&lt;/strong&gt; Atlan invests heavily here; open-source catalogs are catching up but are not equivalent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You want one vendor's roadmap to be your roadmap.&lt;/strong&gt; Some teams legitimately do not want to assemble five tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You want managed deployment with SLAs.&lt;/strong&gt; Self-hosted OpenMetadata/DataHub means you own the ops.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You need certain enterprise integrations that ship faster in commercial catalogs.&lt;/strong&gt; Salesforce Data Cloud, certain BI tool deep integrations, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently Asked Questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is Collibra a better alternative to Atlan than these?&lt;/strong&gt; For pure governance-and-compliance use cases, sometimes. Collibra is stronger on regulated-industry workflows (banks, pharma). The open-source tools on this list cover technical metadata and discovery better. The fair comparison is Atlan vs Collibra vs Alation as commercial peers — and OpenMetadata + DataHub as the open challengers across the board.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I migrate from Atlan to one of these without losing my glossary and lineage?&lt;/strong&gt; Yes for OpenMetadata and DataHub via their bulk import APIs. Atlan exports glossary, classifications, and table descriptions to JSON. Lineage is harder to migrate (graph topology) but Marquez + OpenLineage can rebuild it by re-emitting from your orchestrator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How long does it take to stand up OpenMetadata or DataHub in production?&lt;/strong&gt; OpenMetadata: 2-4 weeks for a real deployment including ingestion of major sources, glossary import, and team training. DataHub: similar timeline; the longer setup is offset by deeper API extensibility. Atlan's managed setup is faster (days, not weeks) — that is part of what you pay for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do any of these work with Snowflake Cortex, BigQuery semantic layer, or Databricks Genie?&lt;/strong&gt; Yes. OpenMetadata, DataHub, and Unity Catalog all integrate with at least one. Data Workers Catalog Agent federates queries across them. Atlan integrates with all three.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What about Hightouch, Castor, Select Star, Secoda — are those Atlan alternatives?&lt;/strong&gt; They are commercial peers, not open-source alternatives. Same trade-off as Atlan: faster setup, polished UX, ongoing license cost.&lt;/p&gt;




&lt;p&gt;We track the open-source data catalog ecosystem at github.com/DataWorkersProject/dataworkers-claw-community — the Catalog Agent code, federation logic, and the 200-query eval set are all there.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://dataworkers.io/blog/atlan-alternatives-open-source-data-catalogs-2026/" rel="noopener noreferrer"&gt;https://dataworkers.io/blog/atlan-alternatives-open-source-data-catalogs-2026/&lt;/a&gt;. Data Workers is an open-source autonomous agent swarm for data engineering — &lt;a href="https://github.com/DataWorkersProject/dataworkers-claw-community" rel="noopener noreferrer"&gt;see the repo&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>dataengineering</category>
      <category>ai</category>
      <category>opensource</category>
      <category>mcp</category>
    </item>
  </channel>
</rss>
