材料化 MCP 服务器能够通过模型上下文协议 (MCP),将你的 Materialize 索引视图转换为完全类型化、可调用的工具。你只需创建 SQL 视图并对其进行索引,就能定义稳定、版本化且安全的数据工具,无需编写额外代码。
以默认设置运行服务器:
uv 运行 materialize-mcp
该包可以本地安装。我们推荐使用 uv 作为构建工具。
git clone https://github.com/MaterializeInc/materialize-mcp-server
cd materialize-mcp-server
uv 运行 materialize-mcp-server
execute_sql?许多数据库 MCP 服务器提供一个单一的 execute_sql 工具。它非常适合快速原型开发,但在生产环境中较为脆弱。由 LLM 和代理生成的 SQL 查询可能会引入性能瓶颈、不可预测的成本和不一致的结果。
通过转向 操作数据产品,我们消除了变异性,并确保每个工具具备以下特性:
| 参数 | 环境变量 | 默认值 | 描述 |
|---|---|---|---|
--mz-dsn |
MZ_DSN |
postgresql://materialize@localhost:6875/materialize |
Materialize 数据源名称(DSN) |
--transport |
MCP_TRANSPORT |
stdio |
通信传输(stdio 或 sse) |
--host |
MCP_HOST |
0.0.0.0 |
服务器主机 |
--port |
MCP_PORT |
3001 |
服务器端口 |
--pool-min-size |
MCP_POOL_MIN_SIZE |
1 |
连接池最小大小 |
--pool-max-size |
MCP_POOL_MAX_SIZE |
10 |
连接池最大大小 |
--log-level |
MCP_LOG_LEVEL |
INFO |
日志级别 |
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 order_status_summary IS '查找给定订单的状态、运输和交付信息。';
刷新服务器后,工具现在出现在 tools/list 中:
{
"name": "order_status_summary",
"description": "查找给定订单的状态、运输和交付信息。",
"inputSchema": {
"type": "object",
"required": ["order_id"],
"properties": {
"order_id": { "type": "text" }
}
}
}