Skip to content

AI 統合 (MCP) ​

VMark には AI アシスタント(Claude など)がエディタと直接やり取りできる組み込み MCP(Model Context Protocol)サーバーが搭載されています。

MCP とは? ​

Model Context Protocolは、AI アシスタントが外部ツールやアプリケーションとやり取りするためのオープン標準です。VMark の MCP サーバーはエディタ機能をツールとして公開し、AI アシスタントが次のことを行えるようにします:

  • ドキュメントコンテンツの読み取りと書き込み
  • 書式設定の適用と構造の作成
  • ドキュメントのナビゲーションと管理
  • 特別なコンテンツの挿入(数式、ダイアグラム、Wiki リンク)

クイックセットアップ ​

VMark はワンクリックインストールで AI アシスタントを簡単に接続できます。

1. MCP サーバーを有効化 ​

設定 → インテグレーション を開き、MCP サーバーを有効にします:

VMark MCP Server Settings
  • MCP サーバーを有効化——AI 接続を許可するためにオンにする
  • 起動時に開始——VMark 起動時に自動開始
  • 新しい場所への保存とジーニーの結果を自動承認——デフォルトはオフ。AI がドキュメントを確認なしで 新しい パスに保存できるようにし、Genie がその結果を提案としてではなく直接適用できるようにします。通常の AI の書き込みがこの設定で制限されることはありません——その安全網は 編集チェックポイントの履歴 です(編集の仕組みを参照)

2. 設定をインストール ​

AI アシスタント用の インストール をクリックします:

VMark MCP Install Configuration

サポートされている AI アシスタント:

  • Claude Desktop——Anthropic のデスクトップ App
  • Claude Code——開発者向け CLI
  • Codex CLI——OpenAI のコーディングアシスタント
  • Antigravity CLI——Google の agy。Gemini CLI の後継
  • Grok CLI——xAI のコーディングエージェント
  • opencode——オープンソースでプロバイダーに依存しないターミナルエージェント

インストールはクライアントごとの認証情報を書き込みます。 VMark の MCP サーバーへのパスに加えて、インストールはクライアント自身の設定ファイルに秘密のトークンを env.VMARK_MCP_TOKEN(opencode では environment.VMARK_MCP_TOKEN)として書き込みます。トークンはクライアントごとに異なり、他のどこにも保存されません。これにより VMark は、クライアントが名乗る名前を信用するのではなく、どのクライアントが接続しているかを知ることができます。現在これが必要なのは委任されたアクション——coherence_resolve であなたに代わって整合性の質問に答えること——だけで、それ以外のツールはトークンなしで動作します。インストールと 修復 はまだ有効なトークンを維持します。新しいトークンを発行するには、アンインストールしてから再度インストールしてください。どちらの後も AI クライアントを再起動してください。トークンはパスワードと同様に扱ってください:設定ファイルを issue やチャットに貼り付けないでください。

Gemini CLI は提供終了しました

Google は Gemini CLI を Antigravity に置き換えました。以前の VMark のインストールで ~/.gemini/settings.json に vmark エントリが残っている場合、インテグレーションパネルにはそのための Discontinued 行が 削除 ボタン付きで表示されます。新しいインストールは代わりに Antigravity を対象とします。

その他の MCP 互換クライアント

Cursor、Windsurf などの MCP 互換クライアントも VMark の MCP サーバーに接続できます。MCP サーバーバイナリのパスを指定して手動で設定してください(下記の手動設定を参照)。

CC-Switch ​

AI CLI を CC-Switch で管理している場合、インストーラーには CC-Switch 行も表示されます。CC-Switch に追加 は ccswitch://v1/import リンクを開き、VMark の MCP サーバー(そのバイナリパス)を CC-Switch に渡します。CC-Switch は、そこで管理しているすべての CLI に vmark エントリを書き込みます。貼り付けたい場合は、コピーボタンでリンクそのものを取得できます。この行は、VMark が自身の MCP バイナリを解決するまで無効です。

ステータスアイコン ​

各プロバイダーにはステータスインジケーターが表示されます:

アイコンステータス意味
✓ 緑有効設定が正しく機能している
⚠ 黄パスの不一致VMark が移動されました——修復 をクリック
✗ 赤バイナリが見つからないMCP バイナリが見つかりません——VMark を再インストール
🗎 赤設定を読み取れないVMark が設定ファイルを読み取れないかパースできないため、VMark のエントリを含んでいるかどうか不明です。メッセージにはファイル名と理由が示されます。ファイルを修正するか移動してから 再確認 をクリックしてください——パースできるようになるまでインストールと修復は保留されます。VMark が読み取れないファイルに書き込むと、その内容を壊すおそれがあるためです
○ グレー未設定インストールされていません——インストール をクリック

VMark を移動しましたか?

VMark.app を別の場所に移動すると、ステータスに黄色の「パスの不一致」が表示されます。修復 ボタンをクリックするだけで、新しいパスで設定が更新されます。

3. AI アシスタントを再起動 ​

インストールまたは修復後、AI アシスタントを完全に再起動(終了して再起動)して新しい設定を読み込みます。VMark は各設定変更後にリマインダーを表示します。

4. 試してみる ​

AI アシスタントで次のコマンドを試してください:

  • 「VMark のドキュメントに何がある?」
  • 「VMark に量子コンピューティングの概要を書いて」
  • 「ドキュメントに目次を追加して」

動作確認 ​

Claude に質問し、答えを VMark ドキュメントに直接書かせてみましょう:

Claude Desktop using VMark MCP

Claude Desktop がdocument → set_contentを呼び出して VMark に書き込む

Content rendered in VMark

コンテンツは VMark に即座に表示され、完全にフォーマットされます

手動設定 ​

手動で設定する場合、設定ファイルの場所は次のとおりです:

Claude Desktop ​

~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows)を編集します:

json
{
  "mcpServers": {
    "vmark": {
      "command": "/Applications/VMark.app/Contents/MacOS/vmark-mcp-server"
    }
  }
}

Claude Code ​

~/.claude.json またはプロジェクトの .mcp.json を編集します:

json
{
  "mcpServers": {
    "vmark": {
      "command": "/Applications/VMark.app/Contents/MacOS/vmark-mcp-server"
    }
  }
}

Codex CLI ​

~/.codex/config.toml を編集します:

toml
[mcp_servers.vmark]
command = "/Applications/VMark.app/Contents/MacOS/vmark-mcp-server"

Antigravity CLI ​

~/.gemini/config/mcp_config.json を編集します:

json
{
  "mcpServers": {
    "vmark": {
      "command": "/Applications/VMark.app/Contents/MacOS/vmark-mcp-server"
    }
  }
}

Grok CLI ​

~/.grok/config.toml を編集します:

toml
[mcp_servers.vmark]
command = "/Applications/VMark.app/Contents/MacOS/vmark-mcp-server"

opencode ​

~/.config/opencode/opencode.json を編集します。opencode のスキーマは mcpServers のものとは異なります:キーは mcp で、command はプログラムとその引数をまとめた 1 つの配列です:

json
{
  "mcp": {
    "vmark": {
      "type": "local",
      "command": ["/Applications/VMark.app/Contents/MacOS/vmark-mcp-server"],
      "enabled": true
    }
  }
}

自分の設定が opencode.jsonc にある場合は、そのままにしておいてください——opencode は両方のファイルをマージするため、opencode.json 内の VMark のエントリは追加として扱われます。VMark がプレーン JSON のファイルに書き込むのは、.jsonc ファイル内のコメントを保ったまま読み書きできないためです。

opencode.jsonc に既存の vmark エントリがあるとそちらが優先されます

opencode は config.json、opencode.json、opencode.jsonc の順にマージし、最後に読み込んだものが優先されます。そのため、以前に opencode.jsonc に手動で vmark エントリを追加していた場合、それが VMark の管理するエントリを上書きします——VMark はプロバイダーを有効と報告しますが、opencode は古いエントリ(とその古いバイナリパス)を使い続けます。手書きの mcp.vmark ブロックを opencode.jsonc から削除し、インテグレーションパネルに管理を任せてください。

バイナリパスの確認

macOS では、MCP サーバーバイナリは VMark.app 内にあります:

  • VMark.app/Contents/MacOS/vmark-mcp-server

Windows では:

  • C:\Program Files\VMark\vmark-mcp-server.exe

Linux では:

  • /usr/bin/vmark-mcp-server(またはインストールした場所)

ポートは自動検出されます——args は不要です。

CLI フラグ(上級者向け) ​

MCP サーバーバイナリは診断とレガシーセットアップ用の小さなフラグセットをサポートしています:

フラグ動作
--version(または -v)バージョンを表示(実行中の VMark と一致している必要があります)して終了。
--health-checkバイナリのセルフテストを実行して終了します:組み込みのモックブリッジに対して MCP サーバーを起動し、そのバージョンとツール数を JSON で出力し、ツール数がこのビルドの想定と異なる場合は 0 以外で終了します。実行中の VMark には 接続しません——バイナリが動作することの確認に使い、ライブのブリッジの確認には 設定 → インテグレーション を使ってください。
--port <number>ポートの手動オーバーライド。自動検出ハンドシェイクをスキップして指定したポートに接続します。ブリッジポートが外部で固定されているレガシーセットアップでのみ有用です。自動検出が推奨されます。

例:

bash
vmark-mcp-server --health-check
vmark-mcp-server --version
vmark-mcp-server --port 9223   # レガシー / 手動

それ以外の引数(綴りを誤ったフラグ、--port=9223、余分な単語など)は拒否されます。プログラムは使用法エラーを表示し、自動検出に切り替えずに終了コード 64 で終了します。

仕組み ​

text
AI Assistant <--stdio--> MCP Server <--WebSocket--> VMark Editor
  1. VMark が WebSocket ブリッジを起動 し、起動時に利用可能なポートで待機します
  2. MCP サーバー が VMark のアプリデータディレクトリからポートと認証トークンを読み取ります
  3. MCP サーバー が WebSocket ブリッジを通じて接続・認証します
  4. AI アシスタント が stdio 経由で MCP サーバーと通信します
  5. コマンドがリレー され、ブリッジを通じて VMark のエディタに届きます

利用可能な機能 ​

接続すると、AI アシスタントは 10 個のツールを使えます:

ツール対象範囲
sessionウィンドウ、タブ、アクティブなドキュメント、ブラウザタブ(読み取り専用)
workspace新規作成、開く、保存、名前を付けて保存、閉じる、タブの切り替え、ウィンドウへのフォーカス、ワークスペースを開く
documentドキュメント全体を Markdown として読み書き。CJK フォーマット変換
selection選択テキストの読み取りと置換
commentsドキュメントのレビューコメントの一覧、返信、対応済みへの変更(アシスタントは解決できません)
workflowGitHub Actions YAML に対する CST セーフなパッチと検証
browser / browser_readmacOS での埋め込みブラウザの自動化——変更を行う側と読み取り専用の側
coherence / coherence_resolve整合性レイヤーの読み取り。あなたが付与した委任のもとで古くなったエッジを解決

書式設定は独立したツールではありません:アシスタントは Markdown を書くので、見出し、表、数式、ダイアグラムはすべてアシスタントが書いたとおりになります。

完全なドキュメントはMCP ツールリファレンスを参照してください。

MCP ステータスの確認 ​

VMark は MCP サーバーのステータスを確認する複数の方法を提供します:

ステータスバーインジケーター ​

ステータスバーの右側に MCP インジケーターが表示されます。注意が必要なときは、衛星アイコンの横に状態を示す短い語が表示されます。正常な接続では緑のアイコンだけです。ホバーすると、現在接続している AI クライアントが名前とバージョンとともに一覧表示されます:

色語ステータス
緑—接続済みで実行中
グレーoff切断済みまたは停止中
点滅(アニメーション)…起動中
赤errorサーバーが失敗——ホバーすると理由が表示されます

起動は通常 1〜2 秒以内に完了します。

インジケーターをクリックすると 設定 → インテグレーション が開きます。

設定パネル ​

設定 → インテグレーション はもう 1 つのステータス表示です——独立したステータスダイアログはありません。ブリッジの実行中は、待ち受けているアドレス(localhost:<port>、コピーボタン付き)と接続中の AI クライアントの数が表示され、数秒ごとに更新されます。接続テスト ボタン(ブリッジが停止している間は サイドカーを確認 と表示されます)はサイドカー自身の --health-check を実行し、サイドカーのバージョン、ツール数、最終確認時刻を報告します——これはインストールされたバイナリが動作することを確認するもので、クライアントが接続していることを確認するものではありません。

トラブルシューティング ​

「接続が拒否されました」または「アクティブなエディタがありません」 ​

  • VMark が実行中でドキュメントが開いていることを確認してください
  • 設定 → インテグレーションで MCP サーバーが有効になっていることを確認してください
  • MCP ブリッジが「実行中」ステータスを示しているか確認してください
  • 接続が中断された場合は VMark を再起動してください

VMark 移動後のパスの不一致 ​

VMark.app を別の場所(例:ダウンロードからアプリケーションへ)に移動した場合、設定は古いパスを指します:

  1. 設定 → インテグレーション を開く
  2. 影響を受けるプロバイダーの横にある黄色の⚠警告アイコンを探す
  3. 修復 をクリックしてパスを更新する
  4. AI アシスタントを再起動する

AI アシスタントにツールが表示されない ​

  • 設定のインストール後に AI アシスタントを再起動してください
  • 設定がインストールされているか確認してください(設定で緑のチェックマーク)
  • AI アシスタントのログで MCP 接続エラーを確認してください

「アクティブなエディタがありません」でコマンドが失敗する ​

  • VMark でドキュメントタブがアクティブになっていることを確認してください
  • エディタエリアをクリックしてフォーカスを当ててください
  • 一部のコマンドはまずテキストを選択する必要があります

編集の仕組み ​

整理された MCP の表面は読み書きの基本線に従います:AI アシスタントは document.read を呼んで現在の内容とリビジョントークンを取得し、それについて考えたうえで、新しい内容全体を指定して document.write を呼びます。リビジョントークンは黙った上書きを防ぎます:AI が考えている間にあなたが VMark で入力した場合、書き込みは STALE を返し、AI は読み直します。

GitHub Actions のワークフロー YAML ファイルでは、AI は代わりに workflow.apply_patch を使います——VMark の CST 対応のミューテーターは、生のテキストの書き換えでは失われるコメント、アンカー、キーの順序を保持します。

document.write、selection.set、workflow.apply_patch にはプレビューの段階がありません——リビジョンチェックに通るとすぐに変更がエディタに反映されます。安全網は下記の 編集チェックポイントの履歴 です。何かが反映される前に確認したい場合は、ドキュメントを git で管理して差分を確認してください。唯一の承認ゲートは 新しい場所への保存とジーニーの結果を自動承認 です:これがオフ(デフォルト)の場合、AI はドキュメントを新しいパスに保存できません——workspace.save_as は APPROVAL_REQUIRED を返し、VMark はファイル名を示すトーストを表示します。オンの場合でも、save_as は別の既存ファイルの上書きを拒否します。

編集チェックポイント ​

AI によるドキュメントの変更 — document.write、document.transform、selection.set、workflow.apply_patch — は、何かを変更する前に VMark の編集履歴に記録されます。ステータスバーの 履歴 ボタンは、フォーカス中のドキュメントのパネルを開きます。バッジはそのドキュメントの AI によるバージョン数を示し、変更が記録されていないときはボタンが警告色になります。パネルは、バージョンが記録されるたびに、すべてのウィンドウでリアルタイムに更新されます。

パネルにはドキュメントのバージョンが新しい順に並びます。各行には、日時、変更の種類、ツール、そして誰が行ったか — AI クライアントのプロバイダー(例: claude や codex)、その接続、セッションラベル — が表示されます。トークンのないクライアントは 識別されていないクライアント、未知のトークンは 認識されない認証情報、複数のクライアントで共有されたトークンは 複数のプロバイダーで共有されている認証情報 と表示され、クライアントがどんな名前を名乗ってもプロバイダーとしては表示されません。この版を復元 はそのバージョンのテキストに戻し、この変更の前の状態に復元 はその前のテキストに戻します。復元するとドキュメントのリビジョンが進むため、古いリビジョンを持ったままの AI クライアントは、次の書き込みで復元を上書きする代わりに STALE を受け取ります。復元そのものも記録されます。置き換えるテキストが先に保存され、復元の途中で編集されたドキュメントには手を加えません。復元の記録がディスクに書き込まれたことを VMark が確認できない場合は、結果の横に警告を表示します。

バージョン一覧の上にある AI の変更を確認 には、まだ確認していない AI の変更がクライアントとセッションごとにまとめて表示されます。変更がすべて確認済みのバージョンは件数だけにまとめられます。各変更には 残す と 元に戻す があり、その後は 残すを取り消す または 元に戻すを取り消す が使えます。その後あなたが編集したテキストを上書きしてしまう取り消しは適用されず、変更は競合として示されます。手で解決したら 対応済みにする で記録します。位置を確認できなくなった変更は理由を示し、自動で元に戻す操作は表示されません。確認済みを確定 は確認を求めたうえで、確認済みの変更をすべて確定します。これは取り消せません。1 つのドキュメントが持てる未確認の AI の変更は 500 件までで、上限に達するとバナーで知らせ、確認して確定するまで AI の編集は REVIEW_BACKLOG_FULL で拒否されます。直前とは別のバージョンから始まった保存 — ドキュメントが 2 つのウィンドウで編集された場合 — にはその旨が表示され、統合を取り消すための 2 つの復元が使えます。両方の変更を表示を選ぶと、その保存の差分が 2 つ表示されます。この保存の開始バージョンとの比較はこの保存が始まったバージョンとの差分、直前のバージョンとの比較は履歴上の直前のバージョンとの差分です。

その後の コメント には、ドキュメントのコメントスレッドが並びます。選択範囲にコメント は、エディタで選択したテキスト(カーソルだけの場合はその段落)を引用してコメントを追加します。未保存のテキストは先に記録されるため、コメントが古いバージョンを指すことはありません。各スレッドには状態(未対応、対応済み、解決済み、再オープン)、書いた人、引用したテキスト、返信が表示されます。コメントはプレーンテキストとして表示され、コメント中の HTML は表示されるだけで実行されることはありません。引用したテキストが複数か所に現れるようになった場合はその数が、なくなった場合はその旨が表示されます。どの状態でも 返信 でき、未対応または再オープンのスレッドは 対応済みにする、解決 でき、解決済みのスレッドは 再オープン または 削除 できます。削除は確認のうえ行われ、元に戻せません。コメントや返信の送信中は、パネルを閉じて開き直しても、編集もキャンセルもできません。拒否されたものは残るので、修正してもう一度送信できます。スレッドを解決、再オープン、削除できるのはあなただけです。元のリビジョンが履歴から消えた後に再オープンしたスレッドには 作成時のリビジョンは保持されていません と表示され、現在のテキストと照合されます。

パネルの上部には、変更が記録されていないときにその旨が表示されます。履歴が起動できなかった、または読み取り専用である、記録が遅れている(キューにあり、まだディスクにない)、このドキュメントの最後の保存が拒否された、または履歴が時間内に応答しなかった、開いているページが多すぎるウィンドウで AI の編集が拒否された、あるいは一部の AI の変更をもう自動では元に戻せない、といった場合です。また、変更範囲を確認できなかったためにドキュメント全体の変更として記録された AI の編集の件数も表示します。もう自動では元に戻せない変更は、位置が最後に確認されたバージョンの下に ブロック中: 理由(発生元) と表示され、そのバージョンは強調表示されます。該当するバージョンがない場合、パネルは位置が不明であることを示します。適用されたものの記録されなかった書き込みは 記録されていない書き込み に、それぞれ復元と破棄の操作付きで表示されます。

同じクライアントの複数のセッションを区別するには、クライアントの MCP 設定で VMARK_MCP_TOKEN と並べて VMARK_SESSION_LABEL を設定します。

json
"env": { "VMARK_MCP_TOKEN": "…", "VMARK_SESSION_LABEL": "docs refactor" }

ラベルは最大 128 UTF-8 バイトで、制御文字は使えません。規則に反するラベルは警告とともに破棄され、クライアントはラベルなしで接続します。ラベルはクライアントの設定で決まるため、表示専用であり、何かを判断する材料にはなりません。

履歴は VMark のアプリデータディレクトリ内の agent-journal フォルダーに保存されるため、再起動後も残ります。このフォルダーには記録された各編集の直前の全文が含まれ、所有者だけがアクセスできます(macOS と Linux では 0700)。以前のバージョンの VMark のチェックポイント(初回起動時に取り込まれ、その後名前を変えて保管される mcp-checkpoints.jsonl)は 以前のチェックポイント に、すべてのドキュメントとウィンドウを通した一つのリストとして表示されます。復元するとそのファイルが開きます。無題のもの、またはファイルをもう開けないものは、新しいドキュメントに復元されます。このセクションには保持しているチェックポイントのテキスト量が表示され、すべて — 各ファイル、各ウィンドウ — を一度の操作で消去し、テキストをディスクから削除できます。

セキュリティノート ​

  • MCP サーバーはローカル接続(localhost)のみを受け付けます
  • データは外部サーバーに送信されません
  • AI のファイル操作は、開いているワークスペースのルートと、開いているドキュメントのフォルダーに限定されます——プライバシーを参照してください
  • すべての処理はあなたのマシン上で行われます
  • WebSocket ブリッジはローカルでのみアクセス可能です
  • インストールされた各クライアントは独自の VMARK_MCP_TOKEN を持ちます。トークンがない、未知のトークンを持つ、または別のクライアントと共有されたトークンを持つクライアントも接続はできますが、その委任されたアクションは拒否され、設定 → インテグレーション でそのクライアントのインストールを実行して再起動するよう求めるメッセージが表示されます

次のステップ ​