返回市场
风险MCP服务器

风险MCP服务器

作者:ca-risken6 星标更新:2025-08-24

项目介绍

RISKEN MCP 服务器

远程 MCP 服务器

RISKEN MCP 服务器是一个 模型上下文协议 (MCP) 服务器,它提供了与 RISKEN API 的无缝集成,使开发者和工具能够实现高级自动化和交互功能。

使用场景

通过将 RISKEN MCP 服务器连接到您日常使用的 AI 工具,您可以执行以下各种操作:

  • 检查 RISKEN 中的活动警报并监控其状态。
  • 搜索、分析和审查发现项,包括其解释和修复步骤。
  • 归档已解决的发现项,以保持清晰和有序的安全态势。

先决条件

  1. 要在容器中运行服务器,您需要安装 Docker
  2. 安装 Docker 后,还需要确保 Docker 正在运行。
  3. 您还需要一个 RISKEN 访问令牌

本地 MCP 服务器

请将以下 MCP 服务器配置添加到您的 MCP 客户端 (Claude DesktopCursor) 设置中。

{
  "mcpServers": {
    "risken": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "RISKEN_ACCESS_TOKEN",
        "-e",
        "RISKEN_URL",
        "ghcr.io/ca-risken/risken-mcp-server",
        "stdio"
      ],
      "env": {
        "RISKEN_URL": "http://localhost:8098",
        "RISKEN_ACCESS_TOKEN": "your_access_token"
      }
    }
  }
}

远程 MCP 服务器

RISKEN MCP 服务器支持可流式传输的 HTTP。

在本地

docker run -it --rm \
  -e RISKEN_URL=http://localhost:8098 \
  -e RISKEN_ACCESS_TOKEN=xxxxxx \
  -p 8080:8080 \
  ghcr.io/ca-risken/risken-mcp-server http

在 Cloud Run 上

您可以使用 Terraform 在 Google Cloud Run 上部署服务器。

  1. 访问 terraform/examples/googlecloud 并使用 Terraform 部署服务器到 Google Cloud Run。

  2. 将以下 MCP 服务器配置添加到您的 MCP 客户端 (Claude DesktopCursor) 设置中。

注意: 由于大多数 MCP 客户端仅允许 stdio 连接,因此目前需要使用 mcp-remote 作为代理来连接到远程 MCP 服务器。

Claude Desktop, Cursor ...

{
  "mcpServers": {
    "risken": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://localhost:8098/mcp",
        "--header",
        "RISKEN-ACCESS-TOKEN:${RISKEN_ACCESS_TOKEN}"
      ],
      "env": {
        "RISKEN_ACCESS_TOKEN": "xxxxxx"
      }
    }
  }
}

第三方授权 (OAuth2.1)

RISKEN MCP 服务器支持第三方授权 (OAuth2.1),通过外部身份提供者 (IdP) 实现安全认证。

概述

OAuth2.1 实现遵循 MCP 授权规范 的第三方授权流程,其中:

  1. MCP 客户端 发起与 MCP 服务器的 OAuth 流程
  2. MCP 服务器 作为授权服务器并将用户重定向到 IdP
  3. IdP 对用户进行认证并返回到 MCP 服务器
  4. MCP 服务器 为 MCP 客户端发放访问令牌
  5. MCP 客户端 使用访问令牌进行后续的 MCP 请求

OAuth 流程

sequenceDiagram
    participant Browser as 用户浏览器
    participant Client as MCP 客户端
    participant Server as MCP 服务器
    participant IdP as 身份提供者

    Client->>Server: POST /mcp (无认证)
    Server->>Client: 401 未授权 + WWW-Authenticate
    Client->>Server: GET /.well-known/oauth-authorization-server
    Server->>Client: 授权元数据
    Client->>Server: POST /register (动态客户端注册)
    Server->>Client: client_id
    Client->>Browser: 打开授权 URL (带有 PKCE 挑战)
    Browser->>IdP: 用户认证
    IdP->>Browser: 重定向到回调 URL (带有 code)
    Browser->>Server: GET /oauth/callback (IdP code)
    Note over Server: 存储 IdP code,生成内部 JWT 授权码
    Server->>Client: 授权完成 (内部码)
    Client->>Server: POST /token (内部码 + PKCE 验证器)
    Note over Server: 验证 PKCE 挑战/验证器
    Server->>IdP: 用 IdP code 交换访问令牌
    IdP->>Server: 访问令牌
    Server->>Client: 访问令牌
    Client->>Server: POST /mcp (带有 Bearer 令牌)
    Server->>Client: MCP 响应

配置

MCP 服务器配置

以下环境变量是支持 OAuth2.1 所必需的:

变量必需描述示例
MCP_SERVER_URLMCP 服务器的公共 URLhttp://localhost:8080
AUTHZ_METADATA_ENDPOINTIdP 的 OAuth 元数据端点https://your-idp.com/.well-known/oauth-authorization-server
CLIENT_IDIdP 的 OAuth 客户端 IDyour-client-id
CLIENT_SECRETIdP 的 OAuth 客户端密钥your-client-secret
JWT_SIGNING_KEY会话 JWT 令牌的签名密钥your-256-bit-secret

身份提供者要求

您的 IdP 必须支持以下 OAuth 功能:

功能要求描述
授权码流程必需标准 OAuth 授权码授予
JWKS 端点必需用于 JWT 验证的 JSON Web 密钥集
元数据发现必需RFC 8414 授权服务器元数据

注意: PKCE 验证由 MCP 服务器在 MCP 客户端和 MCP 服务器之间内部处理(根据 MCP 规范)。IdP 不需要支持 PKCE。

工具

项目

  • get_project - 获取 RISKEN 项目。

发现项

  • search_finding - 搜索 RISKEN 发现项。

    • finding_id - 按发现项 ID 搜索。
    • alert_id - 按警报 ID 搜索。
    • data_source - 按数据源搜索。
    • resource_name - 按资源名称搜索。
    • from_score - 按最低分数搜索。
      • 0.0 ~ 0.3 - 低
      • 0.3 ~ 0.6 - 中
      • 0.6 ~ 0.8 - 高
      • 0.8 ~ 1.0 - 严重
    • status - 按状态搜索。
      • 0 - 全部
      • 1 - 活动(默认)
      • 2 - 待处理
    • offset - 按偏移量搜索。
    • limit - 按限制搜索。
  • archive_finding - 归档 RISKEN 发现项。

    • finding_id - 按发现项 ID 归档。
    • note - 备注。

警报

  • search_alert - 搜索 RISKEN 警报。
    • status - 按状态搜索。
      • 1 - 活动
      • 2 - 待处理
      • 3 - 已停用(已关闭)

资源

发现项内容

  • 获取发现项内容 - 获取特定发现项的内容。
    • 模板: finding://{project_id}/{finding_id}
    • 参数:
      • project_id: 项目的 ID。
      • finding_id: 发现项的 ID。

许可证

本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。