1Passwordで管理しているAPIトークンをDockerのMCPサーバーの設定に渡す

ClineやCursorなどのAIエージェントでMCPサーバーを利用する際、設定ファイルにMCPサーバーのAPIトークンを記載する必要がある。
ファイルに認証情報を書くことはできるだけ避けたいので、1Passwordから読み込む形式にする。

GitHubの公式MCPサーバーなどは、Dockerイメージで提供されるものも多い。 Dockerイメージで提供されるMCPサーバーに1Passwordで管理するAPIトークンを渡すには、環境変数ファイルを介する方法がある。
このページでは、GitHub公式のMCPサーバーを例に設定方法を説明する。

動作を確認したバージョン

  • 1Password CLI:v2.28.0
  • Docker v27.4.0

前提

  • 1Passwordで、MCPサーバーに渡したいAPIトークンを管理していること
  • AIエージェントでMCPサーバーの初期設定が終わっていること
  • Dockerを起動していること

.env.localファイルの設定

  1. ワークスペース内に、次の内容で.env.localファイルを作成する。

    .env.local
    GITHUB_PERSONAL_ACCESS_TOKEN='op://VAULT_NAME/ITEM_NAME/FIELD_NAME'
    
    # 例
    # GITHUB_PERSONAL_ACCESS_TOKEN='op://Private/GitHub PAT Private/token'
    

    次の値は、自分の1Passowordで保存している内容に置き換える。

    • VAULT_NAME:1Passwordの保管庫名
      保管庫名は、op vault listコマンドで確認できる。
    • ITEM_NAME:1Passwordのアイテム名
    • FIELD_NAME:1Passwordのフィールド名

    1Passwordで保存したアイテムの画面

  2. .env.localファイルに、読み取り専用の権限を付与する。

    chmod 755 .env.local
    

MCPサーバーの設定ファイルへの追記

MCPサーバーの設定ファイルに次の内容を追記する。
op runコマンドは、「op://」で始まる値を、1Passwordで管理している値に置き換えた状態で、アプリケーションのプロセスに環境変数を渡すコマンドである。
下記の場合は、GITHUB_PERSONAL_ACCESS_TOKENに値がセットされた状態で、docker runが実行される。

なお、--env-fileに指定するパスは、.env.localまでの絶対パスにする。

cline_mcp_settings.json
{
  "mcpServers": {
    "github": {
      "command": "op",
      "args": [
        "run",
        "--env-file=/your-workspace-path/.env.local",
        "--",
        "docker",
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ]
    }
  }
}

設定ファイルを保存すると、MCPサーバーへの接続確認が行われる。
エラーなしに接続できれば、設定が完了している。

Docker側の確認

起動しているDockerコンテナの中で、環境変数が設定されていることも確認できる。
Dockerの画面