
NVIDIA Japan の NPN Partner Agentic AI Bootcamp に参加してきました
はじめに
こんにちは、クラスメソッド製造ビジネステクノロジー部の森茂です。
2026 年 6 月 17 日、NVIDIA Japan とマクニカ主催の「Japan NVIDIA NPN Partner Agentic AI Bootcamp」に参加してきました。NPN(NVIDIA Partner Network)パートナー企業の社員限定で開催される、終日ハンズオン形式のクローズドイベントです。MCP・NVIDIA NIM・LangGraph・NeMo Agent Toolkit を 1 日でひととおり触り、最後に Challenge セッションで習得度を確認するという、なかなか濃い構成でした。
「NPN 限定なら参加できなかった」という方もいるかと思いますが、教材自体は openhackathons-org/agentic-ai-bootcamp で Apache 2.0 ライセンスで公開されています。日本語化されたノートブックも揃っているので、社内勉強会のネタとして写経するだけでも十分に元が取れそうですね。
この記事では、当日のアジェンダと各 Lab で触れた要点、Challenge の構成、そして印象に残ったポイントを参加レポートとしてまとめます。
ひとことでまとめると
全体としては、クラウドとローカルの NIM から始まり、MCP、LangGraph、NeMo Agent Toolkit へと 1 日で順番に触っていく構成で、エージェント開発の「層」が体感できる組み立てでした。仕上げの Challenge は架空のレコード EC「Harmony Records」のカスタマーサポートを MCP で拡張するというストーリー仕立てになっていて、午前中に触ったレイヤーを総動員する内容になっています。教材リポジトリ自体は GitHub で公開されているので、参加できなかった方も社内ハンズオンとして再現できそうですね。
イベント概要
Day 0(オンライン Dry Run)と Day 1(インパーソンのハンズオン本編)の 2 部構成になっています。
- 開催日: 2026 年 6 月 17 日 9:30〜19:30(JST)
- 会場: Macnica 品川オフィス
- 参加対象: NVIDIA NPN パートナー社員
- 主催: NVIDIA Japan + マクニカ + OpenACC organization

教材のリポジトリと、NVIDIA 側のエンドポイントとして使う API Catalog はこちらです。
実行環境は Brev で立てた共有 GPU インスタンスが事前に配布され、Jupyter Notebook 上から API Catalog の NIM エンドポイントを呼び出す形でした。事前案内でも環境確認がサポートされていて、当日は「環境構築で半日溶けた」みたいなトラブルが起きにくいのはありがたかったです。
当日のアジェンダ
ハンズオン本編のアジェンダはおよそ以下のとおりでした。
| 時間 | セッション |
|---|---|
| 10:00 - 10:30 | Introduction and Cluster |
| 10:30 - 11:50 | Lab 1: Using NVIDIA NIM via Cloud and Local |
| 12:35 - 13:20 | Lab 2: Introduction to Model Context Protocol (MCP) |
| 13:20 - 13:50 | Lab 3: Low-Level MCP Server Implementation |
| 14:00 - 14:55 | Lab 4: Building Agentic Workflows with LangGraph |
| 15:05 - 16:45 | Challenge Description and Self-Style Challenge |
| 16:55 - 17:25 | Challenge Solution (Interactive Session) |
教材リポジトリの tutorial/jupyter_notebook/ に 01_inference_endpoint_ja.ipynb から 06_challenge_ja.ipynb までのノートブックが並んでいて、ほぼノートブックを 1 冊ずつ順に進めていくスタイルでした。
ここからは、各 Lab で何に触れたかと、自分が印象に残ったポイントを順に振り返ります。
Lab 1 で NIM をクラウドとローカルから叩く
最初の Lab は NVIDIA NIM(NVIDIA Inference Microservices)のウォームアップです。build.nvidia.com の API Catalog にホストされた NIM エンドポイントと、ローカルの Docker で立てた NIM の両方に対して、requests ライブラリで OpenAI 互換 API を叩いて推論するという内容でした。
ポイントは、NIM が OpenAI 互換のスキーマを話してくれることです。クラウドのエンドポイントもローカル Docker のエンドポイントも、URL とモデル名を切り替えるだけで同じクライアントコードがそのまま動きます。後の Lab で出てくる NeMo Agent Toolkit でも、base_url を差し替えるだけで「開発時はクラウドの大きいモデル、本番は社内 GPU の NIM」のような構成が実現できるという話につながっていきます。
「ローカル LLM とクラウド LLM を切り替えながら検証したい」というモヤモヤを抱えていた身としては、ここを最初に押さえておくのは入り口として理にかなっていたかなと思っています。
Lab 2 で FastMCP に触れる
Lab 2 は MCP(Model Context Protocol)の入門編で、高レイヤーの SDK である FastMCP でツールを定義する流れでした。デコレーター 1 つで関数を MCP ツール化できるシンプルさが売りで、教材の mcp_server.py もこれくらいの分量で書かれています。
# 引用元: openhackathons-org/agentic-ai-bootcamp tutorial/jupyter_notebook/mcp_server.py
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("simple-math")
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers together."""
return a + b
if __name__ == "__main__":
mcp.run(transport="stdio")
クライアント側では mcp Python SDK の ClientSession を stdio_client 越しに張り、list_tools() でツール一覧を取得し、call_tool() で呼び出すという基本動作を順に体験します。MCP は「Anthropic が出した新しいプロトコル」というふんわりした認知の方も多そうですが、サーバーサイドのコードがここまでシンプルだと自分でも書ける気がしてくるので、最初の心理的ハードルを下げる作りになっていますね。
Lab 3 で Low-level SDK と HTTP MCP サーバーを書く
Lab 3 は MCP のローレベル SDK での実装です。FastMCP のような抽象化レイヤーをいったん解いて、@server.list_tools() で JSON Schema を手で書き、@server.call_tool() で arguments を検証してから処理に渡す、という MCP の素の挙動を理解する Lab でした。
# 引用元: openhackathons-org/agentic-ai-bootcamp tutorial/jupyter_notebook/mcp_server_low_level.py
server = Server("simple-math")
@server.list_tools()
async def handle_list_tools() -> list[types.Tool]:
return [
types.Tool(
name="add",
description="Add two numbers together",
inputSchema={
"type": "object",
"properties": {
"a": {"type": "number"},
"b": {"type": "number"},
},
"required": ["a", "b"],
},
),
]
@server.call_tool()
async def handle_call_tool(name: str, arguments: dict | None):
if not arguments or "a" not in arguments or "b" not in arguments:
raise ValueError("Missing required arguments: a, b")
return [types.TextContent(type="text", text=str(arguments["a"] + arguments["b"]))]
後半では同じツールを Starlette + Uvicorn の上に乗せて HTTP(Streamable HTTP)で公開する流れまでやります。stdio はローカル開発の subprocess 用、HTTP は本番のマイクロサービス用、と切り分けの理屈が一気にクリアになりました。Challenge では HTTP の MCP サーバーを実装することになるので、ここで構造を頭に入れておくのが地味に効いてきます。
Lab 4 で LangGraph の State / Node / Edge を組む
Lab 4 は LangGraph 編です。StateGraph を使って、State(情報の共有掲示板)と Node(処理単位)と Edge(接続)を組み立て、Tool 呼び出し付きの ReAct エージェントを作るところまで一気にやりました。
技術的に印象に残ったのは以下の組み合わせです。
Annotated[list, add_messages]で会話履歴を State に持たせるwith_structured_output(Pydantic スキーマ)で LLM の出力を JSON に強制し、Intent Classifier の入口に置くInMemorySaverを CheckPointer として渡し、thread_id単位でマルチターン会話を保持interruptでグラフの途中に人間の確認ステップを差し込む(Human-in-the-loop)
「LangGraph の interrupt を本気で使うとなにが嬉しいか」が、Challenge の返金フロー(「本当に返金しますか?」をユーザーに確認するステップ)で具体的に分かるようになっていて、教材としての段階設計が丁寧でした。State を「掲示板」とたとえる説明はかなり腹落ちしたので、社内勉強会で説明するときも借りようかなと思っています。
Lab 5 で NeMo Agent Toolkit の YAML と Phoenix を試す
Lab 5 は NeMo Agent Toolkit(NAT)の運用機能編です。NAT は LangGraph の上位レイヤーで、「ツールやモデルや Workflow を YAML で抜き差しできる」「Phoenix(Arize)でトレースを可視化できる」といった、エージェントを本番運用するときに効いてくる機能群を提供してくれます。
教材の movie_workflow.yml を抜粋すると、こんな構造になっています。
# 引用元: openhackathons-org/agentic-ai-bootcamp tutorial/jupyter_notebook/movie_workflow.yml
function_groups:
mcp_movies:
_type: mcp_client
server:
transport: streamable-http
url: 'http://127.0.0.1:${MCP_PORT}/mcp/'
llms:
nim_llm:
_type: nim
model_name: nvidia/nemotron-3-nano-30b-a3b
base_url: https://integrate.api.nvidia.com/v1
api_key: ${NVIDIA_API_KEY}
workflow:
_type: react_agent
tool_names: [mcp_movies]
llm_name: nim_llm
LangGraph で書いた MCP クライアントのコードを NAT に置き換えると、ツール接続も LLM の差し替えも YAML 数行で済むようになります。さらに telemetry セクションを足せば Phoenix にトレースが流れ、エージェントがどのツールをどの順で叩いたかを画面で追えるようになります。
正直、ハンズオン中は「LangGraph で書けたものを NAT に書き直すモチベーションがどこにあるか」が分かりにくかったのですが、「セールス部門で良かった構成を設計部門に横展開するときに YAML だけ差し替えればいい」という講師の補足でようやく腹落ちしました。エージェントを「お客さん向けに横展開する」ところまで含めて考えると、ハードコードの LangGraph から運用レイヤーをはがしたくなる気持ちが分かります。
Harmony Records カスタマーサポートを MCP で拡張する Challenge
午後の Challenge セッションは、架空のレコード EC「Harmony Records」のカスタマーサポートエージェントを MCP で拡張するというストーリー仕立てでした。教材リポジトリの challenge/ 配下にスケルトンが用意されていて、4 つのサブ課題に分かれています。自走時間は 1 時間半ほどでしたが、4 つを通しで完走するのは思ったより歯ごたえがあって、午前中の Lab で触ったものを実戦で組み直す良いリハーサルになりました。
- Invoice MCP サーバー: SQLite の Chinook DB に対して
search_invoicesとprocess_refundを Low-level MCP SDK + Streamable HTTP で公開する - QnA Agent Skill: Music / Artist / Album / Track 情報の SQL クエリ生成を補助する Agent Skill(
SKILL.md)を Progressive Disclosure パターンで書く - LLM Workflow: LangGraph で Intent Classifier → QnA / Refund エージェントのパイプラインを組み、Invoice MCP サーバーに接続し、
interruptで返金確認を差し込む - NAT Workflow: 同じ構成を
workflow.yamlで宣言し、nat runで実行できる形にする
全体像をざっくり図にするとこんな雰囲気でした。
実装で気をつけたい点として、Low-level MCP の inputSchema が JSON Schema をそのまま書くので、ここで型がズレるとクライアント側で原因不明のバリデーションエラーになります。自分は最初 process_refund の invoice_id を string で書いていて、LangGraph から呼ぶと延々ループする事態にハマりました。エラーメッセージが MCP のレイヤーで握りつぶされやすいので、まずは nat mcp client の CLI で素のレスポンスを確認してから LangGraph に組み込むほうが早いですね。
印象に残ったポイント
参加してみて、自分の中で整理がついたポイントが 4 つあります。
1 つ目は、MCP と Agent Skill の役割分担です。MCP は「どんなツールが使えるか」というツール仕様のレイヤーで、Agent Skill は「どう組み合わせて使うか」というタスク手順のレイヤーである、という整理が講義で出てきました。両方を同じレイヤーで考えていると「MCP に SQL のクエリパターンも詰め込もうか」みたいな迷いが出てくるのですが、レイヤー分けを意識すると Skill 側に逃がせるので、自分の設計のモヤモヤが減った気がします。
2 つ目は、NeMo Agent Toolkit の立ち位置です。LangGraph で組んだエージェントをそのままお客さんに納品しようとすると、構成変更のたびに Python コードを書き換える必要が出てきます。NAT の YAML で「MCP クライアント」「LLM エンドポイント」「Workflow」を宣言的に組み替えられるようにしておけば、横展開のときに Python を触らずに済む。「LangGraph と NAT は競合ではなく、層が違う」という説明が地味に効きました。
3 つ目は、教材の完成度です。Brev クラスタの dry run までセットされた状態で、ノートブックを順に進めるだけで NIM → MCP → LangGraph → NAT → Phoenix まで触れる教材は、社内のエージェント開発の入門書としても流用できそうです。「過度な期待は禁物ですが」、社内ハンズオンの素材としてはかなり再利用しがいがあるかなと思っています。
4 つ目は、講師の方が冒頭で語っていた「エージェントを自分で書く意義」の話です。いまやエージェント自体は AI エージェントに任せれば書けてしまう時代だけれど、お客さん向けにカスタマイズしたり、サブエージェントを差し込んだり、コントロールを高めたいときには、裏側でなにが起きているかをちゃんと理解しているかどうかで、出てくるものが大きく変わる、という趣旨でした。自分も普段はコードのほとんどを AI エージェントに任せている身なので、この問題意識には激しく同意できました。「動くものは作れる」と「中身を理解した上で動くものを作れる」のあいだに、エージェント開発の本当の差分がありそうですね。
会場の雰囲気としては、各企業から複数名で参加しているチームが多く、お互いに聞き合いながら進めるオフライン勉強会の良さが出ていました。TA の方々も常駐していて、詰まったところを聞けばすぐに答えが返ってくる安心感もありました。
まとめ
Agentic AI Bootcamp は、NIM・MCP・LangGraph・NeMo Agent Toolkit という個別に話題になりやすい技術を、1 日でつなげて触らせてくれる稀有な構成のハンズオンでした。Challenge も自走時間内に通すには手応えのある難易度で、座学だけでなく実装感覚もしっかり残るイベントだったかなと思っています。NPN パートナー限定とはいえ、教材自体は GitHub で公開されているので、社内勉強会のテーマとしても十分扱えそうです。
DGX Spark を持っているので、次は Lab 1 のローカル NIM 部分を自分の手元で再現しつつ、Challenge を素の Python から書き直してみたいと思っています。続編の Bootcamp は強化学習がテーマになるとアナウンスされていたので、そちらの内容もまた記事として残せればと考えています。
参考リンク
- 教材リポジトリ(Apache 2.0)
- NVIDIA NIM / API Catalog
- Model Context Protocol 公式
- LangGraph ドキュメント
- NVIDIA NeMo Agent Toolkit
- 関連する自分の過去記事
本記事中のコードスニペットは openhackathons-org/agentic-ai-bootcamp より引用しました(Apache License 2.0)。








