はじめに
小売業界で販売職として働きながら、Claude API(Anthropic社のAI API)とMCP(Model Context Protocol)を学び始めました。学習開始から1週間で、実際の店舗業務を想定した在庫管理ツールを作れるようになったので、その過程をまとめます。
対象読者:これからClaude APIやMCPを学びたい方、非エンジニアからAI開発を始めたい方。
MCPとは何か
Claude APIには「Tool Use(Function Calling)」という、AIが自分で用意した関数を呼び出せる仕組みがあります。ただしこれは1つのプログラムの中で完結する仕組みです。
MCP(Model Context Protocol)は、このツール提供部分を独立したサーバーとして切り出し、標準化された形で外部に公開する仕組みです。1つのMCPサーバーを、Claude Desktopや他のAIアプリなど複数のクライアントから使い回せるようになります。
作ったもの:在庫管理MCPサーバー
小売店の在庫管理を想定し、以下4つの機能を持つMCPサーバーを作りました。
-
check_inventory:商品名を指定して在庫数を確認 -
list_low_stock:在庫が少ない商品を一覧表示 -
restock:入荷処理(不正な数量入力はエラーとして弾く) - 在庫データをJSONファイルに永続化し、サーバー再起動後もデータが消えない
コードの一部を紹介します。
```python
@mcp.tool()
def check_inventory(item_name: str) -> str:
"""指定した商品の在庫数を確認する。
Args:
item_name: 確認したい商品名(例:シャンプー)
"""
stock = inventory_data.get(item_name)
if stock is None:
return f"{item_name} は在庫データに存在しません。"
return f"{item_name} の在庫数は {stock} 個です。"
```
公式ツール「MCP Inspector」を使って、実際にブラウザ上からツール呼び出しが正しく動作することも確認しました。
つまずいたポイントと解決法
環境構築だけでも何度もつまずきました。同じように始める方の参考になればと思います。
-
PowerShellの実行ポリシーでスクリプトがブロックされる:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUserで解決 -
仮想環境(venv)を作り忘れて
Activate.ps1が見つからないエラー:python -m venv venvを先に実行する必要があると気づいた -
MCPサーバーでは
print()が使えない:STDIO通信を使うMCPサーバーでは、print()が標準出力を介した通信を壊してしまう。ログを出したい場合はloggingモジュール(stderrに出力)を使う必要がある - APIキーの取り扱いの重要性:APIキーはスクリーンショットなどでも漏洩のリスクがあり、画面上に記録として残らぬよう厳重に管理することの重要性を実感した
今後の展望
小売業界での実務経験を活かし、業務課題を解決するAIエージェント・MCPサーバーの開発案件獲得を目指しています。次はClaude API単体でシフト調整を行うミニアプリも作ったので、別記事で紹介する予定です。
コードはGitHubで公開しています。