Token导航 LogoToken导航TokenDH.com
Snyk MCP REST logo
安全风控stdio官方级别未说明来源级核验

Snyk MCP REST

MCP Server

ts-node

一个为Snyk REST API提供类型安全客户端和MCP服务器支持的TypeScript包,集成了CLI工具和REST API工具,适用于AI助手集成。

工具数

0

提示词数

0

GitHub Stars

2

资源数

0
安全漏洞检测TypeScriptClaudeClaude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

axelspringer

提供方

axelspringer

最后核验

2026/5/17 20:20

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx ts-node examples/list-tools.ts

详细介绍

snyk-mcp休息

![License: MIT](https://opensource.org/licenses/MIT)

用于Snyk REST API的TypeScript客户端,内置模型上下文协议(MCP)服务器支持。该软件包提供了根据官方Snyk OpenAPI规范自动生成的类型安全的API客户端和全面的MCP服务器 Snyk CLI工具和REST API工具 用于AI助手集成。

保罗·哈肯伯格

建筑

此MCP服务器提供 统一接口 通过两套互补的工具集进行Snyk安全扫描:

🔧 Snyk CLI工具(通过代理)

服务器会自动连接到Snyk CLI,并将所有本机CLI命令代理为MCP工具。这些工具提供全面的安全扫描功能:

  • snyk_test -漏洞测试项目
  • snyk_code_test -安全问题的静态代码分析
  • snyk_container_test -集装箱图像扫描
  • snyk_iac_test -基础设施即代码扫描
  • snyk_monitor -监控Snyk仪表板中的项目
  • snyk_sbom_test -SBOM生成和测试
  • snyk_send_feedback -报告安全指标
  • snyk_trust, snyk_version,以及更多

🌐 REST API工具(自定义)

此外,服务器使用Snyk REST API为管理和查询操作提供定制的工具:

  • snyk_rest_find_projects -按名称搜索项目
  • snyk_rest_get_issues -检索项目的问题
  • snyk_rest_get_issue -获取详细的问题信息
  • snyk_rest_get_repo_issues -跨存储库项目汇总问题

这种双工具架构为人工智能助手提供了两全其美的功能:扫描操作的Snyk CLI的全部功能,以及查询和管理任务的高效REST API访问。

特性

  • 🔄 自动生成的TypeScript客户端 -根据官方Snyk OpenAPI规范生成
  • 🤖 MCP服务器集成 -用于AI助手的内置模型上下文协议服务器(Claude等)
  • 📦 完全类型安全 -IntelliSense完全支持TypeScript
  • 🔌 基于Axios的HTTP客户端 -具有错误处理功能的可靠HTTP操作
  • 🧪 综合测试 -Vitest支持覆盖
  • 🏗️ 模块化架构 -生成代码和自定义代码之间的清晰分离

安装

npm install

构建

构建过程包括OpenAPI代码生成和TypeScript编译:

# Full build (generate + compile)
npm run prepare

# Generate API client from OpenAPI spec
npm run generate

# Compile TypeScript only
npm run build

用法

API客户端基本用法

import { Configuration, OrgsApi, IssuesApi } from "snyk-mcp-rest";

// Configure API client
const config = new Configuration({
  apiKey: process.env.SNYK_API_KEY,
  basePath: "https://api.snyk.io/rest",
});

// Or use the helper function
import { createConfiguration } from "snyk-mcp-rest";
const config = createConfiguration(process.env.SNYK_API_KEY!);

// Use Organizations API
const orgsApi = new OrgsApi(config);
const orgs = await orgsApi.listOrgs({
  version: "2024-11-05",
});

// Use Issues API
const issuesApi = new IssuesApi(config);
const issues = await issuesApi.listOrgIssues({
  version: "2024-11-05",
  orgId: "your-org-id",
  status: ["open"],
  limit: 100,
});

// Use Projects API to find projects by repository name
const projectsApi = new ProjectsApi(config);
const projects = await projectsApi.listOrgProjects({
  version: "2024-11-05",
  orgId: "your-org-id",
  names: ["owner/my-repo"], // Filter by repository name
});

// Get project IDs from matching repositories
const projectIds = projects.data.data?.map((p) => p.id) || [];

// Fetch issues for specific projects
if (projectIds.length > 0) {
  const projectIssues = await issuesApi.listOrgIssues({
    version: "2024-11-05",
    orgId: "your-org-id",
    scanItemId: projectIds[0],
    scanItemType: "project" as any,
    status: ["open"],
  });
}

MCP服务器使用情况

MCP服务器为AI助手提供对Snyk安全数据的访问。在您的AI助手中配置它(例如,Claude Desktop):

启动MCP服务器

# Development mode (with ts-node)
npm run mcp-server

# Production mode (requires build first)
npm run build
npm run mcp-server:build

测试MCP服务器

使用提供的测试脚本在没有Claude Desktop的情况下测试MCP服务器:

列出所有可用工具:

npx ts-node examples/list-tools.ts

这将显示Snyk CLI工具和REST API工具。

测试REST API工具:

# Build the project first
npm run build

# Test snyk_rest_get_issues tool
npx ts-node examples/snyk-rest-get-issues.ts [project-id] [status] [severity]

# Examples:
npx ts-node examples/snyk-rest-get-issues.ts                                          # All open issues
npx ts-node examples/snyk-rest-get-issues.ts 12345678-1234-1234-1234-123456789012    # Open issues for specific project
npx ts-node examples/snyk-rest-get-issues.ts 12345678-1234-1234-1234-123456789012 resolved  # Resolved issues for project
npx ts-node examples/snyk-rest-get-issues.ts 12345678-1234-1234-1234-123456789012 open critical  # Critical open issues
npx ts-node examples/snyk-rest-get-issues.ts "" resolved high                         # All resolved high severity issues

snyk-rest-get-issues.ts 脚本接受与 snyk_rest_get_issues MCP工具:

  • projectId -UUID格式的项目ID(可选)
  • status -问题状态:打开、已解决、已忽略(可选,默认:打开)
  • severity -问题严重程度:低、中、高、严重(可选)

测试snyk_rest_get_oissue工具:

# Get detailed information about a specific issue
npx ts-node examples/snyk-rest-get-issue.ts 

# Example:
npx ts-node examples/snyk-rest-get-issue.ts 12345678-1234-1234-1234-123456789012

snyk-rest-get-issue.ts 脚本要求:

  • issue_id -要检索的问题的唯一标识符(UUID)(必需)

Claude桌面配置

添加到您的Claude Desktop配置文件(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):

选项1:将npx与ts节点一起使用(建议用于开发)

{
  "mcpServers": {
    "snyk-rest-api": {
      "command": "npx",
      "args": [
        "-y",
        "ts-node",
        "/absolute/path/to/snyk-mcp-rest/src/mcp-server.ts"
      ],
      "env": {
        "SNYK_API_KEY": "your-snyk-api-key-here",
        "SNYK_ORG_ID": "your-org-id-uuid-here",
        "SNYK_ORG_SLUG": "your-org-slug-here"
      }
    }
  }
}

选项2:使用编译的JavaScript(建议用于生产)

首先构建项目 npm run build那么:

{
  "mcpServers": {
    "snyk-rest-api": {
      "command": "node",
      "args": ["/absolute/path/to/snyk-mcp-rest/dist/mcp-server.js"],
      "env": {
        "SNYK_API_KEY": "your-snyk-api-key-here",
        "SNYK_ORG_ID": "your-org-id-uuid-here",
        "SNYK_ORG_SLUG": "your-org-slug-here"
      }
    }
  }
}

重要:替换 /absolute/path/to/snyk-mcp-rest 使用项目目录的实际绝对路径(例如。, /Users/yourname/Projects/snyk-mcp-rest).

可用的MCP工具

MCP服务器提供两种类型的工具:

Snyk CLI工具

所有本机Snyk CLI命令都可以作为MCP工具使用 snyk_ 前缀。有关可用CLI工具及其参数的完整列表,请运行:

npx ts-node examples/list-tools.ts

关键CLI工具包括:

  • snyk_test -开源漏洞测试项目
  • snyk_code_test -静态应用程序安全测试(SAST)
  • snyk_container_test -容器和Kubernetes安全扫描
  • snyk_iac_test -基础设施即代码扫描
  • snyk_monitor -快照并持续监控项目
  • snyk_sbom_test -生成和测试软件物料清单

请参阅 Snyk CLI官方文档 了解每个CLI工具的详细用法。

REST API工具

使用Snyk REST API构建的用于查询和管理的自定义工具:

  • snyk_rest_find_项目 -使用Snyk REST API按名称搜索Snyk项目

- 参数: - query (必填):搜索查询字符串以匹配项目名称 - 配置(通过环境变量): - SNYK_ORG_ID (必填):Snyk组织ID(UUID) - 返回:包含ID和名称的项目列表

  • snyk_rest_get_问题 -使用Snyk REST API检索组织和项目的Snyk安全问题

- SNYK_ORG_ID (必填):Snyk组织ID(UUID) - SNYK_ORG_SLUG (必填):URL的组织符号 - 返回:直接Snyk URL的格式化问题 repository 字段将是 null 除非由专门的工具明确提供,例如 snyk_rest_get_repo_issues

备注:The projectId 参数必须采用UUID格式。要查找存储库的项目ID,请执行以下操作:

  const projectsApi = new ProjectsApi(config);
  const projects = await projectsApi.listOrgProjects({
    version: "2024-11-05",
    orgId: "your-org-id",
    names: ["owner/my-repo"],
  });
  const projectId = projects.data.data?.[0]?.id;

可用API

客户端提供对所有Snyk REST API端点的访问:

  • 访问请求API -管理访问请求
  • AppsApi -Snyk应用程序管理
  • AuditLogsApi -审核日志访问
  • CloudApi -云安全操作
  • 容器 -集装箱图像扫描
  • CustomBaseImagesApi -自定义基础图像管理
  • 查找Api -安全调查结果
  • GroupsApi / GroupApi -集团管理
  • Iac设置API -基础架构即代码设置
  • 邀请函Api -用户邀请
  • 问题Api -安全问题管理
  • OrgsApi 的 -组织运作
  • 政策Api -政策管理
  • 项目API -项目运营
  • SbomApi -软件物料清单
  • 服务账户API -服务帐户管理
  • SlackApi / Slack设置API -Slack集成
  • TargetsApi -目标管理
  • 租户 -租户运营
  • TestsApi -测试操作
  • 用户API -用户管理

…还有更多!看 src/generated/api/ 查看完整列表。

发展

运行测试

该项目包括全面的测试覆盖范围:

# Run all tests once
npm test

# Watch mode (auto-rerun on changes)
npm run test:watch

# Coverage report
npm run test:coverage

# UI mode (interactive test runner)
npm run test:ui

测试套件

  • API客户端测试 (tests/api.test.ts)-配置、API实例化、导出(18个测试)
  • MCP服务器测试 (tests/mcp-server.test.ts)-问题检索、过滤、分页、项目名称获取(9个测试)
  • MCP服务器逻辑测试 (tests/mcp-server-logic.test.ts)-处理程序函数、工具模式(21个测试)
  • MCP业务逻辑测试 (tests/mcp-business-logic.test.ts)-问题格式、响应处理(25次测试)
  • 集成测试 (tests/integration.test.ts)-多API工作流、分页处理(7项测试)
  • 错误处理测试 (tests/error-handling.test.ts)HTTP错误、网络故障、验证(8次测试)
  • 指数导出测试 (tests/index.test.ts)-模块导出和类型定义(14项测试)

检验统计量:7个测试文件中的102个测试用例,涵盖核心功能、错误场景和边缘案例。

覆盖:93%+总体代码覆盖率(100% src/index.ts93%以上 src/mcp-server.ts).生成的代码(src/generated/**)根据项目政策,不在保险范围内。

项目结构

src/
├── generated/          # Auto-generated (DO NOT EDIT)
│   ├── api/           # API classes
│   ├── models/        # TypeScript interfaces
│   └── configuration.ts, base.ts, common.ts
├── index.ts           # Main entry point - API client exports
├── mcp-server.ts      # MCP server (business logic + startup script)
└── tools/             # MCP tool implementations
    ├── index.ts       # Tool registry
    ├── types.ts       # Tool type definitions
    ├── utils.ts       # Shared utilities
    ├── snyk-rest-get-issues.ts  # snyk_rest_get_issues tool
    ├── snyk-rest-get-issue.ts   # snyk_rest_get_issue tool
    ├── snyk-rest-get-repo-issues.ts  # snyk_rest_get_repo_issues tool
    └── snyk-rest-find-projects.ts    # snyk_rest_find_projects tool
examples/
├── basic-usage.ts     # Basic API client usage example
├── snyk-rest-get-issues.ts      # MCP server testing script (snyk_rest_get_issues tool)
├── snyk-rest-get-issue.ts       # MCP server testing script (snyk_rest_get_issue tool)
├── snyk-rest-get-repo-issues.ts # MCP server testing script (snyk_rest_get_repo_issues tool)
└── snyk-rest-find-projects.ts   # MCP server testing script (snyk_rest_find_projects tool)
tests/
├── api.test.ts                    # API client tests (18 tests)
├── mcp-server.test.ts             # MCP server integration tests (9 tests)
├── mcp-server-logic.test.ts       # MCP handler functions (21 tests)
├── mcp-business-logic.test.ts     # Issue formatting logic (25 tests)
├── integration.test.ts            # Multi-API workflows (7 tests)
├── error-handling.test.ts         # Error scenarios (8 tests)
└── index.test.ts                  # Module exports (14 tests)
res/
└── v1-api-spec.yaml  # OpenAPI specification

重要:从不在中编辑文件 src/generated/ -它们是由OpenAPI规范自动生成的。

错误处理

客户端使用Axios进行HTTP操作。正确处理错误:

import { AxiosError } from "axios";

try {
  const response = await issuesApi.listOrgIssues({
    version: "2024-11-05",
    orgId: "your-org-id",
  });
} catch (error) {
  if (error instanceof AxiosError) {
    console.error("API Error:", error.response?.status);
    console.error("Details:", error.response?.data);
  } else {
    console.error("Unexpected error:", error);
  }
}

环境变量

创建一个 .env 项目根目录中的文件:

SNYK_API_KEY=your-api-key-here

对于MCP服务器,使用以下环境变量:

  • SNYK_API_KEY (必需)-您的Snyk API代币(从 )
  • SNYK_ORG_ID (必填)-您的Snyk组织ID(UUID格式)
  • SNYK_ORG_SLUG (必填)-您的Snyk组织网址(例如。, my-org)
  • SNYK_CLI_PROXY_ENABLED (可选)-启用/禁用Snyk CLI工具代理(默认值: true)

- 吃起来 false, 0,或 no 禁用Snyk CLI工具并仅使用REST API工具 - 禁用时,仅使用自定义REST API工具(snyk_rest_*)将可用 - 启用时(默认),Snyk CLI工具和REST API工具都可用

您可以在Snyk web UI的组织设置下找到您的组织ID和slug。

示例:禁用Snyk CLI代理

如果只想使用REST API工具并禁用Snyk CLI代理,请将其添加到 .env 文件:

SNYK_CLI_PROXY_ENABLED=false

或者在Claude Desktop配置中设置它:

{
  "mcpServers": {
    "snyk-rest-api": {
      "command": "node",
      "args": ["/absolute/path/to/snyk-mcp-rest/dist/mcp-server.js"],
      "env": {
        "SNYK_API_KEY": "your-snyk-api-key-here",
        "SNYK_ORG_ID": "your-org-id-uuid-here",
        "SNYK_ORG_SLUG": "your-org-slug-here",
        "SNYK_CLI_PROXY_ENABLED": "false"
      }
    }
  }
}

版本信息

  • API版本:使用Snyk REST API版本 2024-11-05 (所有API调用都需要 version 参数)
  • OpenAPI规范:生成自 v1-api-spec.yaml
  • TypeScript: 5.9+
  • Node.js:兼容现代Node.js版本(ES2020目标)

配置

代码生成是通过以下方式配置的 openapitools.json:

  • 模板: typescript-axios
  • 单请求参数:已启用
  • 独立模型和API:已启用
  • 输出: ./src/generated

许可证

麻省理工学院

仓库

贡献

  1. 对自定义代码进行更改(不 src/generated/)
  2. 如果需要,更新OpenAPI规范或生成器配置
  3. npm test 验证更改
  4. 如果添加新功能,请更新此README

目录标签

目录标签

安全漏洞检测TypeScriptClaude安全扫描本地部署API客户端AI集成

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Node.js

部署方式(deploymentType,部署类型)

remote-capable

来源包(packageName,安装包名)

ts-node

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiononeremote-capable

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP