This is fantastic, Yufei! I love this idea and the demo is wonderful.

A few thoughts:

   1. I agree with your assessment that an MCP Server would complement
   Polaris' other interfaces - REST, the python client, & the future UI. This
   adds to the growing Polaris ecosystem and I know people will find this
   helpful.
   2. I agree with your approach of building an MCP Server rather than
   using some sort of RAG approach (adding it to the chat context). It's a
   seamless sort of integration that we see other vendors leveraging as well.
   3. I am unsure of whether this work should be integrated into the
   Polaris repository or the Polaris-Tools repository. I don't know how we as
   a community make the distinction. I know that the UI is going to be put
   into the Polaris-Tools repository. Here's my understanding so far, but I'd
   love to chat about it:
      1. Polaris-Tools Pros:
         1. We don't want any hard dependencies between the core Polaris
         codebase and the MCP Server. You have done a phenomenal job
at doing this
         by making the MCP Server be a shim between the REST API and the AI
         Application (Claude Desktop, 5ire, etc).
         2. This work might not be applicable for core use cases, so it
         would be an additional series of packages that would be
unused by users and
         cause overhead for building and maintaining.
      2. Polaris Pros:
         1. It can leverage common infra (Gradle, etc).
         2. It'll be faster to develop.
         3. It'll be easier to keep in sync with the REST APIs (although
         that applies to the UI as well).
      4. I'm wondering if we should create an Iceberg Catalog MCP Server
   and a Polaris MCP Server. A lot of the tools that you created would benefit
   the wider Iceberg Catalog ecosystem and are not Polaris-specific. For
   example, the polaris-namespace-request and the polaris-table-request are
   just Iceberg Catalog operations. What are your thoughts there?
   5. For some of the issues that you have observed with setting
   privileges, I believe that we might be able to improve the accuracy by
   updating the tools' descriptions. You & I can chat about this offline, but
   from my analysis of the code, we can make those descriptions much richer
   and that'll increase accuracy without too much additional work. I've seen
   this in other MCP Servers that I've built. But, we can handle this after
   we've released the first version. It's a small change.
   6. I know this is early days, but have you thought about what sort of
   availability you would want with the MCP Server? Like, Polaris tries to
   support rolling upgrades [1]. Is that your intention here?

Thanks for doing all this work. I'm excited about where this is going!

[1] - https://polaris.apache.org/in-dev/unreleased/evolution/

Cheers,

Adam

On Tue, Oct 28, 2025 at 4:30 PM Yufei Gu <[email protected]> wrote:

> Hi all,
>
> I’d like to propose the Polaris MCP Server, which lets users and AI agents
> interact with Polaris using natural language instead of REST or CLI.
> Example: “Show me all tables in prod.sales updated in the last 7 days.”
>
> It runs locally, connects to Polaris via REST, and requires no backend
> change. Privileges are limited to the authenticated Polaris user. Supports
> OAuth2 client credentials and direct bearer tokens.
>
> This bridges Polaris with LLM-based tools like Claude and Cursor, laying
> the groundwork for agentic catalog operations.
>
> Design Doc:
>
> https://docs.google.com/document/d/1yA_d3netDzgicn0z5HEGZIIOHcCgTJC1eKx_DTZPXps/edit?usp=sharing
> A Java-based, working POC: https://github.com/apache/polaris/pull/2803. I
> demoed it at this event https://luma.com/pxikwty3.
> Yufei
>

Reply via email to