Hi all,

I'd like to share an AsterixDB MCP Server I've been building as part of
GSoC — a  gateway that lets an LLM run read-only SQL++ against a live
AsterixDB cluster.

*Repo (fork & test welcome): *
https://github.com/Vivek1106-04/asterixdb-mcp-server

*  Run it locally:*
  git clone https://github.com/Vivek1106-04/asterixdb-mcp-server.git
  cd asterixdb-mcp-server
  python3 -m venv .venv
  source .venv/bin/activate
  pip install -e ".[dev]"
  export ASTERIXDB_MCP_CC_BASE_URL=http://localhost:19002   # your CC
  asterixdb-mcp-server                                       # serves over
stdio

  Connect a client — for Claude Desktop, add to claude_desktop_config.json:

  {
    "mcpServers": {
      "asterixdb": {
        "command": "/absolute/path/to/.venv/bin/asterixdb-mcp-server",
        "env": { "ASTERIXDB_MCP_CC_BASE_URL": "http://localhost:19002"; }
      }
    }
  }

Any MCP-capable client works the same way.  Full capability list, config,
and security model are in the README and SECURITY.md.

*Design Question — Built-in Functions Discovery:*

I have hit one architectural roadblock regarding the list_functions tool
that I wanted to get your clarity on. While reading through the
documentation and source code to build the tool, I found out that AsterixDB
has around 800 built-in functions.

Currently, the tool successfully filters UDFs from Metadata.Function. For
the built-ins, however, I am using a curated starter set of about 45
functions (simple working code to test with the LLM).

To give the LLM the full analytical power of the cluster, I am trying to
figure out the best way for the MCP gateway to handle all 800 functions
without building a heavy runtime Java-to-Python codegen pipeline.

My proposed solution is to write a standalone Python extraction script that
parses the AsterixDB source locally, generates a static
builtin_functions.json catalog, and bundles it with the MCP package to be
loaded into memory on server startup.

Is this static approach a good direction, or should we consider other
methods for exposing built-in function signatures to external clients?

Feedback, bug reports, and thoughts on the functions catalog are very
welcome!

Thanks,

Vivek

Reply via email to