Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
権限は渡さない、操作だけ切り出す ― 自前MCPサーバー実践入門
Search
西岡 賢一郎 (Kenichiro Nishioka)
June 27, 2026
Technology
100
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エージェントを雇う前に決める5つのこと
knishioka
1
180
顧客に説明できる、 安全なAIの使い方 - 会計士・税理士向けAI活用勉強会 第2回
knishioka
0
110
ローカルLLM、実際どこまで使えるか
knishioka
0
72
会計士・税理士向け AI活用勉強会第1回
knishioka
0
120
AIガバナンス実践 - 生成AIコネクタのデータ漏洩リスクと実務対策
knishioka
0
280
データサイエンスの現場から学ぶ 成功と失敗の実像と生成AI時代の展望
knishioka
0
120
ハーネスエンジニアリング入門
knishioka
0
830
OpenClawでPM業務を自動化
knishioka
2
710
Claude Cowork Plugins を読む - Skills駆動型業務エージェント設計の実像と構造
knishioka
0
760
Other Decks in Technology
See All in Technology
Minecraft JavaのMODをSwiftで作る
1mash0
0
200
技術的負債から考える、AI時代のエンジニアリング投資 — ビズリーチの技術的負債と向き合った経験から、変更し続けられるソフトウェアを考える/ technical-debt-con2026
visional_engineering_and_design
4
3.5k
SREの視点で考えるSIEM活用術 〜AWS環境でのセキュリティ強化〜
cscengineer
PRO
0
170
30座EKS, 180次升級淬煉的EKS Upgrade Skill 的歷程
eric8230
0
210
beyond jj: config & tools ecosystem
indirect
0
5.8k
Oracle Cloud Network Path Analyzerを試してみた/I Tried Out Oracle Cloud Network Path Analyzer
masakiokuda
1
110
C#コードの結合を可視化する Roslyn解析による設計改善と リファクタリング判断
dora56
0
330
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
2.3k
.NET WebAssemblyで実現するクライアントサイドAI推論:NuGetからViteまで、2つのエコシステムを繋ぐビルド戦略
yamachu
1
440
Why Agent Cost Needs Observability
nttcom
0
120
その Lambda、8分で 管理者権限まで奪われます
k1nakayama
7
3.5k
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
3
2.5k
Featured
See All Featured
Designing Experiences People Love
moore
143
24k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
550
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
290
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
360
The Spectacular Lies of Maps
axbom
PRO
1
1k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
550
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
520
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
600
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
710
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Unsuck your backbone
ammeep
672
58k
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