Secure Dependencies with Immutable Pinned Digests
Pinner MCP pins Docker base images and GitHub Actions to immutable digests via GitHub Copilot or Cursor prompts.
1.0.0Add to Favorites
Why it matters
Enhance your software supply chain security by pinning third-party dependencies like Docker images and GitHub Actions to immutable digests or commit hashes. This prevents malicious code injection and ensures the integrity of your build process.
Outcomes
What it gets done
Pin Docker base images to immutable digests.
Pin GitHub Actions to specific commit hashes.
Update pinned dependency versions automatically.
Prevent supply chain attacks on your projects.
Source
Get it from source
Spark does not host a copy of it.
Open sourceReports
Agent outcome reports
No reports yet
Capabilities
Tools your agent gets
Pin Docker base images to immutable digests for supply chain security.
Pin GitHub Actions to their commit hashes to prevent supply chain attacks.
Update pinned versions of dependencies to newer immutable digests or hashes.
Overview
Pinner MCP Server
Pinner MCP gives an AI assistant the ability to pin GitHub Actions and Docker base images to immutable commit hashes or digests through natural-language prompts. Use it when an AI assistant needs to pin or update GitHub Actions and Docker base image references to immutable digests.
What it does
Pinner MCP is an MCP server that helps pin third-party dependencies to immutable digests, guarding against a dependency being silently swapped out after you start relying on it. It supports two dependency types: Docker base images and GitHub Actions, both pinned by commit hash or digest instead of a mutable tag.
When to use - and when NOT to
Use it when you want an AI assistant in GitHub Copilot Chat or Cursor Composer to pin your GitHub Actions to their commit hashes, pin container base images to their digests, or update already-pinned versions, instead of manually looking up and editing each hash by hand. It was originally built to protect the vet project from malicious GitHub Actions, so it's aimed at supply-chain hardening for CI and container configs specifically, not general dependency management across arbitrary package ecosystems.
Capabilities
Through natural-language prompts like "Pin GitHub Actions to their commit hash" or "Pin container base images to digests," the server locates the relevant dependency references in your workspace and pins them to immutable identifiers. A companion prompt, "Update pinned versions of container base images," refreshes already-pinned versions when you want to move to a newer digest deliberately, rather than drifting to whatever a mutable tag currently points to. The underlying server is built on mcp-go, a library for building MCP servers in Go.
How to install
Run it as a container over stdio transport:
docker run -it --rm ghcr.io/safedep/pinner-mcp:latest
For VS Code, add it to .vscode/mcp.json with the GitHub Copilot extension installed:
{
"servers": {
"pinner-mcp": {
"type": "stdio",
"command": "docker",
"args": ["run", "--rm", "-i", "ghcr.io/safedep/pinner-mcp:latest"]
}
}
}
For Cursor, add the equivalent block to .cursor/mcp.json and enable the MCP server in settings. Updates are pushed automatically to the latest tag on GitHub Container Registry, but you must manually pull the new image, docker pull ghcr.io/safedep/pinner-mcp:latest, to pick them up. For local development, build the image yourself with docker build -t pinner-mcp:local .; the repository's own VS Code and Cursor config files are already set up to use that local image for testing unpublished changes.
Who it's for
Teams hardening their CI and container supply chain who want an AI assistant to pin GitHub Actions and Docker base images to immutable digests directly, instead of tracking mutable tags. Built and maintained by SafeDep Engineering.
Source README
Pinner MCP 📍
A Model Context Protocol (MCP) server that can help pin 3rd party dependencies to immutable digests.
Supported dependency types include:
- Docker base images
- GitHub Actions
📦 Usage
Run as a container with stdio transport.
docker run -it --rm ghcr.io/safedep/pinner-mcp:latest
💻 VS Code
Add the following to your .vscode/mcp.json file in your workspace. You must have the GitHub Copilot extension installed and enabled.
{
"servers": {
"pinner-mcp": {
"type": "stdio",
"command": "docker",
"args": ["run", "--rm", "-i", "ghcr.io/safedep/pinner-mcp:latest"]
}
}
}
Use GitHub Copilot Chat with prompts like:
Pin GitHub Actions to their commit hash
Pin container base images to digests
To update pinned versions, you can use a prompt like the following:
Update pinned versions of container base images
💻 Cursor
Add the following to your .cursor/mcp.json file. You must enable
the MCP server in the settings. Learn more here.
{
"mcpServers": {
"pinner-mcp-stdio-server": {
"command": "docker",
"args": ["run", "--rm", "-i", "ghcr.io/safedep/pinner-mcp:latest"]
}
}
}
Use a Composer prompt like the following to pin a specific commit hash.
Pin GitHub Actions to their commit hash
Pin container base images to digests
To update pinned versions, you can use a prompt like the following.
Update pinned versions of container base images
🔄 Tool Updates
Updates for the MCP server are automatically pushed to the latest tag on
GitHub Container Registry. You
must manually update your local container image to the latest version.
docker pull ghcr.io/safedep/pinner-mcp:latest
🔧 Development
Building Locally
For local development on this project, build the container image locally:
docker build -t pinner-mcp:local .
The .vscode/mcp.json and .cursor/mcp.json files in this repository are configured to use the local image (pinner-mcp:local) for development and testing of unpublished changes.
After building locally, you can use VS Code or Cursor with GitHub Copilot as described in the usage sections above.
📚 References
- Originally built to protect vet from malicious GitHub Actions
- mcp-go is a great library for building MCP servers
- Built and maintained by SafeDep Engineering
FAQ
Common questions
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.