Skip to main content

A server that exposes Materialize indexes as tools over the Model Context Protocol (MCP)

Project description

Materialize MCP Server

Instantly turn indexed views in Materialize into real-time context tools for LLM-powered applications.

Materialize MCP Server exposes your Materialize views—when indexed and documented—as live, typed, callable tools. These tools behave like stable APIs for structured data, enabling models to act on fresh, consistent, and trustworthy information. No pipelines, no glue code, no stale caches.


✨ What Are Operational Data Products?

Views + indexes + comments = Operational Data Products: Self-contained, versioned services that model real-world concepts and provide fast, reliable, and testable access to dynamic data.

Feature Benefit
Stable Define once, use repeatedly across use cases.
Typed Input/output schemas inferred directly from indexes.
Observable Tool usage is logged per client, revealing real cost and performance.
Secure If it’s not indexed and documented, it’s not exposed.

🚀 Quickstart

uv run mcp-materialize

This launches the server with default settings and immediately exposes any indexed views as tools.


⚙️ Configuration

The server can be configured via CLI flags or environment variables:

Argument Env Var Default Description
--mz-dsn MZ_DSN postgresql://materialize@localhost:6875/materialize Materialize connection string
--transport MCP_TRANSPORT stdio Communication transport (stdio or sse)
--host MCP_HOST 0.0.0.0 Host address
--port MCP_PORT 3001 Port number
--pool-min-size MCP_POOL_MIN_SIZE 1 Minimum DB pool size
--pool-max-size MCP_POOL_MAX_SIZE 10 Maximum DB pool size
--log-level MCP_LOG_LEVEL INFO Log verbosity

🛠 Defining a Tool

  1. Write a view that captures your business logic.
  2. Create an index on its primary lookup key.
  3. Document it with COMMENT statements.
CREATE VIEW order_status_summary AS
SELECT o.order_id, o.status, s.carrier, c.estimated_delivery, e.delay_reason
FROM orders o
LEFT JOIN shipments s            ON o.order_id = s.order_id
LEFT JOIN carrier_tracking c     ON s.shipment_id = c.shipment_id
LEFT JOIN delivery_exceptions e ON c.tracking_id = e.tracking_id;

CREATE INDEX ON order_status_summary (order_id);

COMMENT ON VIEW order_status_summary IS
  'Given an order ID, retrieve the current status, shipping carrier, estimated delivery date, and any delivery exceptions. Use this tool to show real-time order tracking information to users.';

COMMENT ON COLUMN order_status_summary.order_id IS
  'The unique id for an order';

Now, this tool appears in /tools/list:

{
  "name": "order_status_summary",
  "description": "Given an order ID, retrieve the current status, shipping carrier, estimated delivery date, and any delivery exceptions. Use this tool to show real-time order tracking information to users.",
  "inputSchema": {
    "type": "object",
    "required": ["order_id"],
    "properties": {
      "order_id": {
        "type": "text",
        "description": "The unique id for an order"
      }
    }
  }
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_materialize-0.1.0.tar.gz (53.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_materialize-0.1.0-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file mcp_materialize-0.1.0.tar.gz.

File metadata

  • Download URL: mcp_materialize-0.1.0.tar.gz
  • Upload date:
  • Size: 53.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for mcp_materialize-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8791fa6e6ce25d0ff7924f4866625bc55a8bd9210d61c94bcc24f70ab725a956
MD5 26f8eec15605a91801091a66e63ef574
BLAKE2b-256 353db3e84eb91f313627369f6d459b9e85a86401f98101ff3a6dcfd9a07f81b2

See more details on using hashes here.

File details

Details for the file mcp_materialize-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_materialize-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cdc7d5d5fb1b94652358ca32ac0e11ae550e4f8636dfadfae1d8834c5828272b
MD5 21affb9784ef16352b53af762a91bc90
BLAKE2b-256 d04b4fba1fa84b85d072af5e5d154e59f9f844a8f62601646115cb3558b6882f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page