私は HolySheep AI のシニアアーキテクトとして、これまで 40 社以上の生成 AI 導入プロジェクトを支援してきました。先月、急成長中の D2C アパレルブランド「Atelier Mira」の CTO 補佐として参画した際、テレビ番組への露出をきっかけに注文数が通常の 8 倍、ピーク時には秒間 14 リクエストもの問い合わせチャットが殺到しました。もともと Zendesk のマクロで対応していたのですが、「S23 サイズの在庫は?」「注文 #A10294 の配送はいつ届く?」のような SKU と配送と返品を横断する問い合わせには限界があります。そこで、在庫・配送・返品の各システムに散らばった API を 1 本の「ツール群」にまとめ、生成 AI から安全に呼び出せるようにする──つまり MCP サーバーを社内で構築しました。本記事では、同じ構成を個人開発者からスタートアップ規模で再現する手順を、コード付きで公開します。

3 つのユースケースで見る MCP サーバー導入の必然性

MCP(Model Context Protocol)とは何か

MCP は 2024 年末に Anthropic が公開した、モデルに対して外部ツール・データソースを JSON-RPC で安全に登録・呼び出しするためのプロトコルです。従来は OpenAI の Function Calling など各社独自仕様でしたが、MCP は「サーバー側にツール定義を置いておくだけで、Claude・GPT・Gemini といった複数モデルから同一インターフェースで呼べる」オープン仕様となっています。Claude Code は CLI レベルで MCP サーバーを自動探索するため、サーバーさえ立てればコード 1 行書くことなくツールが使えるようになります。

全体アーキテクチャ

HolySheep AI を経由する 3 つの理由

実装手順 1:HolySheep API キーの発行と環境設定

HolySheep 管理画面の「API Keys」から新規キーを発行し、Claude Code が読み込むシェル環境変数として設定します。ベース URL は必ず https://api.holysheep.ai/v1 を使い、api.openai.comapi.anthropic.com を直接叩かないようにしてください。

# ~/.zshrc に追記(bash は ~/.bashrc)
export ANTHROPIC_BASE_URL="https://api.holysheep.ai/v1"
export ANTHROPIC_API_KEY="YOUR_HOLYSHEEP_API_KEY"
export HOLYSHEEP_BASE_URL="https://api.holysheep.ai/v1"
export HOLYSHEEP_API_KEY="YOUR_HOLYSHEEP_API_KEY"

反映して疎通確認

source ~/.zshrc curl -s "$HOLYSHEEP_BASE_URL/models" \ -H "Authorization: Bearer $HOLYSHEEP_API_KEY" | jq '.data[].id' | head -20

実装手順 2:Python で MCP サーバーを書く

FastMCP を使うと、デコレータ 1 つでツールが登録でき、型ヒントから JSON Schema が自動生成されます。在庫・配送・返品の 3 ツールを定義した最小実装を示します。

# mcp_ecom_server.py
import json
from datetime import datetime
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("AtelierMira-Tools")

INVENTORY_DB = {
    "SKU-1001": {"name": "Tシャツ M", "stock": 42, "warehouse": "JP-1"},
    "SKU-1002": {"name": "パーカー L", "stock": 8,  "warehouse": "JP-2"},
    "SKU-1003": {"name": "キャップ",   "stock": 0,  "warehouse": "JP-1"},
}

@mcp.tool()
def check_inventory(sku: str) -> str:
    """指定された SKU の在庫数と倉庫コードを返す"""
    item = INVENTORY_DB.get(sku)
    if not item:
        return json.dumps({"sku": sku, "stock": 0, "error": "not_found"})
    return json.dumps({
        "sku": sku,
        **item,
        "checked_at": datetime.now().isoformat(timespec="milliseconds"),
    })

@mcp.tool()
def get_tracking(tracking_no: str) -> str:
    """配送追跡番号から現在の状況と ETA を返す"""
    # 実システムではヤマト/DHL の API を叩く
    return json.dumps({
        "tracking_no": tracking_no,
        "status": "in_transit",
        "last_location": "大阪中央 hub",
        "eta": "2026-03-15T18:00:00",
    })

@mcp.tool()
def request_return(order_id: str, reason: str) -> str:
    """返品リクエストを作成し受付番号を発行する"""
    ticket = f"RET-{datetime.now().strftime('%Y%m%d%H%M%S')}"
    return json.dumps({
        "order_id": order_id,
        "ticket": ticket,
        "reason": reason,
        "status": "accepted",
    })

if __name__ == "__main__":
    mcp.run()

実装手順 3:Claude Code に MCP サーバーを登録する

プロジェクト直下に .mcp.json を置くと、Claude Code が起動時に自動検出します。env セクションで HolySheep のキーを渡せるため、サーバー側からも外部 API を呼びやすい構成になります。

{
  "mcpServers": {
    "atelier-mira": {
      "command": "python3",
      "args": ["/opt/mcp/mcp_ecom_server.py"],
      "env": {
        "HOLYSHEEP_API_KEY": "YOUR_HOLYSHEEP_API_KEY",
        "HOLYSHEEP_BASE_URL": "https://api.holysheep.ai/v1"
      }
    }
  }
}

登録後、ターミナルで claude を起動し、自然言語でツール呼び出しを観察します。

$ cd /path/to/project
$ claude
> SKU-1001 の在庫を確認して、大阪から明日届くか教えて

▸ check_inventory({"sku": "SKU-1001"})
  → {"sku":"SKU-1001","name":"Tシャツ M","stock":42,"warehouse":"JP-1", ...}
▸ get_tracking({"tracking_no":"YGZ-2026-0314-001"})
  → {"status":"in_transit","last_location":"大阪中央 hub","eta":"2026-03-15T18:00:00"}

まとめ:Tシャツ M は