Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
権限は渡さない、操作だけ切り出す ― 自前MCPサーバー実践入門
Search
西岡 賢一郎 (Kenichiro Nishioka)
June 27, 2026
Technology
9
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
権限は渡さない、操作だけ切り出す ― 自前MCPサーバー実践入門
AI社会実装勉強会第60回 (
https://machine-learning-workshop.connpass.com/event/397325/
) の発表資料です。
西岡 賢一郎 (Kenichiro Nishioka)
June 27, 2026
More Decks by 西岡 賢一郎 (Kenichiro Nishioka)
See All by 西岡 賢一郎 (Kenichiro Nishioka)
AIガバナンス実践 - 生成AIコネクタのデータ漏洩リスクと実務対策
knishioka
0
200
データサイエンスの現場から学ぶ 成功と失敗の実像と生成AI時代の展望
knishioka
0
89
ハーネスエンジニアリング入門
knishioka
0
380
OpenClawでPM業務を自動化
knishioka
2
550
Claude Cowork Plugins を読む - Skills駆動型業務エージェント設計の実像と構造
knishioka
0
660
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
890
Claude Codeを使った情報整理術
knishioka
20
13k
Claude Skillsで"仕事の型"を配布する
knishioka
0
400
Claude Agent SDKで始める実践的AIエージェント開発
knishioka
0
230
Other Decks in Technology
See All in Technology
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
3k
Lightning近況報告
kozy4324
0
190
MUSUBI 田中裕一『AIと共に行う「しごとのリデザイン」- スモールバックオフィス編』AI Ops Lab #4
musubi
0
270
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
140
20260619 私の日常業務での生成 AI 活用
masaruogura
1
230
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
1.3k
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
1.3k
人材育成分科会.pdf
_awache
4
300
生成 AI 実践ガイド (概略版) AIガバナンス編
asei
0
120
エラーバジェットのアラートのタイミングを考える.pdf
kairim0
0
170
FPGAの開発コンペでZephyrを使ってみた
iotengineer22
0
140
GitHub Copilot 最新アップデート – 「一歩先」の実践活用術
moulongzhang
5
1.5k
Featured
See All Featured
HDC tutorial
michielstock
2
720
Why Our Code Smells
bkeepers
PRO
340
58k
Navigating Weather and Climate Data
rabernat
0
220
New Earth Scene 8
popppiees
3
2.3k
Into the Great Unknown - MozCon
thekraken
41
2.6k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
970
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
490
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
180
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
140
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Transcript
A I 社 会 実 装 勉 強 会 第
6 0 回 権限は渡さない、 操作だけ切り出 す ― 自前MCPサーバー実践入門 西岡 賢一郎 Data Informed CEO ・ D-stats CTO ・ NOBULL AI CTO 01
0 0 — 全 体 構 成 今日の道筋 ― 「簡単」で挟んで、真ん中で折り返す
MCPサーバーは “AIに何でも触らせる仕組み” ではなく、“渡してよい操作だけを切り出す受付窓口” 。この一軸で全体が つながります。 1 導入 結論先出し → なぜ今 → 問題提起 S1–S4 2 簡単さ 持ち帰り① MCPとは → 10行で動く → 切り出せる S5–S7 3 転換 その簡単さが、そのまま罠になる S8 4 危険の構造 指示とデータ → トライフェクタ → 1つ断つ S9–S12 5 最低限の対策 持ち帰り② read-only → 入力制限 → redaction → 再結合防止 S13–S16 6 実例 → 結び 私の構成 → 簡単さに回帰 S17–S18 00
0 1 — 今 日 の ゴ ー ル 今日、持ち帰ってほしい2つのこと
持ち帰り ① 作るのは、 驚くほど簡単 関数にデコレータを1つ付けるだけ。 本当に10行で動きます。 ! 持ち帰り ② 無防備な導入は、 危険 10行で作れる = 10行で “機密を外に出す裏口”も作れる。 この2つは矛盾しません。「簡単」で、前後を挟みます。 02
0 2 — な ぜ 今 これは、ニッチな話ではない Claude Desktop や
Microsoft のエージェントが急速に普及。AIと外部をつなぐ共通規格が MCP です。 1万超 公開MCPサーバー 2025年末・Anthropic報告(概数) 事実上の標準 OpenAI / Google / Microsoft が採用 中立な団体が管理する規格へ(特定企業のもので はない) もうすぐ 当然に 自分でMCPを作る それが特別なことでなくなる ※ 開発キット(SDK)は月間およそ9,700万ダウンロード規模。数字はいずれも概数・〜時点の値。 03
0 3 — 問 題 提 起 みんなが作り始める前に、握っておきたい 作れるという「自信」 10行で動く。インフラもデプロイも要らない。
守れるという「作法」 何を見せ、何をさせないか。境界を決める。 ― この2つを、セットで。 04
0 4 — 復 習 復習:MCPは「AIの拡張口」をそろえた共通規格 2024年11月、Anthropic が公開したオープン規格。AIアプリと外部ツール・データの“つなぎ方”を1つに統一する。 ホスト(host) AIアプリ本体
Claude Desktop・IDE など。中で MCP クライア ントを動かす。 MCPサーバー 外部ツール側 1機能=1サーバーで動く。 今日の主役はここ。 公開するもの tool & resource tool=呼べる操作(関数)/resource=読めるデー タ。 たとえると 「AIにとっての USB-C」 ― つなぎ方が1つだから、対応AIならどれからでも挿せる。 05
0 5 — そ も そ も M C P
と は MCP=「呼べる関数」を作法どおり外に出すだけ AIエージェント Claude など read-only → MCPサーバー 同じPC内の1プロセス → リソース PC / クラウド / 端末画面 ― デプロイもインフラも要らない 同じPCでプログラムが1つ立つだけ ― 既製コネクタも中身は同じ 仕組みは変わらない ― 違いは「公開範囲を自分で決められる」こと 06
0 6 — 山 場 10行で、動く from fastmcp import FastMCP
mcp = FastMCP("sysmon") @mcp.tool def agent_health(target: str) -> str: return check_status(target) mcp.run() ― 関数に デコレータを付けるだけ ― 型ヒントから スキーマ自動生成 ― uv run server.py で即接続 ― 検証・型変換は フレームワーク任せ 07
0 6 — 実 例 これくらいで、もう動く ― 私の場合 特別な仕組みは無し。さっきの作法のまま書いた小さなサーバーが、手元で毎日動いています。 08
0 7 — 切 り 出 せ る なぜ自分で作るのか ―
「ちょうど」に作れて、「ちょうど」に絞れる 価値① 適合 ― できる 既製では「痒いところに手が届かない」 自前なら、やりたいことを “ちょうど”の形で作れる 価値② 安全 ― 絞れる 既製は「公開範囲が広すぎる」 必要な操作だけ、 “ちょうど”の範囲で渡せる だから、自分で作る ― “できる” と “安全” は、自作で両立する。 09
0 8 — 転 換 その「簡単さ」が、 そのまま罠にな る 10行で作れる =
10行で“機密を外に出す裏口”も作れる run_command(cmd)(何でも実行)や read_file(path)(何でも読む)のような 「全部できる便利ツール」に 流されやすい。 10
0 9 — 指 示 と デ ー タ AIは「指示」と「データ」を区別できない
prompt injection(不正な指示の混入) 指示も、ログも、Webも ― AIには すべて同じ “読み物” 。 攻撃 者が紛れ込ませた文字列が、 “指示”として実行されうる。 どこから紛れ込む? ・ ログ ・ 端末(ターミナル)の画面 ・ メール・チャット ・ Webページ ・ ドキュメント 11
1 0 — リ ー サ ル ・ ト ラ
イ フ ェ ク タ リーサル・トライフェクタ ― 危険な3つの条件 3つが揃った瞬間に、データは盗まれる。 ― Simon Willison が2025年に定式化 12
1 1 — 防 御 防御は ―「1つ断てば、崩れる」 3つが同時に揃って、はじめて攻撃が成立する。どれか1つを断てば、崩れる―全部を塞ぐ必要はない。 条件 ①
データ 絞れるが、 ゼロにしにくい 条件 ② 外部入力 ほぼ、 防げない 条件 ③ 送信 ここを断つのが 現実解 13
1 2 — コ ネ ク タ へ の 答
え 「既製コネクタでよくない?」への答え コネクタは“敵”ではない。が… SlackやGoogleドライブを「フ ル接続」すると、3つの条件が最初から組み上がる: ① 社内チャット・ファイル(機密データ) ② 誰からでも投稿・共有できる = 外部の文章が入ってくる(外部入力) ③ メッセージ送信・外部共有(外部送信) しかも“1つだけ外す”がやりにくい。 読むだけ(read-only)に絞れば ③ は消せる 。 だから、自前MCPを作る意味 ― 多くはコネクタでよい(便利さは本物) ― 自作は“ゼロから作り直す無駄”ではない ― 範囲が広すぎる時、境界を自分で選ぶ手段 ― read-onlyに絞れる = ③ を外せる 論点は「コネクタか自作か」ではない ― 3つの条件を意識しているか、だ。 14
1 3 — 対 策 ① ③を断つ ― read-only &
固定機能 AIに「読むだけ」の道具しか渡さなければ、データを外へ送り出す手段がない。= 条件③(外部送信)が、そもそも成立しない。 ◦ 良い例 get_status(server) サーバーの状態を返すだけ。 読むだけ/できることは固定。 × 悪い例 run_shell(command) read_any_file(path) gcloud(args) docker(args) restart / deploy / 送信を入れない。これだけで ③の条件が消える。 15
1 4 — 対 策 ② 入力を絞る ― 自由入力を「選択肢」と「範囲」に縛る 対象
= 決まった一覧から選ぶ(自由入力させない) 提供元 = AWS / GCP から選ぶ 期間 = 今日 / 今週 / 今月 から選ぶ 件数 = 上限つきの数字(最大100件 など) 自由文字列を1つ残すだけで、injectionの通り道になる。 16
1 5 — 対 策 ③ ①を薄める ― 黒塗り(redaction)&鍵を置かない 1
返す前に、機械的に黒塗りする 「隠してね」とAIにお願いするだけでは不十分。コードで落とす。 2 認証情報(鍵)を手元に置かない 鍵は中継サーバー側へ。手元が乗っ取られても被害を最小に。 17
1 6 — 対 策 ④ 全体で“3つを再び揃えない” トライフェクタは “AI全体”の性質。自分のMCPが安全でも、別のツールや隔離環境の外向き通信で ③が復活する。
信頼境界ごとに分ける 境界を越えて、分けた条件が再び揃わないよう設計する。 権限を見える化・監査する どのAIに何を見せ、送信能力が無効かを確かめる。 18
1 7 — 補 足 補足:私の場合 ― 3つの実例 あくまで一例。どれも「目的をひとつに絞り、読むだけに限定」しています。 sysmon
目的 PC・サーバーが今ちゃんと動いているかを、その場 で確認したい。 セキュリティ 状態を読むだけ。再起動・デプロイは持たせない( read-only)。 cloud-cost 目的 AWS / GCP の料金を、AIに集計・説明させたい。 セキュリティ 鍵は手元に置かず中継サーバー側へ。providerは選 択肢に限定。 tmux-capture 目的 作業中のターミナル画面を、AIに要約させたい。 セキュリティ 読み取りのみ。取得する行数に上限を付ける。 「権限を渡す仕組み」ではなく、「渡してよい操作だけを切り出す受付窓口」 19
結 び 難しいのは「作ること」じゃない。 「境界を決めること」だ。 ― 作るのは10行。身構えるほどではない。 ― 考えるべきは“何を見せ、何をさせないか” = 誰でもできる判断。
― 最低限③を断ってread-onlyで始める = 安全側から入れる。だから ― 作れる。 権限は渡さない、操作だけ切り出す。 20