QuestLLens
QuestLLens
让 AI 拥有时间序列数据的"眼睛"
一个自带文档说明的 QuestDB MCP 服务器,可将任何 QuestDB 实例转变为 AI 代理可查询的丰富知识源——对分区、符号、去重键、WAL 状态、摄取健康度和存储布局具备一流的感知能力。
快速开始 · 工具 · 配置 · Docker · 安全 · 领域上下文
为什么选择 QuestLLens?
AI 模型很强大——但它们对你的时间序列数据库一无所知。它们不知道你的指定时间戳、分区策略、符号基数,也不知道哪些表的 WAL 应用正在落后。
QuestLLens 解决了这个问题。 它通过模型上下文协议(MCP)将任何 QuestDB 实例连接到 AI 助手,为它们提供 18 个专用工具来发现、理解和查询你的数据——安全、只读模式、零意外写入风险。
这与 QuestDB 内置 MCP 服务器的关系
QuestDB 在 Web 控制台中提供了自己的 MCP 服务器,对于在办公桌前进行交互式工作,它是更好的工具——它支持笔记本、图表、SQL/函数文档查询,以及与你已打开的控制台的双向交接。请在这种情况下使用它。
它解决的问题与 QuestLLens 不同:
QuestDB Web 控制台 MCP | QuestLLens | |
传输方式 | WebSocket,仅限回环 | HTTP/SSE,可远程访问 |
需要实时浏览器会话 | 是——配对和授权在控制台内完成 | 否 |
写入权限 | 是——在写入权限级别支持 DDL/DML | 否——进程内强制只读 |
远程客户端的认证 | 控制台会话 / 企业版 SSO | OAuth 2.1 + PKCE,本地使用可无认证 |
笔记本、图表、文档查询 | 是 | 否 |
分区、WAL、去重、符号、摄取健康度工具 | 否 | 是 |
将领域上下文注入工具描述 | 否 | 是 |
当代理不在你的浏览器旁时,请使用 QuestLLens:无头助手、隧道后面的容器、共享团队端点——或者任何你需要硬性只读保证而非权限设置的地方。
QuestLLens 的独特之处
时间序列原生——与通用 SQL MCP 服务器不同,QuestLLens 使用 QuestDB 的语言。指定时间戳、时间分区、符号容量、去重键和 WAL 状态都是你的 AI 助手可以推理的一等概念。
自带文档说明——自动提取表元数据、列类型、分区、索引和物化视图定义。你的 AI 助手能像你的团队一样理解你的模式。
领域感知——注入一个包含业务上下文的简单 markdown 文件(表含义、常见
SAMPLE BY模式、注意事项),QuestLLens 会将其编织到每个工具响应中。非侵入式——通过标准 PostgreSQL 线协议接入任何 QuestDB 实例。无需代理、无需扩展、无需修改 QuestDB 配置。只需一个只读用户。
安全优先——纵深防御:针对 QuestDB 完整 DDL 面调优的 SQL 关键字拦截、语句超时、行数限制,以及可选的带速率限制的 OAuth。你的数据始终安全。
Related MCP server: django-mcp-sql
快速开始
前置条件
Node.js 20+
QuestDB 7.4+(任何托管或自管理实例——WAL 表在 7.4 中成为默认)
一个具有
SELECT权限的 QuestDB 用户(建议只读;请参阅安全)
快速开始(npm)
# Clone and install
git clone https://github.com/DMDuFresne/questllens.git
cd questllens
npm install
# Configure
cp .env.example .env
cp context.md.example context.md
# Edit .env with your QUESTDB_URL
# Build and run
npm run build
npm startQuestLLens 现在运行在 http://localhost:3000,MCP 端点为 /mcp。
快速开始(Docker)
docker run -p 3000:3000 \
-e QUESTDB_URL="postgresql://admin:quest@host:8812/qdb" \
ghcr.io/dmdufresne/questllens:1.0.0连接到 Claude Desktop
将 QuestLLens 添加到你的 Claude Desktop 配置中:
{
"mcpServers": {
"questllens": {
"url": "http://localhost:3000/mcp"
}
}
}启用 OAuth 后:
{
"mcpServers": {
"questllens": {
"url": "http://localhost:3000/mcp",
"authorizationUrl": "http://localhost:3000/oauth/authorize",
"tokenUrl": "http://localhost:3000/oauth/token",
"registrationUrl": "http://localhost:3000/oauth/register"
}
}
}连接到 Claude Code
{
"mcpServers": {
"questllens": {
"type": "url",
"url": "http://localhost:3000/mcp"
}
}
}技能
skills/ 捆绑了四个 Claude 技能,用于教会 Claude 如何驱动 QuestLLens,而不是猜测工具名称:
技能 | 用途 |
| 定位技能——只读姿态、改变每次查询的四个时间序列概念(指定时间戳、分区、SYMBOL、WAL)、先发现后工作流,以及路由到其他三个技能。从这里开始。 |
| 在不熟悉的实例中定位:清单、含义、时间覆盖范围、基数、分区、物化视图图。 |
| 按优先级排序的摄取扫描:WAL 延迟与陈旧度、挂起表、存储、运行中的查询。 |
|
|
将 skills/ 下的四个目录复制到你的项目的 .claude/skills/(或你的客户端加载技能的任何位置)即可使用;Claude Code 会根据每个技能 frontmatter 中的触发短语自动显示正确的技能。
工具
QuestLLens 提供 18 个 MCP 工具,分为六个类别。工具首先为 AI 代理设计——markdown 输出以提高 token 密度、解释何时使用每个工具的描述,以及一次往返即可回答问题的复合诊断,而不是三次。
查询
工具 | 描述 |
| 执行只读 SQL SELECT 查询。结果以 markdown 表格形式返回,包含行数和截断警告。 |
| SELECT 的 QuestDB 执行计划。在慢速 |
| 根据表、范围和目标桶数推荐 SAMPLE BY 间隔。防止代理在一年数据上选择 |
模式发现
工具 | 描述 |
| 每张表及其指定时间戳、分区单位、WAL 标志、去重键和列数。物化视图也会在此显示。 |
| 表或物化视图的一站式描述:列、去重键、分区单位。可选标志可添加时间范围( |
| 按名称模式在所有表中查找列。不区分大小写的子字符串匹配。 |
| 可往返的 |
| 每表的摄取参数: |
| 手动强制重新加载模式缓存。通常不需要—— |
数据探索
工具 | 描述 |
| 1–20 行样本数据。传入 |
| 行数、空值百分比、每列独立计数——批量合并为一条 SQL。在大表上传入 |
存储与分区
工具 | 描述 |
| 按分区列出,带有 parquet/read-only 标志。传入 |
| 按磁盘占用列出前 N 张表,并显示 parquet 与原生存储的拆分。单次调用即可发现磁盘热点,无需对每张表逐一执行 |
操作
工具 | 描述 |
| 每张表的 WAL 应用状态:sequencer 事务、writer 事务、延迟、暂停标志。 |
| 综合摄入健康检查:WAL 延迟 + 暂停状态 + 最新时间戳滞后,一次调用完成。排查“数据为何未到达?”的首选工具。 |
| 通过 |
| 物化视图依赖关系图,支持反向查询(“哪些视图依赖表 X?”)。可深入查看单个视图的 SQL 定义。需要 QuestDB 8.x。 |
服务器
工具 | 描述 |
| 版本、构建信息、运行时长,以及对 |
配置
QuestLLens 通过环境变量进行配置。可以创建 .env 文件,也可以直接传入。
必需项
变量 | 描述 | 示例 |
| QuestDB 连接字符串(PostgreSQL 线协议) |
|
QuestDB 默认的 PG-wire 凭据是
admin/quest,端口为8812。请修改默认凭据,并创建一个只读用户——参见安全。
可选项
变量 | 默认值 | 描述 |
|
| HTTP 服务器端口 |
|
| 单次查询最大执行时间(毫秒) |
|
| 单次查询返回的最大行数 |
|
| 模式缓存刷新间隔(毫秒) |
| — | 包含业务上下文的 Markdown 文件路径 |
| — | 内联业务上下文字符串(替代文件) |
OAuth 选项(使用 --oauth 运行时)
变量 | 默认值 | 描述 |
| — | OAuth 登录表单密码 |
|
| 公网 URL(用于反向代理场景) |
| 空 — 允许所有来源 | 浏览器来源的 CORS 白名单(逗号分隔,例如 |
|
| 令牌有效期(秒,默认 7 天) |
|
| 每个时间窗口内允许的最大登录尝试次数 |
|
| 限流时间窗口(毫秒,默认 15 分钟) |
|
| 是否从 |
Docker
拉取镜像
docker pull ghcr.io/dmdufresne/questllens:1.0.0构建镜像
docker build -t questllens .运行容器
# Without OAuth (local development, trusted networks)
docker run -p 3000:3000 \
-e QUESTDB_URL="postgresql://readonly:password@host:8812/qdb" \
questllens
# With OAuth (production, Claude Desktop)
docker run -p 3000:3000 \
-e QUESTDB_URL="postgresql://readonly:password@host:8812/qdb" \
-e MCP_AUTH_PASSWORD="your-secure-password" \
questllens node dist/index.js --oauth
# With custom domain context
docker run -p 3000:3000 \
-e QUESTDB_URL="postgresql://readonly:password@host:8812/qdb" \
-v ./my-context.md:/app/context.md \
-e DOMAIN_CONTEXT_FILE="context.md" \
questllensDocker Compose
services:
questllens:
image: ghcr.io/dmdufresne/questllens:1.0.0
ports:
- "3000:3000"
environment:
QUESTDB_URL: postgresql://readonly:password@questdb:8812/qdb
MAX_ROWS: 500
volumes:
- ./context.md:/app/context.md
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
restart: unless-stopped镜像详情
基础镜像:
node:20-alpine(多阶段构建)大小: 约 80MB
用户: 非 root(
nodejs:1001)健康检查: 内置,通过
/health端点
安全
漏洞报告方式及范围界定,请参阅 SECURITY.md。简要说明:只读保证和 OAuth 流程在范围内;任何通过合法授予的只读访问可触及的内容均不在范围内——请使用最小权限的数据库角色。
QuestLLens 设计为只读,并采用纵深防御。应用层不足以单独保障安全——只读数据库角色和网络隔离是必需的,而非可选项。以下各节描述每一层防护。
必需项:只读数据库角色
QuestDB 不支持 PostgreSQL 的 BEGIN READ ONLY。数据库是唯一可强制执行的写入屏障。请使用只读用户运行 QuestLLens:
QuestDB 企业版(基于用户的 RBAC):
CREATE USER questllens_readonly WITH PASSWORD 'your-secure-password';
GRANT SELECT ON ALL TABLES TO questllens_readonly;QuestDB 开源版(尚无基于用户的 RBAC):
OSS 缺乏基于用户的 RBAC,因此应用层无法完全隔离写入操作。必须采取以下缓解措施:
立即更改默认的
admin/quest凭据。对 PG-wire 端口(
8812)进行网络隔离,确保只有 QuestLLens 可以访问。不要将其暴露给运维工作站或其他服务。在 OAuth(
--oauth)后面运行 QuestLLens,使 MCP 客户端在应用层也受到访问控制。
如果无法满足第 (1) 和 (2) 条,请不要针对生产环境的 OSS 实例运行 QuestLLens。
应用层只读路径(纵深防御)
每条用户提供的 SQL 语句都会经过一个真正的分词器处理(能正确处理 '…' 中的转义 ''、$tag$…$tag$、-- 注释、/* */ 注释),并接受以下检查:
首动词白名单 —— 仅接受
SELECT、WITH、EXPLAIN、SHOW或TABLES。多语句拒绝 —— 分号
;之后的任何内容都会被拒绝。PG-wire 简单查询路径可以执行多条语句;安全检查使其无法触达。对分词后输入进行禁用关键词扫描 ——
INSERT·UPDATE·DELETE·DROP·CREATE·ALTER·TRUNCATE·RENAME·REINDEX·VACUUM·BACKUP·SNAPSHOT·COPY·ATTACH·DETACH·GRANT·REVOKE·SET·RESET·RESUME·SUSPEND·CHECKPOINT·CANCEL·KILL·SQUASH·CONVERT·DEDUP·REFRESH·CALL·EXECUTE·PREPARE·DEALLOCATE。由于输入经过分词处理,WHERE message LIKE '%DROP%'不会触发扫描。
内部内省查询(tables()、wal_tables()、SHOW CREATE TABLE 等)通过数据库客户端中的显式 internal: true 标志绕过安全检查。每个内部调用点都是审计点;用户输入永远不会到达该路径。
语句超时
每次从连接池取出连接时都会重新应用 statement_timeout(QuestDB 没有 SET LOCAL),因此之前的内部调用不会在池化连接上留下过期的超时值。默认 30 秒。
行数限制
结果被限制在可配置的最大值(默认:1,000 行),超出时会给出截断警告。
OAuth(启用 --oauth 时)
使用 --oauth 运行时,QuestLLens 提供:
RFC 7591 动态客户端注册
PKCE S256 — 当客户端发送
code_challenge时必填;在令牌端点使用常量时间比较来校验code_verifier授权码绑定 — 授权码与其
client_id和redirect_uri绑定;兑换时不匹配则拒绝重定向 URI 校验 — 仅接受已注册的 URI;scheme 限制为
https(开发环境可为http://localhost/127.0.0.1)CORS 白名单 —
MCP_ALLOWED_ORIGINS(逗号分隔)指定哪些浏览器来源可以调用服务器。留空则允许任何来源,这在此处是安全的,因为每个工具路由都要求 Bearer 令牌而非 cookie——跨源页面没有隐式凭据可用。当您希望限制浏览器来源时请设置此项密码限流 — 默认每 15 分钟最多 5 次尝试
常量时间密码比较 — 防止时序攻击
Bearer 令牌校验 — 在所有 MCP 端点上执行;过期的令牌会从内存存储中移除
自包含同意页面 — 登录页面不加载任何第三方字体、脚本或资源,因此认证提示绝不会向 CDN 泄露请求
安全响应头 — 每个响应均包含
Content-Security-Policy: default-src 'none'(仅内联样式、frame-ancestors 'none'、base-uri 'none'),以及X-Content-Type-Options、X-Frame-Options: DENY、Referrer-Policy: no-referrer和Cross-Origin-Opener-Policy。无form-action:同意表单的 302 跳转指向客户端已注册的redirect_uri,对于原生客户端而言是回环端口——这是浏览器在form-action 'self'下会阻止的不同来源。因此重定向目标改为在服务端根据客户端已注册的 URI 进行约束1 MB 请求体上限 — 同时适用于 JSON 和表单编码的请求体
令牌和授权码仅保存在内存中;服务器重启后即失效。若需要跨重启的长期会话,请自行持久化存储。
位于代理或隧道之后时: 请设置
TRUST_PROXY_HEADERS=true,否则限流器会将所有请求视为来自代理的单一地址,一个攻击者的失败登录就会锁定所有客户端。仅当该代理是访问服务器的唯一途径时才应开启此选项。
领域上下文
这是 QuestLLens 的秘密武器。模式 introspection 让 AI 知道您的表长什么样,而领域上下文则告诉它这些表意味着什么——对于时序数据,还指导它如何高效查询。
工作原理
复制模板并描述您数据库的业务逻辑,然后让 QuestLLens 指向它:
cp context.md.example context.mdcontext.md 已被 gitignore——它存放您专有的领域知识,绝不会被提交到版本库。
# Via environment variable
DOMAIN_CONTEXT_FILE=context.md
# Or inline
DOMAIN_CONTEXT="This database stores sensor telemetry from industrial PLCs. Use SAMPLE BY for downsampled queries; never SELECT * across more than 1 hour of raw data."QuestLLens 会将这些上下文注入工具描述中,因此您的 AI 助手从第一次交互起就能理解您的业务领域。
示例 context.md
# Industrial Telemetry Database
## Key Concepts
- Every table is partitioned by **DAY** with designated timestamp `ts`
- The `device_id` column is a SYMBOL — always filter on it before time ranges
- We use `LATEST ON ts PARTITION BY device_id` to get the most recent reading per device
- Hot data lives in the last 7 days; older partitions are detached to cold storage
## Common Queries
- 1-minute downsample: `SELECT ts, avg(value) FROM readings SAMPLE BY 1m`
- Latest per device: `SELECT * FROM readings LATEST ON ts PARTITION BY device_id`
- Aligned multi-sensor: `ASOF JOIN` on `ts`
## Gotchas
- The `value` column is in raw ADC counts, not engineering units — multiply by `scale` from `device_config`
- `ts` is always UTC; the device-local time is in `local_ts`
- Never run `SELECT *` on the `raw_packets` table — it's billions of rows哪些内容会被增强
领域上下文会被编织进:
query工具描述(让 AI 写出更好的 SQL)get_partitions和describe_table --with_time_range的结果(让 AI 理解数据生命周期)describe_table --with_symbol_stats的输出(让 AI 尊重基数约束)模式发现响应(让 AI 提出更好的后续问题)
API 参考
健康检查
GET /health返回服务器状态和版本:
{
"status": "healthy",
"server": "questllens",
"version": "1.0.0"
}MCP 端点
POST /mcp → JSON-RPC 2.0 request
GET /mcp → Server-Sent Events (SSE) stream
DELETE /mcp → Session termination所有 MCP 通信均使用 Streamable HTTP Transport,并通过 mcp-session-id 头进行会话管理。
OAuth 端点(启用 --oauth 时)
GET /.well-known/oauth-protected-resource → Resource metadata
GET /.well-known/oauth-authorization-server → Server metadata
POST /oauth/register → Dynamic client registration
GET /oauth/authorize → Login form
POST /oauth/authorize → Authenticate
POST /oauth/token → Token exchange开发
# Install dependencies
npm install
# Run in dev mode (hot reload)
npm run dev
# Run with OAuth in dev mode
npm run dev:oauth
# Type check
npm run typecheck
# Run tests (read-only SQL boundary, config validation, identifier quoting)
npm test
# Build for production
npm run build项目结构
src/
├── index.ts # Entry point
├── config.ts # Environment config with Zod validation
├── server.ts # Express + MCP server, OAuth, session management
├── database/
│ ├── client.ts # PG-wire connection pool, query execution
│ ├── schema-loader.ts # QuestDB introspection + cache (auto-refresh on miss)
│ └── sql-safety.ts # Lexer + allowlist enforcing the read-only path
├── tools/
│ ├── index.ts # Executor re-exports
│ ├── _util.ts # Shared identifier quoting
│ ├── query.ts # Execute SELECT queries (markdown output)
│ ├── explain-query.ts # QuestDB EXPLAIN
│ ├── suggest-sample-by.ts # Pick a SAMPLE BY interval for a target bucket count
│ ├── list-tables.ts # Tables with TS / partitioning / WAL flags
│ ├── describe-table.ts # Table or MV detail (with optional time range / symbol stats)
│ ├── search-columns.ts # Cross-table column search
│ ├── get-create-table.ts # Round-trippable CREATE TABLE / CREATE MATERIALIZED VIEW
│ ├── get-table-params.ts # Per-table ingestion knobs (o3MaxLag, maxUncommittedRows, ttl)
│ ├── refresh-schema.ts # Manual cache reload (auto-refresh on miss is the default)
│ ├── get-partitions.ts # Partition list with from/to filter and summary mode
│ ├── get-storage-summary.ts # Top-N tables by disk (parquet vs native)
│ ├── get-sample-data.ts # Sample rows with optional columns/where projection
│ ├── get-table-stats.ts # Per-column null % + distinct (single batched SQL)
│ ├── get-wal-status.ts # WAL apply state, lag, suspended tables
│ ├── get-ingestion-health.ts # Composite WAL lag + latest-row staleness diagnostic
│ ├── get-running-queries.ts # query_activity() wrapper
│ ├── get-mv-dependencies.ts # Materialized view graph (forward + reverse)
│ └── server-info.ts # Version, build, feature detection
├── descriptions/
│ ├── generator.ts # Dynamic description builder
│ └── static.ts # Static description blocks
├── types/
│ └── index.ts # TypeScript interfaces
└── ...
tests/
├── sql-safety.test.ts # Read-only boundary: verbs, literals, injection shapes
├── config.test.ts # Env parsing, limits, domain-context loading
└── identifiers.test.ts # quoteIdent breakout attempts
skills/ # Claude skills — copy into .claude/skills/
├── questllens-using/
├── questllens-explore-a-database/
├── questllens-health-check/
└── questllens-tune-a-query/CI 在 Node 20 和 22 上运行类型检查、测试和构建,然后构建镜像并针对真实的 QuestDB 容器验证只读边界仍然有效(参见 .github/workflows/ci.yml)。
使用场景
使用场景 | QuestLLens 如何提供帮助 |
AI 驱动的时序分析 | 让 Claude 针对您的实时数据编写 |
容量规划 | 组合使用 |
时序数据入门 | 让 AI 借助领域上下文理解 QuestDB,并解释“此表的 designated timestamp 是什么意思?”或“此查询为什么慢?”。 |
查询优化 | 使用 |
数据摄入故障排查 |
|
数据保留审计 | 使用 |
模式可移植性 |
|
兼容性
QuestLLens 可与任何兼容 MCP 的客户端配合使用:
Claude Desktop(支持或不支持 OAuth)
Claude Code(CLI)
Cursor / Windsurf / VS Code(通过 MCP 扩展)
自定义 MCP 客户端(任何实现 MCP 规范的客户端)
以及任何 QuestDB 部署方式:
QuestDB 开源版 7.4+
QuestDB 企业版(推荐——支持按用户 RBAC)
QuestDB 云服务
自托管 Docker、Kubernetes 或裸机
get_mv_dependencies以及describe_table/get_create_table的物化视图分支需要 QuestDB 8.x。get_running_queries需要支持query_activity()的 QuestDB 版本。运行server_info可查看所连接实例支持的功能。所有其他工具兼容 7.4+。
故障排查
端口 8812 上出现“连接被拒绝”
QuestLLens 通过 PostgreSQL wire 协议连接端口 8812,而非 HTTP API 的 9000。请确保 PG-wire 监听器已启用(server.conf 中的 pg.enabled=true)且可访问。
模式 introspection 时出现“权限被拒绝”
QuestLLens 使用 QuestDB 的系统函数(tables()、table_columns()、wal_tables()、table_partitions()、materialized_views())。在 QuestDB 开源版中,任何已认证用户均可使用这些函数。在 QuestDB 企业版中,请确保您的角色已被授予必要的读取权限:
GRANT SELECT ON ALL TABLES TO questllens_readonly;get_mv_dependencies 返回空结果
物化视图需要 QuestDB 8.x。如果您使用的是 7.x,此工具将返回空结果并附带提示——请升级到 8.0+ 以使用 MV。
get_wal_status 显示“WAL not enabled”
WAL 表自 QuestDB 7.4 起成为默认类型。在更早版本上创建的表可能仍为非 WAL 表;它们会出现在 list_tables 中且 wal_enabled = false,并且不会包含在 get_wal_status 的结果中。
模式变更未反映
QuestLLens 会缓存模式元数据。您可以等待下一个刷新周期(默认:5 分钟),或调用 refresh_schema 立即更新 MCP 缓存。
OAuth 登录失败
请检查 MCP_AUTH_PASSWORD 是否已设置,以及限流器是否已触发(默认每 15 分钟 5 次尝试)。查看服务器日志以获取详细信息。
许可证
Apache-2.0。可自由使用、修改和分发,需注明出处;包含明确的专利授权。条款详见 LICENSE,第三方依赖许可证、QuestDB 商标免责声明以及 Abelara 品牌资产例外条款详见 NOTICE——徽标和品牌 artwork 不受 Apache-2.0 保护。
按“现状”提供,不附带任何形式的担保——使用风险自负。
由 Abelara 构建
QuestLLens 是 Abelara 工业 AI 与边缘计算工具集的一部分,与面向 PostgreSQL 的 PgLLens 并肩协作。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to securely query VAST Data databases for schema, metadata, and sample data via read-only SQL and MCP resources.MIT
- AlicenseNot gradedqualityAmaintenanceProvides a read-only PostgreSQL SQL surface for LLM agents via MCP, with defense-in-depth security layers for safe database queries.3MIT
- AlicenseNot gradedqualityBmaintenanceProvides read-only access to databases for MCP-compatible AI tools, allowing schema exploration and SELECT queries without exposing credentials or risking data changes.513MIT
- AlicenseNot gradedqualityBmaintenanceProvides read-only access to PostgreSQL databases via MCP, enforcing least-privilege roles, row-level security, masked views, and SQL AST guardrails to prevent data leakage and unauthorized operations, enabling AI agents to safely query sensitive production data.MIT
Related MCP Connectors
Read-only MCP access to sessions, funnels, campaigns, errors, live visitors, and anomalies.
Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.
Read-only Dant3 MCP for public rooms, agents, jobs and provisional machine onboarding.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DMDuFresne/questllens'
If you have feedback or need assistance with the MCP directory API, please join our Discord server