この1年ほど、「AIアシスタントを自分のノートにつないで安全か」という問いへの 正直な答えは、「つないでも読むだけだから」というものでした。 会議ノート向けのMCPサーバーの 多くが実際そうで、おかげで安全性の話は簡単でした。何も変更できないツールは、 間違ったものを変更しようがありません。
しかし論点はもうそこにはありません。アシスタントは録音にタグを付け、話者名を 変更し、文字起こしをやり直し、共有チャンネルにノートを公開します。だから問いは もっと狭くなります。モデルに自分のデータを変更させる前に、何が成り立っている 必要があるのか。 必要なのは4つで、そのどれも「ベンダーが慎重にやると約束して いる」ではありません。呼び出し前にクライアントが尋ねること、変更が一文で説明 できるほど限定されていること、元に戻せない変更にはそう印が付いていること、 そして後から読める記録があることです。
この記事は、その線がどこを走っているかについてのものです。プロトコル自体に なじみがなければ、まず MCPサーバーとは何かで基本を押さえて ください。
「書き込み権限」は、まったく性質の異なる3つのことを1語でまとめた表現です。 そしてまとめてしまうことが、この話題を実際以上に怖く見せています。
ラベル付け。 タグ、タイトル、話者名。これらは録音の隣にあるメタデータを 追加したり置き換えたりします。アシスタントが違う会議にタグを付けたら、アプリを 開いて外すだけです。最悪でも、張り切りすぎたモデルの後片付けで済みます。
内容の置き換え。 録音の文字起こしをやり直すと新しいテキストができ、古い ものは消えます。手作業で直した箇所ごと消えます。データは端末から出ていません が、自分のものだったものは失われます。ここで「元に戻せる」が静かに成り立たなく なります。
端末の外へ出ること。 録音をチームチャンネルに公開する、文字起こしをメールで 送る、誰かにアクセス権を与える。ここで変わるのは主にデータではなく、誰がそれを 見たかです。取り消しは社会的な事実に対する技術的な操作であり、機能しません。
この3つを1つの設定として扱う安全モデルは、両方向に間違えます。1つ目には うるさすぎ、3つ目には緩すぎるのです。
MCPにはこのための語彙があります。ツール定義にはアノテーションを付けられます。
readOnlyHint(読むだけ)、destructiveHint(追加ではなく上書きしうる)、
idempotentHint(2回呼んでも結果は変わらない)、openWorldHint(外部システムに
アクセスする)です。共有のためのツールをopenWorldHintなしで公開するサーバーは、
自分を偽って説明していることになります。
この語彙にどれだけの価値があるかは、 仕様の2つの文が決めます。 1つはクライアントの義務について。「信頼と安全のために、ツールの呼び出しを拒否 できる人間が常に介在するべきである」。もう1つはアノテーション自体について。 クライアントは「信頼できるサーバーから来たものでない限り、ツールのアノテーション を信頼できないものとして扱わなければならない」。
この2つを合わせると、構造が決まります。アノテーションはサーバーがリスクを 申告する手段であって、サーバーが掛けられる鍵ではありません。ゲートは クライアント側にあり、ツール実行前に出る確認ダイアログは、サーバーの申告を 踏まえたクライアントの判断です。たとえばClaude Codeは、MCPツールについては 既定で確認しますが、自前の組み込みツールについては確認しません。
実務上の帰結は居心地の悪いもので、はっきり書く価値があります。あなたが何かを 判断する瞬間は、恒久的な許可を与える瞬間そのものです。「常に許可」を押した あと、ダイアログはもう制御ではありません。サーバー単位ではなくツール単位で 与えてください。1時間ごとの検索は問題ありませんが、1時間ごとの共有は問題です。
役に立つ軸は読み取りか書き込みかではありません。間違えたときの代償です。
| 操作 | 取り消し | 理由 |
|---|---|---|
| タグの追加・削除 | できる(アプリで) | 録音の隣にあるメタデータ |
| 録音名や話者名の変更 | できる(アプリで) | 内容ではなくラベル |
| 文字起こしのやり直し | できない | 手作業の修正ごとテキストを置き換える |
| チームチャンネルへの公開 | できない | 同僚がすでに読んでいるかもしれない |
| 文字起こしのメール送信 | できない | 受信者の手元には届いたものが残る |
下3行に当たるものは毎回明示的な確認に値し、上2行はおそらくその必要がありません。 どれを提供しているかをベンダーが示す場所がツール一覧で、何かをつなぐ前に読んで おく価値があります。
確認プロンプトは効き目が落ちます。1つの調査タスクで何十回も出ることがあり、 何も変更できないツールについてまで出ます。そして記録されている結果は、人が次の 1件を読むのではなく、プロンプト自体をまとめてオフにするというものです。閉じる 癖を身につけさせる制御は、制御ではありません。
記録は効き目が落ちません。事後に、しかも疑問が生じたときだけ読むものだから です。仕様がクライアントに与えるガイダンスにも監査目的でのツール利用のログが 含まれており、同じ理屈はサーバーにも当てはまります。アシスタントが何かを変更 できるなら、何を、いつ、どのレコードに対して変更したのかを後から見られるべき です。
書き込み権限を持つMCP連携を評価する実用的なテストはこうです。昨夜モデルが予想 外のことをしていたとして、今日それをどこで読めるのか。 答えが「どこにもない」 なら、安全モデル全体を確認ダイアログ1つが背負っていたということです。
アシスタントに変更をさせないやり方は2つあり、互いの代わりにはなりません。
クライアントごと、そのクライアントの設定で。 読み取り専用モードで起動した
サーバーは、読み取り用のツールだけを公開します。呼び出しを拒否するのとの違いは
見た目だけの話ではありません。モデルに見えないツールは提案もされないので、
「ではチームチャンネルに公開します」と言われてエラーになる、ということが
起きません。Speak-Yではサーバーのargsに--read-onlyを足す形で、読み取り用の
6つのツールが残ります。
全体で、アプリ側で。 どのクライアントからの要求かに関係なく、接続中の すべてのクライアントを一度に覆う1つのスイッチです。
この違いが重要なのは、Cursorの設定ファイルにあるフラグはCursorだけを縛るから です。クライアントごとのフラグは「Cursorは読むだけ、Claude Codeは何でもできる」 と言っているにすぎず、全部についての宣言になるのはアプリ内のスイッチだけです。
Speak-Yは2つの半分を意図的に分けており、その分け方は外からも見えます。
読み取りはローカルで、何も起動していなくて構いません。 検索、文字起こし、 要約、アクションアイテム、タグは、お使いのMacにあるライブラリから取得します。 別プロセスが読み取り専用で開くので、アプリが動いている必要はありません。 アシスタントに読ませるために何かがアップロードされることもありません。ただし、 どのMCPサーバーでも同じですが、読まれた内容は会話の一部としてモデル提供元へ 送られます。これはデータがどこに保存されているかとは 別の問題です。
変更は起動中のアプリを通ります。 タグ付け、名前の変更、文字起こしのやり直し、 チームチャンネルへの公開は、画面のボタンの裏側にあるのと同じコードが 実行します。独自のルール解釈を持つ第2の実装ではありません。アプリが起動して いなければ、これらのツールは中途半端に動くのではなく、そう伝えます。
すべての操作は申告され、記録されます。 変更系のツールは
readOnlyHint: falseで公開され、文字起こしのやり直しとチャンネル公開にはさらに
destructiveHintが付きます。公開にはopenWorldHintも付きます。端末の外へ出る
唯一の操作だからです。直近50件の操作は設定 → 連携に、時刻・操作・対象
レコード・結果とともに一覧されます。文字起こしのテキストは載りません。載せれば、
元の録音より長く残ってしまうからです。アシスタントの操作を止めるスイッチも同じ
画面にあり、サーバーはどのプランでも無料で使えます。
2026年8月13日時点、各ベンダーの公式ドキュメントで確認しました。
Firefliesの一覧が興味深いのは、「この文字起こしをこれらのアドレスに共有して」が、 まさにクライアントの確認だけが誤読された指示と受信者のあいだに立っている類の 操作だからです。これは機能への批判ではありません。ツール一覧に明記するのは 誠実な出し方です。サーバー全体に恒久的な許可を与える前に、その一覧を読むべき だという論拠になります。
どれもベンダーの意図を信じることを求めません。そこが要点です。「アシスタントに 自分のデータを変更させて安全か」という問いに一般的な答えはありませんが、答えの ある問いに分解できます。何が変わるのか、誰が承認するのか、何が元に戻せるのか、 そしてそれはどこに書き残されるのか。
まだアシスタントをつないでいないなら、実際の出発点は 会議ノートをMCPでつなぐです。 以上の話が関係してくる前の、設定と最初のプロンプトを扱っています。
限られた意味では安全です。何も変更できないツールは、間違ったものを変更しようがありません。ただし読み取り専用は大ざっぱな手段であって、安全性のモデルではありません。実際に守ってくれるのは、どの変更が元に戻せるかを把握していること、元に戻せないものについてクライアントが事前に確認すること、そして何が行われたかを後から読めることです。読み取り専用のサーバーは、機能を手放すことで最初の性質だけを得ています。
それはサーバーではなくクライアントの性質です。MCPの仕様は、ツールの呼び出しを拒否できる人間が常に介在するべきだとしており、Claude CodeなどのクライアントはMCPツールを既定で確認する設定にしています。サーバーはアノテーションでツールを変更系や破壊的と申告できますが、仕様はクライアントに対し、信頼できるサーバーから来たものでない限りアノテーションを信頼できないものとして扱うよう求めています。したがって申告は判断材料であって強制ではありません。
そのツールについて確認ダイアログは制御ではなくなり、以降の呼び出しはすべて確認なしで実行されます。検索ツールなら妥当な取引ですが、データを他人と共有するツールでは割に合いません。恒久的な許可はサーバー単位ではなくツール単位で与え、実際に何が起きたかに答えるものは操作の記録だと考えてください。
サーバーが、クライアント側の設定で指定する読み取り専用モードに対応していれば可能です。Speak-Yは対応しています。クライアントのMCP設定のargsに--read-onlyを足すと、そのクライアントには読み取り用のツールだけが公開されるため、Cursorは読み取りに限定しつつClaude Codeには全機能を残せます。アプリ内のスイッチのほうは、すべてのクライアントに一度に適用されます。
2種類あります。文字起こしのやり直しは、手作業の修正を含めて録音の現在のテキストを置き換えます。録音をチームチャンネルに公開すると同僚から見える状態になり、あとで取り下げても読まれた事実は消えません。タグ、タイトル、話者名はラベルなので、アプリで元に戻せます。