
CyberQP
io.github.WYRE-AI由 GitHub 账号 WYRE-AI 发布v1.0.2更新于 Oct 24, 2026
MCP server for CyberQP's privileged access management API.
概览
面向 CyberQP 特权访问管理 API 的只读 MCP 服务器,让助手查看客户、事件日志与 JIT 账户元数据。
- 可以做什么
- 列出当前技术人员可见的客户,可按目录类型和名称筛选
- 读取某客户的账户元数据以及各账户类型的数量统计
- 按客户、账户、事件类型、状态和日期范围查询租户事件日志,并列出全部事件类型取值
- 读取已认证租户自身的公司资料
- 查看 JIT 策略、单个客户或整个租户的 JIT 账户状态,以及某 JIT 账户是否存在
- 适用场景
- 适合使用 CyberQP 的托管服务商或 IT 团队,让助手在不打开控制台的情况下回答客户、账户清单、事件历史和即时访问状况等问题。它刻意保持只读且范围很窄,不用于获取密码或变更访问权限。
- 运行要求
- 以本地进程(stdio)方式从容器镜像运行,或通过 HTTP 运行。env 模式需通过 CYBERQP_ACCESS_TOKEN 提供 CyberQP OAuth2 访问令牌;gateway 模式则每次请求通过 X-CyberQP-Access-Token 头传入。HTTP 模式还需 CONDUIT_S2S_SECRET 和 X-Gateway-S2S HMAC 请求头。可选配置:AUTH_MODE、MCP_TRANSPORT、MCP_HTTP_HOST、MCP_HTTP_PORT、LOG_LEVEL。
安装
在 SourceWeft 中
- 打开 控制台中的 CyberQP,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
CyberQP MCP Server
MCP server for CyberQP's (formerly QuickPass Cybersecurity) privileged access management (PAM) API - customer/account metadata, the tenant event log, and JIT (Just-In-Time) account status/policy visibility, for AI assistants and the WYRE Conduit gateway.
Authentication
CyberQP authenticates with OAuth2 authorization_code flow (offline_access scope, refresh_token-backed) - not client_credentials. This connector never performs the OAuth dance itself: the WYRE Conduit gateway owns the authorize/exchange/refresh legs, and this server only ever receives a live bearer access token, sent as Authorization: Bearer <token> to CyberQP's API. In gateway mode the token arrives per-request via the X-CyberQP-Access-Token header; in local/stdio mode it's read once from CYBERQP_ACCESS_TOKEN.
Configuration
Copy .env.example and set the variables below. The stdio transport reads CYBERQP_ACCESS_TOKEN and does not use CONDUIT_S2S_SECRET.
/health stays unauthenticated and does not read credentials.
HTTP authentication
With MCP_TRANSPORT=http and CONDUIT_S2S_SECRET set, every /mcp request must include X-Gateway-S2S:
v1 is the lowercase hex HMAC-SHA256 of the ASCII message t=<unix seconds>, keyed by CONDUIT_S2S_SECRET. The timestamp must be within 300 seconds of the server clock. A missing or invalid header returns 401 before any vendor credential is read. The secret is never written to logs or error bodies.
In AUTH_MODE=gateway, /mcp also requires X-CyberQP-Access-Token. That header is the only credential source for the request. A missing token returns 401. The server does not fall back to CYBERQP_ACCESS_TOKEN in the process environment.
Single-tenant HTTP (AUTH_MODE=env) still requires a valid X-Gateway-S2S header. The access token then comes from CYBERQP_ACCESS_TOKEN.
Request limits
- HTTP request bodies are capped at 256 KiB (262144 bytes). After the
X-Gateway-S2Scheck (and, inAUTH_MODE=gateway, theX-CyberQP-Access-Tokenpresence check) passes, aContent-Lengthabove the cap returns 413 with a JSON-RPC error; bodies withoutContent-Lengthare capped by the MCP SDK transport. Unauthenticated requests still get 401 first. tools/callarguments are capped at 10,000 elements (every array item and object key at any depth). Larger inputs return anisErrortool result with a fixed message (the tool name is not echoed) and are never dispatched.
These limits address CVE-2026-111768 / GHSA-46jr-4wx8-v453 (memory exhaustion during validation) and GHSA-f897-62hf-6gxq (no request body / batch cap).
Tools
Customers
cyberqp_list_customers- list customers visible to the authenticated technician, filterable by directory type and name.cyberqp_get_customer_accounts- list account metadata (id, username, type, status) for a customer.cyberqp_get_customer_accounts_count- get per-account-type counts for a customer.
Events
cyberqp_get_events- get the tenant's event log, filterable by customer, account, event type, status, and date range.cyberqp_get_event_types- get the full set of event-type values.
Tenant
cyberqp_get_tenant_company_data- get the authenticated tenant's own company profile.
JIT (Just-In-Time) - status and policy only
cyberqp_get_jit_policies- get the configured JIT policy (approval requirements, max duration) for a customer + account type.cyberqp_get_customer_jit_status- get JIT account status for a specific customer.cyberqp_check_jit_account_exists- check whether a JIT account exists for a customer + directory type.cyberqp_get_tenant_jit_status- get JIT account status across the entire tenant.
Scope
This is a deliberately narrow, read-only, non-credential-exposing v1 surface. CyberQP is a PAM product - several of its real endpoints return live plaintext passwords and OTP codes, or mutate/provision privileged access. None of those are implemented here, by design, not by oversight:
Hard-excluded (credential-exposing) - never implemented:
GET /api/v1/account/{accountId}/password(AccountController_getAccountPassword_v1)GET /api/v1/jit/customer/{customerId}/account/{accountId}/password(JitController_getJitAccountPassword_v1)GET /api/v1/jit/customer/{customerId}/account/{accountId}/otp(JitController_getJitAccountOTP_v1)POST /api/v1/jit/customer/{customerId}/account/{accountId}/otp(JitController_saveJitAccountOtpSecret_v1)DELETE /api/v1/jit/customer/{customerId}/account/{accountId}/otp(JitController_deleteJitAccountOtpSecret_v1)
Hard-excluded (provisioning/mutation) - never implemented:
PATCH /api/v1/jit/customer/{customerId}/account/{accountId}/enable(JitController_enableJitAccount_v1)PATCH /api/v1/jit/customer/{customerId}/account/{accountId}/disable(JitController_disableJitAccount_v1)DELETE /api/v1/jit/customer/{customerId}/account/{accountId}(JitController_deleteJitAccount_v1)POST /api/v1/jit/customer/{customerId}/account(JitController_createJitAccount_v1)
Out of v1 scope (not credential/provisioning, just not part of this connector's metadata-visibility surface - could be added later as a deliberate follow-up):
GET /api/v1/customers/installer(CustomerController_downloadAgent_v1) - returns a binary installer, not structured data.GET /api/v1/tenants/install-token(TenantController_getInstallToken_v1) - returns an installation token.GET /api/v1/auth/login,GET /api/v1/auth/status,POST /api/v1/auth/refresh-token,POST /api/v1/auth/revoke-token,POST /api/v1/auth/notification-engine-token- OAuth/session plumbing the gateway already owns, not tool-shaped.POST /api/v1/event(EventController_processGenericEvent_v1) - a write.POST /api/v1/identity-verification/self-serve-notification(IdentityVerificationController_triggerSelfServePushIdentityVerification_v1) - a write/notification trigger.
They can be added as a follow-up if there's demand, after a deliberate scope decision - not by default.
Development
Docker
The image listens on 0.0.0.0 inside the container (MCP_HTTP_HOST) and defaults to AUTH_MODE=gateway. Publish the port on loopback and pass the S2S secret. In gateway mode the access token arrives on each request as X-CyberQP-Access-Token. It is not read from the environment.
Compose refuses to start when CONDUIT_S2S_SECRET is unset, defaults AUTH_MODE to gateway, publishes 127.0.0.1:8080:8080, and does not set CYBERQP_ACCESS_TOKEN or env_file:
Single-tenant HTTP (AUTH_MODE=env) still requires the S2S secret, then uses CYBERQP_ACCESS_TOKEN:
Local HTTP without a secret is development-only. It binds 127.0.0.1 even when MCP_HTTP_HOST is 0.0.0.0, and logs a warning:
来源:README.md,提交 c8caf09
工具
0版本历史
3- v1.0.2最新Oct 22, 2026
- v1.0.1Oct 14, 2026
- v1.0.0Sep 20, 2026
评分
已满足适用检查项的 40%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分
请在仓库或注册中心条目中声明许可证。