项目简介
RISKEN MCP 服务器是一个基于 Model Context Protocol (MCP) 的后端服务,它将 RISKEN 平台的安全数据和操作能力集成进来,允许支持 MCP 的 LLM (大型语言模型) 客户端(如 Claude Desktop, Cursor 等)通过标准化的协议与 RISKEN 进行交互。这使得 LLM 可以获取最新的安全上下文,调用 RISKEN API 执行任务,从而实现安全分析、数据提取和自动化工作流程。
主要功能点
- 提供 RISKEN 数据资源: 允许 LLM 通过 Resource URI 访问 RISKEN 中的特定数据,例如获取某个安全问题的详细内容。
- 注册和执行 RISKEN 工具: 提供一系列可供 LLM 调用的工具,例如:
- 获取当前认证的 RISKEN 项目信息。
- 根据多种条件(如 ID、数据源、风险评分、状态等)搜索安全问题 (Findings)。
- 归档特定的安全问题。
- 根据状态搜索告警 (Alerts)。
- 支持多种传输协议: 支持 Stdio(标准输入输出)和 Streamable HTTP 协议与 MCP 客户端通信。
- 会话管理和能力声明: 服务器遵循 MCP 协议,负责管理客户端会话,并向客户端声明其支持的资源模板和工具列表及其参数定义。
安装步骤
该服务器推荐使用 Docker 容器运行。
- 确保您已安装 Docker 并正在运行。
- 获取您的 RISKEN 访问令牌 (Access Token) 和 RISKEN API 的 URL。
服务器配置
要在您的 MCP 客户端中配置 RISKEN MCP 服务器,需要添加相应的 MCP 服务器配置信息。配置是 JSON 格式,包含服务器的名称、启动命令 ('command') 及其参数 ('args') 等。
Stdio 模式配置示例 (用于直接启动容器):
{ "mcpServers": { "risken": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "RISKEN_ACCESS_TOKEN", // 将从env中获取RISKEN_ACCESS_TOKEN "-e", "RISKEN_URL", // 将从env中获取RISKEN_URL "ghcr.io/ca-risken/risken-mcp-server", "stdio" // 启动stdio模式 ], "env": { "RISKEN_ACCESS_TOKEN": "您的RISKEN访问令牌", // 替换为您的实际令牌 "RISKEN_URL": "您的RISKEN API URL" // 替换为您的实际API URL,例如 http://localhost:8000 } } } }
Streamable HTTP 模式配置示例 (需要先独立运行服务器):
-
首先,在终端中运行服务器容器:
docker run -it --rm \ -e RISKEN_ACCESS_TOKEN="您的RISKEN访问令牌" \ -e RISKEN_URL="您的RISKEN API URL" \ -e MCP_AUTH_TOKEN="您设置的MCP认证令牌" \ -p 8080:8080 \ ghcr.io/ca-risken/risken-mcp-server http替换 '"您的RISKEN访问令牌"'、'"您的RISKEN API URL"' 和 '"您设置的MCP认证令牌"' 为实际值。 'MCP_AUTH_TOKEN' 是用于客户端连接到 HTTP 服务器的额外认证令牌,可以任意设置,但必须与客户端配置一致。
-
然后在 MCP 客户端中添加配置:
{ "mcpServers": { "risken": { "command": "npx", // 使用mcp-remote工具连接 "args": [ "mcp-remote", "http://localhost:8080/mcp", // 服务器运行的地址和路径 "--header", "Authorization: Bearer ${MCP_AUTH_TOKEN}" // 认证头部 ], "env": { "MCP_AUTH_TOKEN": "您设置的MCP认证令牌" // 与服务器启动时设置的令牌一致 } } } }确保 'http://localhost:8080/mcp' 是您运行 HTTP 服务器的正确地址和路径。 替换 '"您设置的MCP认证令牌"' 为您在服务器启动时使用的令牌。
将上述对应的配置添加到您的 MCP 客户端的服务器设置中。
基本使用方法
配置完成后,您的 LLM 客户端将能够感知到 RISKEN MCP 服务器提供的能力(工具和资源)。您可以通过与 LLM 进行自然语言对话,请求它执行与 RISKEN 相关的任务。例如:
- 询问 LLM:“帮我查找一下得分在 0.8 分以上的活跃安全问题。” (LLM 可能调用 'search_finding' 工具)
- 询问 LLM:“请获取 Finding ID 为 1234 的详细内容。” (LLM 可能使用 'finding://<project_id>/1234' Resource URI)
- 请求 LLM:“将 Finding ID 为 5678 的问题标记为已归档,备注‘不是真正的风险’。” (LLM 可能调用 'archive_finding' 工具)
LLM 将通过 MCP 协议调用服务器提供的工具或读取资源,服务器处理请求(与 RISKEN API 交互),并将结果返回给 LLM,LLM 再将结果整合到对话回复中。
信息
分类
AI与计算