项目简介
Secure Chain MCP Server是一个专门为大型语言模型(LLM)客户端提供软件供应链安全上下文和工具的后端服务。它集成了Neo4j图数据库和MongoDB,用于存储和管理软件依赖关系、漏洞、共同弱点枚举(CWE)和利用信息。通过标准化的MCP协议,LLM可以调用这些工具来查询特定软件包或版本的安全状态、其软件供应链组成,以及相关的漏洞和威胁情报。
主要功能点
- 软件包与版本状态查询: 检查软件包或特定版本是否存在于依赖图中,并获取其基本状态信息。
- 软件供应链分析 (SSC): 分析软件包或版本的直接及传递性软件供应链,揭示其完整的依赖关系。
- 漏洞信息检索: 根据漏洞ID查询详细的漏洞信息,或查找与特定CWE或漏洞利用相关的漏洞列表。
- 漏洞利用与CWE查询: 查询特定漏洞利用(Exploit)或共同弱点枚举(CWE)的详细信息,以及与特定漏洞ID相关的利用和CWE。
- 漏洞可利用性交换 (VEX) 与威胁情报交换 (TIX): 为给定仓库生成并检索VEX和TIX信息,提供漏洞可利用性和威胁情报的上下文。
- 统一接口: 通过Model Context Protocol (MCP) 提供统一的JSON-RPC接口,方便LLM客户端进行功能调用和信息获取。
安装步骤
-
克隆仓库:
git clone https://github.com/securechaindev/securechain-mcp-server.git cd securechain-mcp-server -
配置环境变量:
- 从仓库根目录的'.env.example'文件创建'.env.local'文件。
- 根据提示配置GitHub API密钥(如果需要)。
- 生成并设置您自己的JSON Web Token (JWT) 密钥和算法。例如,可以使用命令 'openssl rand -base64 32' 生成一个随机密钥。
-
创建Docker网络: 确保已创建名为'securechain'的Docker网络。如果尚未创建,请运行以下命令:
docker network create securechain -
下载数据并启动数据库:
- 从Zenodo下载数据压缩包(访问 https://doi.org/10.5281/zenodo.16739081)。
- 将下载的压缩包解压到项目根目录。
- 在项目根目录运行 'docker compose up --build' 命令,这将启动数据库容器并自动填充数据。
-
启动应用程序: 在项目根目录运行以下命令以启动MCP服务器:
docker compose -f dev/docker-compose.yml up --build -
创建本地用户: 访问 'http://localhost:8000/docs#/Secure%20Chain%20Auth%20-%20User/signup_signup_post'。在此页面创建一个新用户,例如:
{ "email": "[email protected]", "password": "supersecre3T*" }请记住您创建的邮箱和密码,它们将用于MCP客户端的认证。
服务器配置 (供MCP客户端使用)
MCP客户端(例如VS Code的Copilot插件或其他支持MCP的LLM客户端)需要配置连接此MCP服务器。以下是一个示例配置信息,通常放置在MCP客户端的配置目录中(例如,VS Code的'.vscode/mcp.json'文件)。您需要将'X-Auth-Email'和'X-Auth-Pass'替换为您在安装步骤6中创建的用户凭据。
{ "servers": { "Secure Chain MCP Server": { "type": "http", "url": "http://localhost:8005/mcp", "headers": { "X-Auth-Email": "您创建的用于认证的邮箱地址", "X-Auth-Pass": "您创建的用于认证的密码" } } } }
- '"Secure Chain MCP Server"': 这是您为该MCP服务器定义的名称,客户端将使用此名称来识别它。
- '"type": "http"': 指定客户端通过HTTP协议与服务器通信。
- '"url": "http://localhost:8005/mcp"': MCP服务器的访问地址。在本地部署时,通常是'http://localhost:8005/mcp'。
- '"headers"': 包含用于服务器认证的自定义HTTP头。
- '"X-Auth-Email"': 您在本地部署Secure Chain时注册的邮箱地址。
- '"X-Auth-Pass"': 您在本地部署Secure Chain时注册的密码。
基本使用方法
配置完成后,您的MCP客户端(如VS Code中的AI助手)将能够通过上述配置连接到Secure Chain MCP Server。LLM客户端可以利用服务器注册的各种工具,以自然语言或其他支持的格式向服务器提出查询请求。
例如,您可以通过LLM客户端执行以下操作:
- 查询软件包状态: "检查Python包'requests'是否存在并获取其状态。" (内部调用'get_package_status'工具)
- 分析软件供应链: "分析Maven包'org.apache.commons:commons-lang3'的软件供应链。" (内部调用'get_package_ssc'工具)
- 获取漏洞信息: "告诉我关于漏洞'CVE-2023-XXXX'的详细信息。" (内部调用'get_vulnerability'工具)
- 查找相关CWE: "找出与漏洞'CVE-2023-XXXX'相关的所有CWE。" (内部调用'get_cwes_by_vulnerability_id'工具)
服务器将处理这些请求,执行相应的工具功能,并以结构化的形式返回结果给LLM客户端。
信息
分类
开发者工具