プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

Actionpin

作者:CloudCorpRecordsバージョン 0.1.8i★ –iパソコンで動く
レジストリ名io.github.CloudCorpRecords/actionpin

インストール

概要

作者による説明(英語の原文)

GitHub Actions supply-chain hardener: audit workflows for unpinned actions and build a SHA pin plan.

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: 開発者ツール

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • レジストリには、入力が必要なキーは載っていません。

必要なもの

  • npmNode.jsのインストール(npxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

{
  "mcpServers": {
    "actionpin": {
      "command": "npx",
      "args": [
        "-y",
        "@reneturcios/actionpin",
        "mcp"
      ]
    }
  }
}

ターミナルでこれを実行します

claude mcp add actionpin -- npx -y @reneturcios/actionpin mcp

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "actionpin": {
      "command": "npx",
      "args": [
        "-y",
        "@reneturcios/actionpin",
        "mcp"
      ]
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "actionpin": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@reneturcios/actionpin",
        "mcp"
      ]
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月6日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント CloudCorpRecords で確認済みです

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

開発者ツールのほかのサーバーとの比較i

  • このカテゴリのほかの1385件のうち0%よりスターが多い
  • このカテゴリのほかの1385件のうち80%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの1385件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

Actionpinは安全ですか?

当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(0.1.8)がレジストリに届いたのは11 日前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.js, Dockerも必要です。

代わりに使えるものは?

同じカテゴリには:GitHub, Desktop Commander, Cloudflare MCP

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

GitHub

作者:github

Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

パソコンでもクラウドでも★ 34,245MIT3 日前更新
インストール

Desktop Commander

作者:wonderwhy-er

MCP server for terminal commands, file operations, and process management

パソコンで動く★ 10,225MIT15 日前更新
インストール

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

actionpin

A version tag is a promise anyone can break. A commit SHA is not.

Quickstart

npx @reneturcios/actionpin audit

GitHub Actions are executable supply chain. When a workflow says uses: actions/checkout@v4, that tag can move. When a third-party action tag moves to a compromised commit, every workflow that trusts the tag runs the new code with that workflow's tokens. Pinning to a full 40-character commit SHA is the standard defense, and almost nobody does it consistently, because doing it by hand across every workflow is tedious and easy to get wrong.

actionpin audits every workflow in a repo, reports exactly which actions are pinned and which are not, and can rewrite the unpinned ones to SHAs for you, keeping the original tag as a comment so the pin stays readable.

Why this exists

GitHub Actions are the second largest confirmed open source supply-chain attack surface of the last year, behind only npm. Maintainer accounts and action tags have been hijacked before, and a mutable tag means the code your CI runs today is not guaranteed to be the code you reviewed. The fix is known and boring: pin to a SHA. actionpin makes the boring fix one command, and makes the audit callable by agents through MCP so it can run inside contribution and release workflows, not just by hand.

What it checks

For every uses: line in .github/workflows/*.yml and *.yaml:

classificationmeaning
PINNEDRef is a full 40-character commit SHA (or a full sha256 or sha512 content digest for a container image)
MUTABLERef is a version tag such as v4 or v4.2.1. The tag can move.
BRANCHRef is a branch such as main, master, or HEAD. It moves by design.
LOCALA local path such as ./local/action. Never rewritten.

Owner types: official for actions owned by actions or github, third-party for everyone else, docker for docker:// container actions, and local for local paths.

Verdict rules:

  • PINNED: every non-local action is pinned to a full SHA. Exit code 0.
  • EXPOSED: at least one third-party or container action uses a mutable tag or a branch. Exit code 1.
  • PARTIAL: only official actions are unpinned. Exit code 1.
  • Usage errors exit with code 2.

Fix mode resolves a tag or branch to its commit SHA through the GitHub API and rewrites the line to owner/repo@ # , preserving indentation and all other content. Files are edited line-wise; YAML is never parsed and re-emitted, so formatting survives. If a ref cannot be resolved, its line is left unchanged and the failure is reported. Docker image refs are reported but not rewritten; pin those by digest.

Usage

CLI
# Audit the current repo

npx @reneturcios/actionpin audit

Audit another path, machine readable

npx @reneturcios/actionpin audit ~/src/my-repo --json

Audit every repo checkout under an org root and report pin drift

(the same action used at different refs in different repos)

npx @reneturcios/actionpin org ~/src/my-org --json

Preview the pinning plan without writing

npx @reneturcios/actionpin fix --dry-run

Pin everything resolvable, in place

npx @reneturcios/actionpin fix

Example output:

actionpin audit .: EXPOSED

workflows: 2, actions: 6, pinned: 1, mutable: 4, branch: 1, local: 0 [PINNED] .github/workflows/ci.yml:12 actions/checkout@0123456789abcdef0123456789abcdef01234567 (official) [MUTABLE] .github/workflows/ci.yml:13 actions/setup-node@v4 (official) [MUTABLE] .github/workflows/publish.yml:20 docker/build-push-action@v6 (third-party) EXPOSED: at least one third-party or container action uses a mutable tag or branch ref.

Set GITHUB_TOKEN for the higher authenticated GitHub API rate limit during fix mode. Auditing needs no credentials and no network.

MCP server

Add to your MCP client config:

{

"mcpServers": { "actionpin": { "command": "npx", "args": ["-y", "@reneturcios/actionpin", "mcp"] } } }

Tools:

  • audit_workflows: audit a repo path and return every action with its classification, owner type, file, and line, plus the verdict.
  • pin_plan: return the full SHA pinning plan for a path without writing any files.
Docker
docker run -i ghcr.io/cloudcorprecords/actionpin mcp

docker run --rm -v "$PWD:/work" -w /work ghcr.io/cloudcorprecords/actionpin audit .

Limits (pinned by the hardening battery)

These behaviors are deliberate, tested, and stated plainly so a green report is never misread:

  • Scope is workflow files plus in-repo composite actions. A directory audit scans .github/workflows/*.yml and *.yaml, and also the action definitions that live inside the scanned repo: the root-level action.yml or action.yaml (the scanned repo's own published action definition, scanned whether or not a workflow references it, which is the normal shape for a repo that ships an action), every action.yml and action.yaml under .github/actions/, plus any local action directory a workflow references with a ./ uses path. Their internal steps are inventoried and classified like workflow steps, flagged as composite action refs, and drive the verdict the same way. A root action whose steps reference the repo's own action (via ./ or via its published name) is scanned exactly once; self-reference never recurses or double counts. The report lists how many composite files were scanned, and names any action files found elsewhere in the repo that were not scanned (not the root action file, outside .github/actions, and not referenced by a workflow), so coverage is never implied beyond what was audited. Passing an action.yml file path directly also parses it like any other file. Job-level uses: lines (reusable workflow calls) are in scope and are audited and pinned like step-level ones.
  • A local path with a malformed prefix is local, and the typo stays visible. A uses value such as $/.github/actions/issues-helper (a stray character where the dot of the ./ prefix belongs, shipped by real repos) names no remote repository, so it is classified LOCAL and is never resolved against the GitHub API in fix mode. The finding carries a note that the prefix is not a valid remote reference and looks like a local path typo, because the spelling is a real defect in the target repo even though it is not a pinning exposure.
  • Dynamic values are skipped, not guessed. A uses: value that contains a GitHub expression (${{ matrix.action }}, actions/checkout@${{ inputs.ref }}) is decided at run time and cannot be classified statically. actionpin skips it entirely instead of inventing an action or a verdict for it. Audit the matrix or input values themselves if a workflow builds its actions dynamically.
  • Short SHAs never count as pinned. Only a full 40-character SHA (or a full sha256 or sha512 digest for docker:// images) is PINNED. A short SHA such as abc1234 is reported in the BRANCH bucket and fails the verdict, because a short prefix is not a stable pin.
  • Container tags never count as pinned. For docker:// images only a full content digest counts. A tag spelled as 40 hex characters is still a tag and can be re-pushed, and a truncated or non-hex digest is not a digest; both are MUTABLE.
  • YAML anchors and aliases are resolved within the file. GitHub Actions has supported them since September 2025. An anchored uses: value is classified by the value itself, an alias line (uses: *name, or a step alias - *name) inherits the anchored classification and is flagged viaAlias, and anchors must be defined before use in the same file, matching GitHub. Fix mode pins the anchor definition line and never rewrites an alias line.
  • Refs containing slashes (release/v1, feature/new-thing) are reported as BRANCH bucket moving refs. Fix mode resolves them through the git-ref API with the slash preserved.
  • Block and flow style are both inventoried. Parsing is line-wise so fix mode can preserve formatting, and a quote-aware flow scanner inventories uses: entries written in YAML flow style (for example steps: [{uses: 'actions/checkout@v4'}]), including several entries sharing one line, flow collections split across lines, and quoted (JSON-shaped) keys. Commented-out uses: lines are ignored, and a uses: word inside a quoted string or a run command invents no action. Fix mode pins a flow entry without adding a version comment on the shared line, because a comment would eat the rest of that line.
  • A file that cannot be fully parsed is reported, never silent. When a workflow or composite file carries a uses: key whose value cannot be extracted, the report names the file in unparsedWorkflows, carries a note saying it could not be fully parsed, and floors the verdict at PARTIAL, so the file never silently contributes zero actions to a PINNED verdict.
  • Docker refs are reported, never rewritten. Pin container images by digest yourself; fix mode leaves docker:// lines unchanged and says so in the plan.
  • Empty estates say so. When no workflows and no action definitions are found under the audited path, the report carries a plain note that nothing was audited. The verdict is computed over zero actions and is not an all-clear for that path. A repo whose only auditable surface is its root action definition is audited on that definition and carries no empty-estate note.
  • Missing or wrong-type targets are usage errors, never a verdict. A path that does not exist exits 2 with an error on stderr and no report, matching hookcheck and injectcheck, so CI wired to a mistyped path fails instead of going green on nothing. Passing a single file audits it only when it is a .yml or .yaml file; any other regular file (a package.json, a README) is a usage error exit 2, not a workflow. A target that is neither a file nor a directory is a usage error too.
  • Non-regular files are never opened. Discovery stats every candidate before opening it and skips anything that is not a regular file, so a FIFO (named pipe), socket, or device planted at a workflow or action file path cannot hang or block the audit; the regular files around it are audited normally.
  • Piped output is delivered whole, or the run fails. Reports are written through a flush-aware emit path, so a report of any size arrives complete through a pipe, the way agents, scripts, and CI consume it. If the reader closes the pipe before the report is delivered, actionpin exits 141 (the shell-visible equivalent of SIGPIPE) instead of reporting success for output nobody received. Fixed in 0.1.2 after Round 1 real-repo validation caught silent truncation at exactly 65,536 bytes with a success exit code.

The toolkit

actionpin is part of a family of small, single-purpose developer tools by the same author, all built the same way: one bin that serves a CLI and an MCP server, deterministic checks with evidence, no invented answers.

  • greenlight: pre-flight checks for open-source contributions: is this issue actually landable?
  • shipcheck: verify a release actually shipped across git, npm, the MCP Registry, and GHCR.
  • hookcheck: audit auto-exec hooks in a repo for persistence-style risks.

Development

npm install

npm run build npm test

Tests run on fixtures with an injected fetch function; no test touches the network.

#

冒頭だけを表示しています。続きはリポジトリで読めます

PopNxに聞く