このレッスンの一行サマリ
MCPを使う側から作る側へ。Lesson 04のPubMed検索を1日でMCPサーバーとして包めば、Claudeに「論文取って」と話すだけで動く。
このレッスンで終わる頃には
- 「MCPを作る側」の発想が腹落ちしてる
- Lesson 04のPubMed検索をMCPサーバーとして包める
- 自分のClaude Codeに「PubMed検索」が道具として生える状態
- GitHubに公開して、他の人にも配れる
Lesson 06の続き
Lesson 06で 既存のMCPを繋ぐ やり方をやりました。GA / Search Console / DB(Turso/Supabase)。
これらは 公式に用意されてる道具 です。
ここから先のステップは:
公式にない道具を、自分で作って配る。
たとえば、Lesson 04 で作った PubMed 検索ツール。あれは コマンドラインからしか叩けない 状態でした。
これを MCPサーバーとして包む と、Claude Code に「PubMedで小児喘息の論文取って」と話しかけるだけで動く状態になります。
Lesson 04: pubmed-search "小児喘息" ← ターミナルで叩く
↓ MCPサーバーとして包む
Lesson 07: Claudeに「小児喘息の論文取って」← 話しかけるだけ
MCPサーバーが繋ぐ3者
Claude Code
話しかける側
自作MCPサーバー
Claudeから呼ばれる中継ぎ
外部API
PubMed等の本体
MCPサーバーって何
MCPサーバー = Claude Code(や対応AI)に 道具を提供する小さなプログラム。
| 役割 | 例 |
|---|---|
| データを取ってくる | PubMed検索 / 天気取得 / 自社DBクエリ |
| データを書き換える | カレンダーに予定追加 / Notion更新 |
| 計算する | 専門領域の独自計算(薬用量・統計処理) |
| 外部APIを叩く | 自分が普段使うサービスを Claude に繋ぐ |
公式MCPがカバーしないものを、自分で作る。それが「自作MCP」。
なぜ作るのか
3つあります。
理由1:自分の作業を完全に手放せる
ターミナルで pubmed-search を叩くのと、Claudeに「論文取って」と話しかけるの、似てるようでだいぶ違います。
前者は「自分が能動的に検索」、後者は「Claudeが文脈を踏まえて検索」。
例:「先週話してた喘息の話、最新の論文ある?」と話せば、Claudeが「喘息」というキーワードを抽出してMCPで検索してくれます。
理由2:他のツールと組み合わせられる
MCPサーバーにすると、Claude Code は 複数のMCPを組み合わせて使う ようになります。
例:「PubMedで小児喘息を検索して、結果を Notion の研究メモページに追記して」
→ PubMed MCP で検索 → Notion MCP で書き込み、を1コマンドで。
理由3:人に配れる
GitHubに公開すれば、同じ専門領域の同僚も claude mcp add の1コマンドで自分用のMCPとして導入できます。
Shin氏は動画で、自作のGSC(Google Search Console)MCPを公開してました。1人が作ると、何百人も恩恵を受ける構造です。
最小MCPサーバー:Hello World
まずは「動く最小単位」を1つ作って、感覚を掴みます。
Claude Codeに、こう投げてください:
Pythonで、最小のMCPサーバーを作ってください。 ツールは1つだけ:
helloを呼ぶと「Hello from MCP!」を返す、それだけ。 UVで動かせる形に。
これでだいたい30〜50行の1ファイルが返ってきます。
# 構造のイメージ(Claude Codeが書いてくれる)
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("my-first-mcp")
@mcp.tool()
def hello(name: str = "World") -> str:
"""挨拶を返す"""
return f"Hello from MCP, {name}!"
if __name__ == "__main__":
mcp.run()
Claude Code に繋ぐ:
claude mcp add my-first --command "uv run my_mcp.py"
これで Claude Code に「helloツール使って」と話せば、Hello from MCP, World! が返ってきます。
ここまでで MCPサーバーの仕組み が動きました。
既存ツールをMCPで包む3ステップ
CLIツール
Lesson 04のpubmed-search
MCPで包む
FastMCPで30〜50行
Claudeから呼ぶ
話しかけるだけで起動
PubMed検索をMCPで包む
Hello World が動いたら、Lesson 04 で作った PubMed 検索ツールを、MCPの中に入れます。
Claude Codeに:
Lesson 04 で作った PubMed 検索ツール(
pubmed-search)を、MCPサーバーとして包んでください。 ツールは1つ:pubmed_search(query, max_results=10)で、論文タイトル・著者・年を返す。 APIキーは環境変数NCBI_API_KEYから。 UVで動かせる単一ファイル。
これでPubMed MCPが完成します。
繋ぐ:
claude mcp add pubmed --command "uv run pubmed_mcp.py"
繋いだら Claude Code に話しかける:
小児喘息の最新論文10本、タイトルだけ教えて
これで Claudeがあなたのカスタムツールを呼び、PubMedを検索し、結果を整理して返す という連鎖が走ります。
動作確認のフロー
あなた → Claude Code
"小児喘息の論文取って"
↓
Claude Code がツールを選ぶ
(あなたの pubmed_search MCP)
↓
MCPサーバー起動
↓
PubMed APIを叩く
↓
タイトル・著者・年を整形
↓
Claude Code に結果を返す
↓
Claude が読みやすく整理
↓
あなた ← 「最新10本はこちらです...」
最初は時間がかかるかもしれませんが、1度動いたら、毎日の論文チェックが3秒で終わる ようになります。
GitHubに公開して配る
自作MCPは、GitHubに上げると他の人も使えます。
gh repo create my-pubmed-mcp --public --source=. --push
--public にして、READMEに「使い方」を3行書く:
# my-pubmed-mcp
PubMed 論文検索を Claude Code から使えるようにする MCP。
## 導入
1. `git clone https://github.com/[your-name]/my-pubmed-mcp`
2. `claude mcp add pubmed --command "uv run /path/to/pubmed_mcp.py"`
3. `NCBI_API_KEY` を環境変数で設定(NCBIで無料登録)
## 使い方
Claude Code に話しかけるだけ:「[キーワード] の最新論文取って」
これだけで、世界中の同業者があなたのMCPを使えます。
ソロ開発の 「1人が作って多数が恩恵」 という構造を、自分が提供する側で体感できます。
限界と次の一歩
自作MCPの注意点:
| 観点 | 注意 |
|---|---|
| APIキー | MCPサーバー側の環境変数で管理。GitHub公開時は .env を .gitignore で除外 |
| 個人情報 | 患者データ等を扱うMCPは公開しない、ローカル専用に |
| レート制限 | 外部APIのレート制限を踏まえて、リトライ設計を Claude Code に頼む |
| エラー処理 | Claude が読み解けるエラーメッセージを返す("Network error: please retry"等) |
慣れてきたら、自分の業務ドメインで複数MCPを連結 していくのが次の一歩です。
例:医療職なら、
- PubMed検索 MCP
- 厚労省統計 MCP
- 薬用量計算 MCP
- 院内マニュアル検索 MCP
これらを束ねて Claude Code に繋ぐと、自分専用の医療AIアシスタント になります。
今日の宿題
3ステップで進めてください。
- Hello World MCPを作る(30分)
- Lesson 04 の PubMed 検索を MCP に包む(30分)
- Claude Code に繋いで、話しかけて動くか確認(10分)
完成したら、GitHubに --public で上げて、READMEを書いておくと将来の自分(と同業者)に役立ちます。
次のレッスン予告
ここまで来ると、もう「MCPを使う側」と「作る側」を行き来できます。
次のLesson 08は データを見て直す(PDCAループ)。MCPで集めたデータをどう改善に繋げるか、実装の段階に進みます。
明日のアクション
今日の宿題は3ステップ
- Hello World MCPを作る(30分) Claude Codeに「最小のMCPサーバーをPythonで作って」と頼む
- Lesson 04 のPubMed検索ツールをMCPで包む(30分)
- Claude Codeに繋いで、自然言語で話しかけて動くか確認(10分)
完成したらGitHubに --public で上げて、READMEを3行書いてください。それであなたは「MCPを作る側」になりました。
