mcp-dockhand
MCP Dockhand
一个将 Dockhand API 暴露为 MCP 工具的 MCP(模型上下文协议)服务器。通过 AI 助手管理你的整个 Docker 基础设施。
API 覆盖率: 范围内 Dockhand 端点的 88.7%(282/318)已有对应的 MCP 工具——完整的、按区域自动更新的明细请参阅 docs/coverage.md。
Dockhand 是一个 Docker 管理服务器,通过 Hawser 代理连接多个 Docker 主机。此 MCP 服务器提供对所有 Dockhand 功能的完整编程式访问。
功能特性
280+ 个 MCP 工具,覆盖 Dockhand API——精确的、自动更新的覆盖率请参阅
docs/coverage.md可流式 HTTP 传输(MCP 规范 2025-03-26),适用于 Docker 容器托管
基于会话的认证,在收到 401 时自动重新登录
SSE 支持,用于部署操作(start、stop、down、restart)
环境过滤器,在所有容器/堆栈/镜像/网络/卷端点上强制执行
Docker 就绪,采用多阶段构建、非 root 用户和健康检查
Related MCP server: dockhand-mcp
快速开始
Docker(推荐)
docker run -d \
--name mcp-dockhand \
-p 8080:8080 \
-e DOCKHAND_URL=https://your-dockhand-server.com \
-e DOCKHAND_USERNAME=your-username \
-e DOCKHAND_PASSWORD=your-password \
ghcr.io/strausmann/mcp-dockhand:latestDocker Compose
services:
mcp-dockhand:
image: ghcr.io/strausmann/mcp-dockhand:latest
container_name: mcp-dockhand
restart: unless-stopped
ports:
- "8080:8080"
environment:
- DOCKHAND_URL=https://your-dockhand-server.com
- DOCKHAND_USERNAME=your-username
- DOCKHAND_PASSWORD=your-password从源码构建
git clone https://github.com/strausmann/mcp-dockhand.git
cd mcp-dockhand
npm install
npm run build
DOCKHAND_URL=https://your-server.com DOCKHAND_USERNAME=admin DOCKHAND_PASSWORD=secret npm start配置
变量 | 必填 | 默认值 | 描述 |
| 是 | - | Dockhand 服务器 URL |
| 是 | - | Dockhand 用户名 |
| 是 | - | Dockhand 密码 |
| 否 |
| MCP 服务器的端口 |
| 否 |
| 保留的 MCP 会话在过期前的不活动超时时间 |
| 否 |
| 移除过期会话的间隔(限制在会话 TTL 以内) |
| 否 |
| 最大保留会话数; |
| 否 |
| 监听地址。默认保留为通配地址,以便已发布的 Docker 端口( |
| 否 | (未设置——主机检查已禁用) |
|
| 否 | (未设置——来源检查已禁用) |
|
| 否 | (未设置——端点无认证) | 共享密钥,每个 |
| 否 |
|
|
| 否 | (空) | 允许设置 |
保护传输层
/mcp 默认绑定 0.0.0.0:8080(参见上面的 MCP_HOST),并且在默认情况下——即 MCP_ALLOWED_HOSTS、MCP_ALLOWED_ORIGINS 和 MCP_AUTH_TOKEN 均未设置时——它接受任何请求,不进行 Host/Origin 检查,也没有认证。这是 mcp-dockhand 一直以来的行为,刻意保留为默认值:默认启用检查会拒绝任何不以 localhost/127.0.0.1 方式访问服务器的客户端(如局域网 IP、反向代理、Docker 网络别名),从而在常规更新时破坏现有部署。
一旦 /mcp 超出你自己机器的回环接口可达,你就应该启用它——服务器持有一个 Dockhand 管理员凭据,每个工具调用都以该身份执行,因此任何能打开 MCP 会话的人都可以控制 Docker(容器 exec、通过 create_container 进行主机绑定挂载、文件读写、已存储的 git 凭据)。在未配置任何保护的情况下,服务器会在启动时记录一条 [security] WARNING 作为提醒。有三个相互独立、全部选择启用的保护层可用:
主机允许列表(
MCP_ALLOWED_HOSTS)。 一旦设置为非空值,对/mcp的每个请求——POST、GET和DELETE——除非其Host头与允许列表匹配,否则都会以403被拒绝。这是针对 DNS-rebinding 的主要防御:恶意网页无法让操作者的浏览器在允许列表接受的Host值下访问服务器。将其设置为你的客户端实际访问服务器的方式——文档中的本地设置为localhost:8080/127.0.0.1:8080,或者,如果你直接通过地址连接而不是通过localhost(包括下面的 mcp-proxy 远程服务器设置),则设置为你的客户端实际发送的host:port,例如100.100.50.40:8222。设置错误会导致每个请求都被以403 Invalid Host header拒绝——检查该消息,它会回显它看到的Host值。Origin 允许列表(
MCP_ALLOWED_ORIGINS)。 一旦设置,任何确实发送了不在列表中的Origin头的请求都会被以403拒绝。缺少Origin头的请求始终通过(SDK 自己的 MCP 客户端和大多数非浏览器工具从不发送),因此这仅在基于浏览器的客户端直接与/mcp通信时才有用;上面的 Host 允许列表才是真正阻止 DNS-rebinding 的机制。Bearer 令牌(
MCP_AUTH_TOKEN)。 一旦设置,每个/mCP请求都必须携带Authorization: Bearer <token>,否则会被以401拒绝;比较是恒定时间的。建议与 Host 允许列表一起使用,适用于任何可从操作者自身机器之外访问的部署。
# .env — recommended configuration once /mcp is reachable beyond loopback
MCP_ALLOWED_HOSTS=dock-mcp.internal.example.com
# or, connecting directly by address instead of a hostname:
#MCP_ALLOWED_HOSTS=100.100.50.40:8222
MCP_AUTH_TOKEN=<a long random secret, e.g. `openssl rand -hex 32`>使用 CrowdSec 保护服务器
服务器为每个请求(包括被拒绝的请求)向 stdout 写入一行 nginx 格式的访问日志,而结构化应用程序日志则进入 stderr。CrowdSec 使用其标准集合解析访问日志行——无需自定义解析器。
在运行 CrowdSec 代理的主机上添加一个采集文件:
source: docker
container_name:
- mcp-dockhand
labels:
type: docker
program: nginx-mcp两个标签都是必需的,如果你忘记其中一个,都不会大声报错。
type: docker 启用 crowdsecurity/docker-logs,它会解包 Docker 的 JSON 信封。program: nginx-mcp 启用 crowdsecurity/nginx-logs,它匹配以 nginx 开头的 program——-mcp 后缀使此来源与你的其他 nginx 来源区分开来。缺少一个标签,整个链路就什么都不产生,而且没有任何东西会报告它。
一旦接通,标准场景即可应用:
场景 | 在这里的含义 |
| 对 |
| 使用轮换用户代理的请求洪泛 |
403 也值得关注:它意味着请求未通过 MCP_ALLOWED_HOSTS 或 MCP_ALLOWED_ORIGINS 检查,而这正是 DNS-rebinding 尝试在这里的表现形式。
标准的 401 场景只统计
POST。 其过滤器是evt.Parsed.verb == 'POST'——一个字面值,而不是一个列表。此服务器在/mcp上提供POST、GET和DELETE,并且 bearer 检查先于这三个方法运行,因此GET /mcp或DELETE /mcp上的错误令牌 返回401的方式与POST完全相同——而LePresidente/http-generic-401-bf永远不会统计这些。有人通过GET /mcp猜测MCP_AUTH_TOKEN对它来说是不可见的。这是上游场景的一个属性,与使用它的每个 nginx 部署共享——不是此服务器的日志格式可以修复的。要关闭它,请添加一个删除
verb过滤器的本地场景,或者匹配此服务器响应的三个方法。在此之前,请将上面的行视为“对POST/mcp的重复401”。
在启用此功能之前设置
TRUSTED_PROXIES。 在反向代理后面,每个请求都来自代理的地址。如果没有TRUSTED_PROXIES,该地址就是被记录的地址——因此 CrowdSec 发出的第一个禁令 就会封掉代理,以及它后面的每个用户。将其设置为 你的代理通信的地址或子网。该设置在其他方向同样刻意:转发头 仅从该列表中的对等方获得信任。无条件信任它们会 让任何直接调用者指定任意第三方并使其被禁止。
一个预期的副作用: 结构化 JSON 行共享容器的日志
流并携带相同的 program 标签,因此它们无法通过 nginx 模式,并在 cscli metrics 中计为 unparsed。这是噪音,不是故障——没有警报,没有决策。
MCP 客户端配置
Claude Desktop / Claude Code
添加到你的 MCP 设置中:
{
"mcpServers": {
"dockhand": {
"url": "http://localhost:8080/mcp"
}
}
}如果服务器强制执行 bearer 令牌(设置了
MCP_AUTH_TOKEN——请参阅 保护传输),客户端必须将其作为Authorization头发送,否则每个请求都会被以401拒绝。在 Claude Code 的.mcp.json中,添加一个headers块——引用环境变量,以便令牌 永远不会存在于(通常受版本控制的)配置文件中:{ "mcpServers": { "dockhand": { "type": "http", "url": "http://your-server:8080/mcp", "headers": { "Authorization": "Bearer ${DOCKHAND_MCP_TOKEN}" } } } }仅通过加密传输发送令牌。 在共享网络上通过纯
http://发送的 bearer 令牌 可能被嗅探——在反向代理处终止 TLS,或通过 WireGuard/Tailscale/VPN 链路访问服务器(应用层 HTTP 随后由隧道加密)。在启动 Claude Code 的环境中导出
DOCKHAND_MCP_TOKEN(例如,从 一个被 gitignore 的.env中source它)。你连接的Host/host:port也必须位于服务器的MCP_ALLOWED_HOSTS中(如果设置了该允许列表)。对于 Claude Desktop(原生配置没有headers字段),请通过下面的 mcp-proxy 变通方法传递令牌——mcp-proxy 通过其自身的 环境/参数转发Authorization头。
使用远程服务器(mcp-proxy)的 Claude Desktop
Claude Desktop 可能无法使用上述原生 "url" 配置连接到 远程 mcp-dockhand 服务器(非
localhost),即使端点本身是可访问的。症状是 Claude Desktop 中出现通用的 "not a valid MCP server" 错误,而普通浏览器/curl 请求到同一 URL
却正确返回 {"error":"Invalid or missing session ID"}。这是
Claude Desktop 与远程 Streamable HTTP 服务器的一个已知限制,而不是
mcp-dockhand 的错误。
变通方法: 使用 mcp-proxy 包装连接,它将 Streamable HTTP 转换为 stdio——这是 Claude Desktop 可靠处理的传输方式:
{
"mcpServers": {
"dockhand": {
"command": "/path/to/mcp-proxy",
"args": ["--transport", "streamablehttp", "http://your-server:8080/mcp"]
}
}
}所有工具都能通过代理正常加载和工作。感谢 @deadrubberboy 报告此问题并 分享变通方法(#90)。
工具参考
容器(27 个工具)
工具 | 描述 |
| 列出环境中的所有容器 |
| 获取容器详细信息 |
| Docker 检查(完整详细信息) |
| 获取容器日志 |
| 获取资源使用统计 |
| 获取正在运行的进程 |
| 启动容器 |
| 停止容器 |
| 重启容器 |
| 暂停容器 |
| 恢复容器 |
| 重命名容器 |
| 更新容器设置 |
| 创建新容器 |
| 列出可用的 shell |
| 创建终端执行会话(execId + WS connectionInfo);不运行一次性命令或返回输出——Dockhand API 中不存在此类端点 |
| 浏览容器内的文件 |
| 从容器读取文件 |
| 在容器中创建空文件或目录(无内容——请使用 |
| 删除容器中的文件 |
| 重命名容器中的文件 |
| 更改文件权限 |
| 检查镜像更新 |
| 获取待更新 |
| 批量更新容器 |
| 跨容器、镜像、卷、网络或堆栈运行批量生命周期操作(启动/停止/重启/移除等) |
| 获取容器磁盘大小 |
| 获取聚合统计 |
堆栈(21 个工具)
工具 | 描述 |
| 列出所有堆栈 |
| 获取堆栈详细信息 |
| 创建并可选部署堆栈 |
| 启动堆栈(compose up) |
| 停止堆栈(compose stop) |
| 重启堆栈 |
| 关闭堆栈(compose down) |
| 删除堆栈 |
| 读取 compose 文件 |
| 更新 compose 文件 |
| 读取环境变量 |
| 更新环境变量(默认合并——对部分更新安全;使用 |
| 读取原始 .env 文件 |
| 验证环境变量 |
| 扫描文件系统以查找堆栈 |
| 采用未跟踪的堆栈 |
| 将堆栈移动到新路径 |
| 获取堆栈来源 |
| 获取基础路径 |
| 获取路径建议 |
| 验证堆栈路径 |
镜像(9 个工具)
工具 | 描述 |
| 列出所有镜像 |
| 获取镜像详细信息 |
| 获取镜像层历史 |
| 标记镜像 |
| 移除镜像 |
| 拉取镜像 |
| 推送镜像 |
| 漏洞扫描(Trivy/Grype) |
| 将镜像导出为 tar 包 |
环境(18 个工具)
工具 | 描述 |
| 列出所有环境 |
| 获取环境详细信息 |
| 创建环境 |
| 更新环境 |
| 删除环境 |
| 测试连接 |
| 不保存进行测试 |
| 自动检测套接字 |
| 获取时区 |
| 设置时区 |
| 获取更新检查设置 |
| 设置更新检查设置 |
| 获取镜像清理设置 |
| 设置镜像清理设置 |
| 列出通知 |
| 创建通知 |
| 获取通知 |
| 删除通知 |
网络(7 个工具)
工具 | 描述 |
| 列出所有网络 |
| 获取网络详细信息 |
| 检查网络 |
| 创建网络 |
| 移除网络 |
| 连接容器 |
| 断开容器 |
卷(9 个工具)
工具 | 描述 |
工具 | 描述 |
| 列出所有卷 |
| 获取卷详情 |
| 检查卷 |
| 浏览卷中的文件 |
| 从卷中读取文件 |
| 释放浏览会话 |
| 克隆卷 |
| 导出卷 |
| 删除卷(破坏性操作) |
Git 堆栈(15 个工具)
工具 | 描述 |
| 列出基于 Git 的堆栈 |
| 获取 Git 堆栈详情 |
| 部署 Git 堆栈(SSE) |
| 与远程仓库同步 |
| 测试 Git 连接 |
| 获取环境变量文件 |
| 触发 Webhook |
| 获取 Webhook 详情 |
| 列出 Git 凭据 |
| 创建 Git 凭据 |
| 获取凭据详情 |
| 更新凭据 |
| 删除凭据 |
| 列出 Git 仓库 |
| 创建仓库配置 |
仪表板与活动(8 个工具)
工具 | 描述 |
| 获取仪表板统计信息 |
| 获取显示偏好 |
| 设置显示偏好 |
| 获取活动流 |
| 容器活动 |
| 活动事件 |
| 活动统计 |
| 来自容器的合并日志 |
认证与 Hawser(12 个工具)
工具 | 描述 |
| 检查会话状态 |
| 列出认证提供者 |
| 获取认证设置 |
| 创建 OIDC 提供者 |
| 获取 OIDC 提供者 |
| 测试 OIDC 提供者 |
| 创建 LDAP 提供者 |
| 获取 LDAP 提供者 |
| 测试 LDAP 提供者 |
| 列出 Hawser 令牌 |
| 创建 Hawser 令牌 |
| 撤销 Hawser 令牌 |
审计(4 个工具)
工具 | 描述 |
| 获取审计日志 |
| 获取审计事件类型 |
| 按用户审计数据 |
| 导出审计日志 |
通知(8 个工具)
工具 | 描述 |
| 列出通知 |
| 创建通知 |
| 获取通知 |
| 更新通知 |
| 删除通知 |
| 测试通知 |
| 不保存进行测试 |
| 为给定事件类型和负载触发真实测试事件 |
注册表(10 个工具)
工具 | 描述 |
| 列出注册表 |
| 添加注册表 |
| 获取注册表详情 |
| 更新注册表 |
| 删除注册表 |
| 设为默认 |
| 搜索注册表 |
| 获取目录 |
| 从注册表获取镜像 |
| 获取镜像标签 |
系统与设置(19 个工具)
工具 | 描述 |
| 服务器健康状态 |
| 数据库健康状态 |
| 主机信息 |
| 系统信息 |
| 磁盘使用情况 |
| 列出系统文件 |
| 读取系统文件 |
| 变更日志 |
| 依赖项 |
| 常规设置 |
| 更新设置 |
| 主题设置 |
| 更新主题 |
| 扫描器设置 |
| 更新扫描器 |
| 许可证信息 |
| 通过名称和密钥激活许可证 |
| Prometheus 指标 |
| 清理所有资源 |
用户、角色与偏好(20 个工具)
工具 | 描述 |
| 列出用户 |
| 创建用户 |
| 获取用户详情 |
| 更新用户 |
| 删除用户 |
| MFA 状态 |
| 启用 MFA |
| 禁用 MFA |
| 获取用户角色 |
| 为用户分配一个角色(非批量替换) |
| 从用户取消分配一个角色 |
| 列出角色 |
| 使用名称和权限对象创建角色 |
| 获取角色 |
| 更新角色 |
| 删除角色 |
| 获取自己的个人资料 |
| 更新自己的个人资料 |
| 获取收藏 |
| 设置收藏 |
| 列出配置集 |
计划(9 个工具)
工具 | 描述 |
| 列出计划 |
| 获取设置 |
| 更新设置 |
| 执行历史 |
| 执行详情 |
| 获取计划 |
| 立即运行 |
| 启用/禁用 |
| 切换系统计划 |
自动更新(3 个工具)
工具 | 描述 |
| 获取所有自动更新设置 |
| 获取容器自动更新 |
| 设置自动更新策略 |
自助 / 元工具(6 个工具)
针对此 MCP 服务器本身的诊断——与上述 Dockhand API 工具不同——适用于客户端或操作者询问"此服务器是否健康且配置正确?",而非"Dockhand 是否健康?"。这六个工具均不接受任何输入参数,也不像上表那样包装单个 Dockhand 端点(get_tool_manifest 和 get_runtime_stats 完全不调用任何 Dockhand 端点)——参见 src/tools/meta.ts。
工具 | 描述 |
| 此服务器自身的版本、git SHA、构建日期、运行时间、MCP 协议版本,以及其连接的 Dockhand URL/服务器版本 |
| 将此服务器的运行版本与最新的 GitHub 版本进行比较(TTL 缓存) |
| 列出每个注册的工具及其 Dockhand |
| 端到端诊断:Dockhand 可达性、凭据有效性,以及实时的按环境可达性检查( |
| 检查所需的 |
| 此服务器的进程内计数器:总调用/每工具调用和错误计数、运行时间,以及最后一个错误的工具/消息/时间戳 |
备注:
check_for_update需要出站网络访问api.github.com(GitHub 的 releases API)——如果该地址不可达,它会降级为updateAvailable: null而不是失败。没有任何元工具会暴露任何机密值。
validate_config仅报告所需环境变量是否存在(布尔值)以及它们是否通过认证(一个布尔值加上原始 HTTP 状态码,例如200/401)——绝不会报告凭据值本身。self_check以相同方式报告认证有效性。get_runtime_stats的lastError仅携带工具名称、错误消息和时间戳——绝不会携带调用参数或响应负载。不过,该错误消息并非完全不透明: 对于失败的 Dockhand API 调用,它可能嵌入上游 HTTP 状态和响应正文的片段(通过DockhandClient自身的Dockhand API error: ... returned <status>: <body>消息),并且它会被回显给下一个调用get_runtime_stats的 MCP 客户端——不一定是触发原始错误的那一个。它绝不会包含请求正文或凭据值,并且在存储前会被截断为 500 个字符(带省略号标记),因此过大的上游响应绝不会被整体回显。
重要说明
update_stack_env —— 合并与替换语义
Dockhand REST 端点 PUT /api/stacks/{name}/env 具有替换语义:提交部分变量列表会静默删除堆栈中的所有其他变量。单变量更新会清空所有其他内容。
为防止意外数据丢失,此 MCP 工具默认采用合并模式:
它通过
GET /api/stacks/{name}/env获取当前变量列表。它按键合并传入的变量(键冲突时新值覆盖现有值)。
它通过
PUT写回完整的合并后列表。
# Safe partial update — only MY_VAR changes, all others preserved
update_stack_env(environmentId=1, name="my-stack", variables=[{key: "MY_VAR", value: "new"}])
# Explicit full replacement — all other variables are deleted
update_stack_env(environmentId=1, name="my-stack", variables=[...], mode="replace")仅当您有意替换整个变量集时,才使用 mode="replace"。
环境 ID 是必需的
大多数 Docker 资源端点(容器、堆栈、镜像、网络、卷)都需要 environmentId 参数。这映射到 Dockhand API 中的 ?env=<id> 查询参数。没有它,端点会返回空数组。
SSE 响应
部署操作(start、stop、down、restart、带重启的 compose update)返回 Server-Sent Events。MCP 服务器会自动解析这些事件并返回最终结果。
认证
服务器使用基于会话的 Cookie 认证。它会自动:
在首次请求时登录
将会话 Cookie 存储在内存中
在收到 401 响应时重新认证
处理会话超时(24 小时)
故障排查
从 LOG_LEVEL=debug 开始。此后每个 Dockhand 请求都会显示其端点、状态码和持续时间,并且单次调用的每一行日志共享同一个 call 标识符——用 grep 搜索它即可获得完整序列。req 标识符将这些行关联回启动它们的访问行,而 sid 覆盖单个客户端在整个会话期间所做的一切。对于通过客户端发出的请求,ms 是完整请求持续时间——它涵盖响应正文被读取的整个过程,而不仅仅是直到响应头到达的时间,因此它反映了慢速或停滞的流式响应(例如部署的 SSE 输出)实际花费的成本——而 bytes 是实际读取的正文大小。(登录和自检探针会引导客户端且无法通过它路由,因此它们的行记录的是到响应头的时间,没有 bytes 字段。)失败的 Dockhand 请求还会额外记录一条 warn 行,携带 errType——异常名称(例如 TimeoutError、TypeError),这是一个有界词汇表而非自由文本——因此您可以按错误类型过滤失败。该 warn 行在请求在任何响应到达之前失败时触发,也在响应正文读取中途失败时触发(例如 SSE 流在流式传输中途达到超时)——无论哪种情况,ms 都反映失败所花费的时间。
开发
# Install dependencies
npm install
# Type check
npm run typecheck
# Build
npm run build
# Run in development mode
DOCKHAND_URL=https://your-server.com \
DOCKHAND_USERNAME=admin \
DOCKHAND_PASSWORD=secret \
npm run dev代码检查
npm run lint 使用两条规则检查 src/ 和 tests/:no-unused-vars 和 no-explicit-any。由于 typescript-eslint 不支持固定的 typescript@^7.0.2 编译器——它在 TS 7.0 上会硬抛错,而不仅仅是 peer 警告:参见 typescript-eslint#10940——代码检查在一次性 node:22 容器中运行,并固定使用 TypeScript 5(该语言在 TS 5/6/7 中完全相同;只有编译器不同)。它以只读方式挂载 src/、tests/ 和 eslint.config.js,因此运行它需要 Docker。同一脚本在 CI 中作为硬性门禁运行。未使用的导入/局部变量还会由 tsc 在 TS 7 上原生捕获(tsconfig.tests.json 中的 noUnusedLocals/noUnusedParameters,通过 npm run typecheck:tests)。
许可证
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 gradedqualityAmaintenanceExposes over 130 Dockhand API endpoints as tools to manage Docker infrastructure through AI assistants. It enables comprehensive control over containers, stacks, networks, and volumes across multiple environments and hosts.29MIT
- AlicenseNot gradedqualityFmaintenanceExposes the Dockhand Docker management API as tools for LLMs, enabling container, stack, image, volume, and network management via natural language.3MIT
- FlicenseNot gradedqualityCmaintenanceAn MCP server that gives any LLM client the ability to list, inspect, start, stop, and monitor Docker containers on the host machine.1
- FlicenseBqualityBmaintenanceAn MCP server that gives LLMs direct control over a local Docker daemon, enabling container, image, volume, network, and Compose stack management through natural language.234
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server exposing the Backtest360 engine API as tools for AI agents.
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
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/d7eeem/mcp-dockhand'
If you have feedback or need assistance with the MCP directory API, please join our Discord server