使用说明
项目简介
Pinner MCP 是一个 Model Context Protocol (MCP) 服务器,它扩展了 LLM IDE (如 Cursor) 的能力,专门用于解决软件开发中的依赖管理和安全问题。该服务器的核心功能是帮助开发者将项目依赖的第三方组件(目前主要支持 Docker 镜像和 GitHub Actions)的版本锁定到具体的、不可变的摘要 (digest) 或 commit SHA 值,从而提高软件供应链的安全性,防止因依赖项版本更新而引入的潜在风险。
主要功能点
- Docker 镜像版本锁定: 可以将 Docker 镜像的版本(tag)解析为内容摘要 (digest),确保每次构建都使用完全一致的镜像内容,避免因 tag 浮动带来的不确定性。
- GitHub Actions 版本锁定: 可以将 GitHub Actions 的版本(branch 或 tag)解析为具体的 commit SHA,确保 workflow 始终使用指定版本的 Action 代码,提高构建的稳定性和可追溯性。
- 版本更新辅助: 提供工具列出 Docker 镜像的最新版本,辅助开发者安全地更新锁定的依赖版本。
安装步骤
Pinner MCP 服务器以 Docker 容器的形式发布和运行,安装非常简单:
- 安装 Docker: 确保你的机器上已经安装了 Docker。
- 运行 Docker 容器: 使用以下命令即可运行 Pinner MCP 服务器:
这个命令会下载并启动 Pinner MCP 服务器容器,服务器默认使用 'stdio' (标准输入输出) 作为传输协议,等待 MCP 客户端连接。docker run -it --rm ghcr.io/safedep/pinner-mcp:latest
服务器配置
要让 MCP 客户端 (例如 Cursor) 连接到 Pinner MCP 服务器,你需要配置客户端的 MCP 服务器设置。以 Cursor 为例,你需要编辑 '.cursor/mcp.json' 文件,添加如下配置:
{ "mcpServers": { "pinner-mcp-stdio-server": { // 服务器名称,可以自定义 "command": "docker", // 启动服务器的命令,这里是 docker "args": [ // 命令参数 "run", // docker run 子命令 "--rm", // 容器退出后自动删除 "-i", // 保持标准输入打开,即使没有连接 "ghcr.io/safedep/pinner-mcp:latest" // Docker 镜像名称 ] } } }
配置说明:
- '"pinner-mcp-stdio-server"': 是你为这个 MCP 服务器连接自定义的名称,在 Cursor 设置中会用到。
- '"command": "docker"' 和 '"args": [...]': 指定了启动 Pinner MCP 服务器的完整命令。这里使用 'docker run' 启动容器镜像 'ghcr.io/safedep/pinner-mcp:latest'。 '-i' 参数是必须的,用于保持标准输入流的连接,使 MCP 客户端能与服务器通信。
基本使用方法
配置完成后,在 Cursor 中启用 MCP 服务器,你就可以通过 Prompt 来调用 Pinner MCP 服务器提供的工具了。
示例 Prompt:
-
锁定 GitHub Actions 版本:
Pin GitHub Actions to their commit hash在 Prompt 中可以使用自然语言指令,Pinner MCP 服务器会根据 Prompt 内容,调用相应的工具来解析 GitHub Actions 的引用 (例如分支名或 tag) 并返回对应的 commit SHA 值,你可以将这个 SHA 值更新到你的 workflow 文件中。
-
锁定 Docker 镜像版本:
Pin container base images to digests类似于 GitHub Actions,这个 Prompt 可以指示 Pinner MCP 服务器解析 Docker 镜像的 tag,并返回其摘要 (digest),用于锁定 Dockerfile 中的基础镜像版本。
-
更新 Docker 镜像版本:
Update pinned versions of container base images这个 Prompt 可以指示 Pinner MCP 服务器列出 Docker 镜像的最新版本 (tags),帮助你了解有哪些新版本可用,以便安全地更新你锁定的镜像版本。
使用流程:
- 在 Cursor 等 MCP 客户端中配置并启用 Pinner MCP 服务器。
- 在编辑器中使用自然语言 Prompt,描述你的需求,例如 "Pin Docker image alpine:latest"。
- Pinner MCP 服务器接收到请求后,会调用相应的工具 (例如 'docker_resolve_image_to_digest') 进行处理。
- 服务器将处理结果 (例如 Docker 镜像的 digest 值) 返回给 MCP 客户端。
- 你可以将返回的结果应用到你的代码或配置文件中,例如更新 Dockerfile 或 GitHub Actions workflow 文件。
工具更新
Pinner MCP 服务器的更新会通过 GitHub Container Registry 自动推送,你需要手动更新本地 Docker 镜像以获取最新版本:
docker pull ghcr.io/safedep/pinner-mcp:latest
信息
分类
开发者工具