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
120
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)
Claude Codeの接続先を選ぶ
knishioka
0
66
会計業務で始めるAI
knishioka
0
18
AIは「聞けば答える」から「任せると自分で進める」へ - JACTIMペナン地域部会・ペナン三水会講演
knishioka
0
140
AIエージェントを雇う前に決める5つのこと
knishioka
1
210
顧客に説明できる、 安全なAIの使い方 - 会計士・税理士向けAI活用勉強会 第2回
knishioka
0
140
ローカルLLM、実際どこまで使えるか
knishioka
0
110
会計士・税理士向け AI活用勉強会第1回
knishioka
0
140
AIガバナンス実践 - 生成AIコネクタのデータ漏洩リスクと実務対策
knishioka
0
330
データサイエンスの現場から学ぶ 成功と失敗の実像と生成AI時代の展望
knishioka
0
130
Other Decks in Technology
See All in Technology
Jev の中身は50行で再現できる。でも本物との差はどこにあるのか
hisuzuya
0
270
AI時代の開発はウォーターフォールに回帰する? / development-with-ai-back-to-wf
okamototakuyasr2
0
170
[FECONF-2026] 신대륙을 향한 카카오페이증권 프론트엔드 항해기 (이주승)
l1ghthouse
0
340
[General] 개발자로 해외 기업에서 일하기
skydoves
1
240
データマネジメント × 法務で作りあげる、 freeeの新しいデータガバナンスへの軌跡
freee
PRO
3
600
「作れる」と「リリースできる」の間にあったもの── PdMを外して見えた、PdMがやるべき仕事/Buildable ≠ Shippable: What Removing the PM Taught Me About the PM’s Job
yappli_developers
0
410
アクセラレーターで実現するServiceNow活用の高速化 / ServiceNow World Forum 2026
visional_engineering_and_design
0
110
AI時代のエンジニアの情報発信〜個人の発信を組織の力に変える〜
ryo_kawamata
0
6.5k
AIに任せられるFlutterコードベースを作る 〜仕様をコードで表し、ハーネスで守る〜
myohei
1
600
視野はAIに、視座は人に / ai-for-breadth-humans-for-perspective
nkzn
6
2.7k
Deep Data Security 機能解説
oracle4engineer
PRO
3
980
"計画的無茶振り"を通してAIネイティブ世代の新人を育てる
subroh0508
1
140
Featured
See All Featured
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
660
New Earth Scene 8
popppiees
4
2.7k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2.1k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
870
How GitHub (no longer) Works
holman
316
150k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
540
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
450
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
70
68k
Building Applications with DynamoDB
mza
96
7.3k
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
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