项目简介
Snyk Language Server (snyk-ls) 是一个强大的语言服务器,它遵循 Language Server Protocol (LSP),并集成了 Snyk Open Source, Snyk Infrastructure as Code 和 Snyk Code 的功能。除了标准的 LSP 功能外,snyk-ls 还扩展支持 Model Context Protocol (MCP) 服务器功能,允许 LLM 客户端通过标准化的方式获取上下文信息和调用外部工具。
主要功能点
- LSP 核心功能:
- 提供代码诊断信息 (Diagnostics)
- 支持悬停提示 (Hover)
- 代码 Lens (Code Lens)
- 代码 Actions (Code Actions)
- 进度报告 (Progress Reporting)
- 通知和日志消息 (Notifications & Log messages)
- 代码自动修复 (Code Fix)
- MCP 服务器功能:
- 通过 '$/snyk.mcpServerURL' 通知客户端 MCP 服务器的监听地址。
- 监听 '/messages' 路径的 POST 请求,用于接收客户端消息。
- 支持 '/sse' 路径的 SSE 订阅,用于服务端事件推送。
- 安全检测:
- 集成 Snyk Open Source, Snyk Infrastructure as Code 和 Snyk Code,提供全面的安全漏洞和代码质量检测。
- 支持多种漏洞类型,包括安全漏洞、许可证问题、依赖漏洞、基础设施配置问题等。
- 身份验证:
- 支持 OAuth2 和 Token 身份验证。
- 必要时自动打开网页进行身份验证。
- CLI 管理:
- 自动下载和管理 Snyk CLI。
- 可配置 Snyk CLI 路径。
安装步骤
下载预编译版本
- 访问 Releases 页面 下载最新版本的 'snyk-ls' 预编译二进制文件。
- 根据你的操作系统选择合适的 zip 文件 (Windows, macOS, Linux)。
- 解压 zip 文件到你希望安装 'snyk-ls' 的目录。
从源码编译 (可选)
- 确保已安装 Go 1.20 或更高版本,并配置好 'GOPATH' 和 'GOROOT' 环境变量。
- 克隆仓库到本地:'git clone https://github.com/snyk/snyk-ls.git'
- 进入仓库根目录:'cd snyk-ls'
- 下载依赖:'go get ./...'
- 构建并安装:'make build && make install'
- 编译后的 'snyk-ls' 二进制文件将被安装到 '$GOPATH/bin' 或 '$GOBIN' 目录。
服务器配置 (MCP 客户端配置)
MCP 客户端需要配置以下信息以连接到 snyk-ls MCP 服务器。以下是一个 JSON 格式的配置示例,适用于 MCP 客户端配置:
{ "serverName": "snyk-ls MCP Server", "command": "snyk-ls", "args": [], "protocol": "json-rpc", "transport": "http+sse", "url": "通知的 $/snyk.mcpServerURL 的值", "messagePath": "/messages", "ssePath": "/sse" }
配置参数说明:
- 'serverName': MCP 服务器的名称,可以自定义,例如 "Snyk LSP MCP Server"。
- 'command': 启动 snyk-ls LSP 服务器的命令,通常为 'snyk-ls'(或根据你的安装路径调整)。
- 'args': 启动命令的参数,根据 snyk-ls 的命令行参数进行配置,例如可以指定日志级别 '-l debug'。通常情况下,基础连接不需要额外的参数。
- 'protocol': 通信协议,固定为 '"json-rpc"'。
- 'transport': 传输协议,对于 snyk-ls MCP 服务器,应配置为 '"http+sse"',表示使用 HTTP POST 进行请求,SSE 用于服务端事件推送。
- 'url': 重要: 此处需要配置为 snyk-ls LSP 服务器通过 '$/snyk.mcpServerURL' 通知客户端的实际 URL 地址。客户端需要监听此通知以动态获取服务器地址。在未收到通知前,请勿配置固定值。
- 'messagePath': MCP 消息请求路径,固定为 '"/messages"'。
- 'ssePath': SSE 事件订阅路径,固定为 '"/sse"'。
注意:
- 'url' 字段的值需要在 LSP 客户端连接到 snyk-ls LSP 服务器后,接收到 '$/snyk.mcpServerURL' 通知才能获取并配置。
- MCP 客户端需要实现监听 '$/snyk.mcpServerURL' 通知的机制,以动态获取 snyk-ls MCP 服务器的地址。
基本使用方法
- 启动 snyk-ls LSP 服务器: 根据安装步骤启动 'snyk-ls' 语言服务器。
- 配置 MCP 客户端: 根据 "服务器配置" 章节,配置 MCP 客户端,务必动态获取并配置 'url' 参数。
- 连接 MCP 服务器: 在 MCP 客户端中,连接配置好的 MCP 服务器。
- 发送 MCP 请求: 使用 MCP 客户端按照 MCP 协议规范,向 snyk-ls MCP 服务器发送请求,例如读取资源、调用工具、获取 Prompt 模板等。
- 接收 MCP 响应和通知: MCP 客户端接收来自 snyk-ls MCP 服务器的 JSON-RPC 响应和 SSE 通知,根据业务逻辑进行处理。
示例 (MCP 客户端发送请求):
{ "jsonrpc": "2.0", "method": "mcp.listResources", "params": {}, "id": 1 }
请参考 Model Context Protocol (MCP) 协议文档和 snyk-ls 仓库的 smoke test 示例,了解更详细的 MCP 客户端使用方法。
信息
分类
开发者工具