最終更新:2026-11-12。Mac 版・Windows 版と、全部の AI に共通のルールの作り方はAI開発環境の作り方にまとめています。
はじめに
Ubuntu に5つの AI のコマンド(CLI)と作業アプリ Orca を入れ、共通ルールと MCP をそろえる手順です。何も入っていない Ubuntu 24.04 で、上から順に実行して確かめています。画面のあるパソコンでも、画面の無いサーバー(仮想マシン)でも使えます。
- 対象:Ubuntu 24.04(ほかの Debian 系でもほぼ同じ)。sudo ができる利用者で行う
- 用語:CLI = ターミナルで動かすコマンド版のアプリ。MCP = AI から外のサービス(Gmail・Obsidian など)を使うためのつなぎ口。PATH = コマンドを探す場所の一覧
- 入力例の
$は入力待ちの記号なので、$の後ろだけを入力する <…>の部分は自分の値に置き換える。Mac 版・Windows 版、共通 AGENTS.md の作り方は別のページ
動作を確かめた版(2026-11 時点)
| 種類 | 名前 | 版 | 入れ方 |
|---|---|---|---|
| 下準備 | Node.js | 26.13.1 | NodeSource の apt(LTS) |
| 下準備 | GitHub CLI(gh) | 2.103.3 | 公式の apt |
| 下準備 | uv | 0.13.7 | 公式のスクリプト |
| AI の CLI | Claude Code | 2.1.322 | 公式のスクリプト |
| AI の CLI | Codex | 0.167.2 | 公式のスクリプト |
| AI の CLI | Antigravity CLI(agy) | 1.5.6 | 公式のスクリプト |
| AI の CLI | Grok | 1.0.77 | 公式のスクリプト |
| AI の CLI | cursor-agent | 2026.11.11 | 公式のスクリプト |
| アプリ | Orca | 1.4.257 | 公式 GitHub の .deb |
| アプリ | Obsidian | 1.15.0 | 公式 GitHub の .deb |
| アプリ | VS Code | 1.146.0 | 公式の .deb |
| アプリ | Google Chrome | 157 | 公式の .deb |
- これより新しい版でも、手順は基本的に同じです。画面やコマンドが変わっていたら、公式の説明を優先してください
作業の順番
- 下準備(apt・Node.js・gh・uv)
- AI の CLI を入れてログイン
- アプリを入れる
- Vault を届け、共通ルール(AGENTS.md)を各 AI につなぐ
- MCP を各 AI に登録
- 動作確認
全体の構成

手順の流れ

手順1 下準備(約20分)
$ sudo apt-get update
$ sudo apt-get install -y git curl wget unzip jq ca-certificates gnupg build-essential
1-1 Node.js(NodeSource の LTS)
Ubuntu 24.04 の標準の nodejs は古い(18)ので、NodeSource の apt を使います。MCP の中には Node 22 以上が要るものがあります。
$ curl -fsSL https://deb.nodesource.com/setup_lts.x -o /tmp/nodesource_setup.sh
$ less /tmp/nodesource_setup.sh # 中身を確かめる(任意)
$ sudo -E bash /tmp/nodesource_setup.sh
$ sudo apt-get install -y nodejs
$ node --version
1-2 GitHub CLI(公式の apt)
$ sudo mkdir -p -m 755 /etc/apt/keyrings
$ wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg >/dev/null
$ sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list
$ sudo apt-get update && sudo apt-get install -y gh
1-3 uv(Python 製の MCP を動かす)
$ curl -LsSf https://astral.sh/uv/install.sh | sh
$ exec bash -l # PATH を読み直す
$ uv --version
- apt の更新で「名前を引けない(Temporary failure resolving)」と出たら、少し待ってやり直す
- SSH の鍵は
~/.ssh/に作り(ssh-keygen -t ed25519)、相手に渡すのは.pubだけ
手順2 AI の CLI を入れる(約20分)
5つの AI の CLI を入れ、それぞれに一度ログインします。使わない AI は飛ばして構いません。
| CLI | 入れるコマンド | ログイン | 使うアカウント |
|---|---|---|---|
| Claude Code | curl -fsSL https://claude.ai/install.sh | bash | claude を起動 → /login | claude.ai |
| Codex | curl -fsSL https://chatgpt.com/codex/install.sh | sh | codex login | ChatGPT |
| Antigravity CLI | curl -fsSL https://antigravity.google/cli/install.sh | bash | agy を起動 | |
| Grok | curl -fsSL https://x.ai/cli/install.sh | bash | grok login | X(xAI) |
| cursor-agent | curl https://cursor.com/install -fsS | bash | cursor-agent login | Cursor |
| GitHub CLI | 手順1 で済み | gh auth login | GitHub |
$ exec bash -l
$ claude --version; codex --version; agy --version; grok --version; cursor-agent --version
- 置き場所:Claude Code・Codex・agy・cursor-agent は
~/.local/bin、Grok は~/.grok/bin(~/.bashrcに PATH を足す。消さない) - agy のインストーラーは
ERROR: logging before google.Initと何行も出しますが、中身は「PATH を足した」という記録で、失敗ではありません agentというコマンドは、Linux では cursor-agent になります(Grok も同じ名前を作るが、PATH の順番で cursor-agent が先)。どちらも名前で起動する- ネットのスクリプトを
| bashで動かす前に、URL を開いて中身と配布元を確かめると安心
2-1 画面の無いサーバーでのログイン
- Claude Code・agy・Grok・cursor-agent:表示された URL を、別のパソコンのブラウザーで開いて許可する
- Codex:
codex login --device-authで、表示されたコードを別のパソコンで入れる。事前に ChatGPT の「設定 → セキュリティ」で、デバイスコードによるサインインを有効にする - gh:
gh auth loginで「Login with a web browser」を選び、表示されたコードを別のパソコンで入れる
手順3 アプリを入れる(約20分)
$ cd /tmp
$ wget -O chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
$ wget -O code.deb 'https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64'
$ OBS=$(curl -fsSL https://api.github.com/repos/obsidianmd/obsidian-releases/releases/latest | jq -r '.assets[] | select(.name|test("_amd64.deb$")) | .browser_download_url')
$ ORCA=$(curl -fsSL https://api.github.com/repos/stablyai/orca/releases/latest | jq -r '.assets[] | select(.name|test("_amd64.deb$")) | .browser_download_url')
$ wget -O obsidian.deb "$OBS"; wget -O orca.deb "$ORCA"
$ sudo apt-get install -y ./chrome.deb ./code.deb ./obsidian.deb ./orca.deb
$ orca-ide --version
| アプリ | 役割 |
|---|---|
| Orca | 複数の AI と複数のパソコンを1つの画面で扱う。コマンドは orca-ide |
| Obsidian | 共用のノート(Vault) |
| VS Code | コードの編集 |
| Google Chrome | Claude in Chrome・Chrome DevTools MCP で AI に操作させる |
- Chrome・VS Code の .deb は自分の apt のリポジトリを足すので、以後は
sudo apt upgradeで更新される。Obsidian・Orca は新しい版の .deb を入れ直す - Slack・Linear・各 AI のチャット用アプリは、Web 版を使うのが手軽です
3-1 画面の無いサーバーで Orca を使う
Orca には画面なしで動かす orca-ide serve があります。別のパソコン(Mac など)の Orca から「環境」としてペアリングして使えます。
[Unit]
Description=Orca の画面なしのサーバー
[Service]
ExecStart=/usr/bin/orca-ide serve --pairing-address <このサーバーの IP>
Restart=on-failure
RestartSec=10
[Install]
WantedBy=default.target
$ systemctl --user enable --now orca-serve
$ sudo loginctl enable-linger $USER # ログインしていなくても動かす
- ペアリングが済んだら、
--no-pairingを足して新しいペアリングを受け付けないようにすると安全 - 画面も見たいときは、Xfce と TigerVNC を入れ、VNC は
127.0.0.1だけで受け付けて SSH のトンネルで見る
手順4 Vault を届け、共通ルール(AGENTS.md)をつなぐ
4-1 Vault の届け方を選ぶ
Linux には Google ドライブの公式アプリがありません。次の3つから選びます。
| 方法 | しくみ | 向いている場合 | 注意 |
|---|---|---|---|
| A. rclone | Google ドライブをフォルダーとしてつなぐ | Mac・Windows と同じ Google ドライブの Vault を直接使いたい | 最初に rclone の設定(Google への許可)が要る。つなぎ直しを自動にする設定が要る |
| B. Obsidian Sync | Obsidian の有料の同期 | 画面のある Linux で Obsidian も使う。Vault を Obsidian Sync で同期している | Google ドライブの Vault と併用しない(衝突のコピーが大量にできる) |
| C. Vault を置かない | ノートは別のパソコンの Obsidian に MCP でつなぎ、AGENTS.md だけ複製を受け取る | 画面の無いサーバー・仮想マシン | 別のパソコンが止まっていると読み書きできない |
A の例(rclone):
$ sudo apt-get install -y rclone fuse3 # 新しい版は公式のスクリプト(rclone.org/install.sh)
$ rclone config # 「n」→ 名前 gdrive → 種類 drive → ブラウザーで許可
$ mkdir -p ~/GoogleDrive
$ rclone mount gdrive: ~/GoogleDrive --vfs-cache-mode writes --daemon
$ ls ~/GoogleDrive/AIVault/AGENTS.md
--vfs-cache-mode writesは、書き込みを一度手元に置いてから送る設定。Obsidian のようにファイルを書き換えるアプリで必要- この手順書の作成時は、rclone が入ることまで確かめ、Google ドライブへの接続は試していません。うまくいかないときは rclone の Google ドライブの説明 を優先してください
- ログイン時に自動でつなぐには、systemd のユーザーサービスにする
C の例(AGENTS.md の複製):常に動いている別のパソコンから、15 分ごとに scp で送る。中身が変わったときだけ送り、大きさが小さすぎる(同期の途中で空になった)ときは送らない
4-2 各 AI につなぐ
$ V=<Vault の場所>/AGENTS.md # C の場合は複製の場所(例:~/AGENTS.md)
$ mkdir -p ~/.claude ~/.codex ~/.gemini ~/.grok
$ ln -sfn "$V" ~/.claude/CLAUDE.md
$ ln -sfn "$V" ~/.codex/AGENTS.md
$ ln -sfn "$V" ~/.gemini/GEMINI.md
$ ln -sfn "$V" ~/.grok/AGENTS.md
$ ls -l ~/.claude/CLAUDE.md ~/.codex/AGENTS.md ~/.gemini/GEMINI.md ~/.grok/AGENTS.md
- 4つとも
-> …/AGENTS.mdと出れば完了。AGENTS.mdの書き方は「共通 AGENTS.md の作り方」 - 読まれたかは、ルールにしか書いていないことをファイルを開かせずに聞いて確かめる(例:
claude -p "秘密情報はどこに置くルール?ファイルは開かずに答えて")
手順5 MCP を各 AI に登録
MCP ごとに起動用のスクリプトを ~/bin に作り、キーは起動のたびに ~/.keys/keys.txt から読みます。AI の設定ファイルにキーが平文で残りません。
$ mkdir -p ~/.keys ~/bin && chmod 700 ~/.keys
$ touch ~/.keys/keys.txt && chmod 600 ~/.keys/keys.txt
~/.keys/keys.txt(1行1つ、名前=値):
OBSIDIAN_API_KEY=<Local REST API のキー>
GOOGLE_OAUTH_CLIENT_ID=<Google のクライアント ID>
GOOGLE_OAUTH_CLIENT_SECRET=<Google のクライアント シークレット>
LINE_CHANNEL_ACCESS_TOKEN=<LINE のトークン>
LINE_DESTINATION_USER_ID=<自分の LINE のユーザー ID>
~/bin/obsidian-mcp.sh:
#!/bin/bash
KEYS=~/.keys/keys.txt
key() { grep "^$1=" "$KEYS" | head -1 | cut -d= -f2-; }
export OBSIDIAN_API_KEY=$(key OBSIDIAN_API_KEY)
export OBSIDIAN_BASE_URL=http://127.0.0.1:<ポート>
exec npx -y obsidian-mcp-server@3.7.2 "$@"
~/bin/google-mcp.sh:
#!/bin/bash
KEYS=~/.keys/keys.txt
key() { grep "^$1=" "$KEYS" | head -1 | cut -d= -f2-; }
export GOOGLE_OAUTH_CLIENT_ID=$(key GOOGLE_OAUTH_CLIENT_ID)
export GOOGLE_OAUTH_CLIENT_SECRET=$(key GOOGLE_OAUTH_CLIENT_SECRET)
export USER_GOOGLE_EMAIL=you@example.com
export OAUTHLIB_INSECURE_TRANSPORT=1 # ログインの戻り先が自分の PC の中(localhost)だけなので http を許す
export WORKSPACE_MCP_TRANSPORT=stdio
exec "$HOME/.local/bin/uvx" workspace-mcp@2.3.0 --single-user --tool-tier core \
--tools gmail drive calendar docs sheets slides tasks contacts "$@"
~/bin/line-mcp.sh:
#!/bin/bash
KEYS=~/.keys/keys.txt
key() { grep "^$1=" "$KEYS" | head -1 | cut -d= -f2-; }
export CHANNEL_ACCESS_TOKEN=$(key LINE_CHANNEL_ACCESS_TOKEN)
export DESTINATION_USER_ID=$(key LINE_DESTINATION_USER_ID)
export NPM_CONFIG_IGNORE_SCRIPTS=true
exec npx -y @line/line-bot-mcp-server@0.5.0 "$@"
$ chmod 700 ~/bin/*.sh
$ claude mcp add -s user obsidian -- ~/bin/obsidian-mcp.sh
$ CODEX_HOME=~/.codex codex mcp add obsidian -- ~/bin/obsidian-mcp.sh
$ grok mcp add obsidian -- ~/bin/obsidian-mcp.sh
$ agy mcp add obsidian ~/bin/obsidian-mcp.sh
$ grok mcp add chrome-devtools -- npx -y chrome-devtools-mcp@1.12.0 --usageStatistics=false --performanceCrux=false
- LINE の MCP には、友だち全員に送る一斉送信などの道具もあります。AI ごとの許可の設定で止めておく
- Google は、最初に道具を使ったときにブラウザーで許可します。画面の無いサーバーでは、戻り先(
localhost:8000)を SSH のトンネルで手元のパソコンにつないで許可する(例:ssh -L 8000:127.0.0.1:8000 <サーバー>) - Obsidian を同じ Linux で動かさない(方法 C)ときは、
OBSIDIAN_BASE_URLを、Obsidian が動いているパソコンへのトンネルに向ける
手順6 動作確認
$ claude mcp list
$ codex mcp list
$ grok mcp doctor
$ agy mcp list
- □ 5つの CLI の
--versionが出る - □ 使う AI と gh がログイン済み
- □ 指示ファイルが
AGENTS.mdへのリンクになっている - □ 各 AI がルールにしか書いていないことを答えられる
- □ 各 AI から Obsidian のノート一覧が取れる
- □ AI の設定ファイル(
~/.claude.json・~/.codex/config.toml・~/.grok/config.toml・~/.gemini/config/mcp_config.json)にキーが平文で入っていない
つまずきやすい点
| 起きること | 原因 | 対処 |
|---|---|---|
| node が古い・MCP が起動しない | Ubuntu の標準の nodejs(18)を使っている | NodeSource の LTS を入れる(1-1) |
| コマンドが見つからない | PATH が読み直されていない | exec bash -l か、ターミナルを開き直す |
| agy のインストールで ERROR が並ぶ | 記録の書き方の問題 | 最後に agy --version が出れば OK |
agent が思った AI にならない | Grok と cursor-agent が同じ名前を作る | grok・cursor-agent の名前で起動する |
| 画面の無いサーバーで Codex にログインできない | デバイスコードのサインインが無効 | ChatGPT の設定で有効にし、codex login --device-auth |
利用者 admin が作れない(cloud-init など) | Ubuntu には admin グループが最初からある | 別の名前にする |
| Chrome がキーリングのパスワードを求めて止まる | 画面の無い環境のキーリング | google-chrome --password-store=basic で起動する |
| ノートの衝突のコピーが大量にできる | 2つの同期の併用、同時編集 | 同期は1つにする。書き込みは Obsidian の MCP 経由にそろえる |
秘密情報の扱い
- キー・パスワードは
~/.keysだけに置き(chmod 700・600)、Vault や AI の設定ファイルには書かない claude mcp add -e KEY=…のようにキーを直接渡さない。必ず起動用のスクリプトを通す
公式サイト一覧
| 名前 | 公式ページ |
|---|---|
| Node.js(NodeSource) | nodejs.org・github.com/nodesource/distributions |
| GitHub CLI | cli.github.com |
| uv | docs.astral.sh/uv |
| Claude Code | code.claude.com/docs |
| Codex | github.com/openai/codex |
| Antigravity | antigravity.google |
| Grok Build | docs.x.ai/build/overview |
| Cursor CLI | cursor.com/cli |
| Orca | onorca.dev(GitHub) |
| Obsidian | obsidian.md |
| VS Code | code.visualstudio.com |
| Google Chrome | google.com/chrome |
| rclone | rclone.org |
| obsidian-mcp-server | GitHub |
| Google Workspace MCP | GitHub |
| LINE Bot MCP Server | GitHub |
| Chrome DevTools MCP | GitHub |
