MCP

MCPサーバー構築ガイド:Node.js・TypeScript と Pythonでローカルから本番まで

ⓘ本ページはプロモーションが含まれています

お得なお知らせ

スポンサードリンク
タイプ別にすぐ選べる

AIエージェント開発、どこから始める?

MCP・Claude・LangGraph…進化が速い領域こそ「体系学習 or 1冊集中」のどちらかを選ぶのが近道です。

▷ プロ講師から体系的に学んで"仕事で使えるAIエンジニア"になりたい人

DMM 生成AI CAMP 学び放題|無料セミナー有り▶

▷ 独学派で、まず1冊を読み込んで手を動かしたいエンジニア

【kindle本】Claude CodeによるAI駆動開発入門 ▶

※スクールは説明会のみでもOK。書籍は紙・電子どちらでも

▶ 実装リファレンスには 【kindle本】実践Claude Code入門が便利です。


スポンサードリンク

MCP の概要と業務活用例

要素 説明
Model 呼び出す大規模言語モデル(Claude、GPT‑4 など)
Context リクエストごとの状態情報。会話履歴やユーザー属性、ドメイン固有のメタデータを格納
Host MCP エンドポイントを提供するサーバー側コンポーネント。モデル呼び出し・ツール実行を仲介
Client Cursor、Windsurf など MCP に対応したフロントエンド。HTTP POST で Host にリクエスト送信
Server Host がデプロイされているインフラ(VM、K8s、サーバーレス等)

ポイント
*「モデルは外部サービス」「業務ロジックは自前サーバー」という責務分離により、機密情報が外部 LLM に漏れない安全な構成を実現できます。

業務シーンの具体例

シナリオ フロー概要
社内 AI アシスタント Slack で質問 → Slack Bot(Client)が /mcp/v1/chat に POST → Host が社内データベースと組み合わせて Claude を呼び出し、回答を返す
ナレッジ検索 & 要約 文書管理システムがメタ情報(最終更新日・タグ)を Context として送信 → Model が最新ドキュメントだけを対象に要約し、結果を UI に表示
業務フロー自動化 業務システムから「請求書作成」指示を送ると、Host が内部 RPA ツールを呼び出し、生成したテキストを Model で校正して返す

開発環境構築

1. Node.js / TypeScript 環境

補足corepack enablepnpm がシステムに組み込まれ、バージョン管理が楽になります。

2. Python 3.12 環境

注記:MCP 用の公式 SDK は 2024 年 5 月時点で公開されていません。その代わりに JSON Schema + AJV(Node)/pydantic(Python) によるバリデーションを推奨します。


サーバー実装のベストプラクティス

1. プロジェクト構成

package.json の主要設定例

tsconfig.json のポイント

2. JSON Schema によるリクエストバリデーション(Node)

src/mcp-schema.json

3. 実装例(src/index.ts

ポイントまとめ

  • AJV + JSON Schema が公式 SDK の代替として機能し、入力の型検証を徹底できます。
  • callModel を差し替えるだけで Claude・GPT‑4 どちらでも利用可能です。

認証・認可の具体例(JWT)

1. Node.js 側ミドルウェア

  • ベストプラクティス
  • JWT_SECRET は必ず環境変数で管理し、コードにハードコーディングしない。
  • トークンの有効期限(exp)を設定し、リフレッシュトークン方式を併用する。

2. Python (FastAPI) 側実装例

  • ポイント
  • HTTPBearer が自動で Authorization: Bearer <token> を抽出。
  • loguru による構造化ログでユーザー情報を併記し、監査に備える。

ローカルテストとデバッグ手法

1. cURL でのリクエスト例(JWT 付き)

期待されるレスポンス

2. VS Code のデバッグ設定(Node)

.vscode/launch.json

ブレークポイントを validate(req.body) 前後に置くと、スキーマ違反時の内部状態がすぐ確認できます。

3. ログの可視化

  • Node: pino-pretty を dev ディペンデンシーに追加し、npm run dev | pino-pretty で整形表示。
  • Python: loguru の標準出力はカラー対応なので、ターミナル上で見やすくなります。

本番運用に向けたセキュリティ対策と Docker デプロイ

1. 脆弱性情報の取り扱い

2024 年 4 月に Anthropic が報告した「MCP に関する JSON デシリアライズ脆弱性」は、公式 SDK が存在しないことから多くの実装で独自バリデーションが行われていた点が問題でした。
現在は JSON Schema + AJV / pydantic の組み合わせで additionalProperties: false を明示的に設定すれば、同様のインジェクションは防げます。

参考情報(英語)
Anthropic Security Advisory – “MCP JSON Injection” (2024‑04‑15) — https://www.anthropic.com/security/advisories/2024-04-mcp-json-injection

2. 認可レイヤーの強化

  • RBAC:JWT の scope クレームで「chat:write」「admin」等を定義し、エンドポイントごとにチェック。
  • Rate Limitingexpress-rate-limit(Node)や FastAPI の slowapi を利用し、1 分間あたりのリクエスト上限を設定。

3. Docker マルチステージビルド

4. CI/CD パイプライン(GitHub Actions の例)

5. 運用時のモニタリング

項目 推奨ツール
ログ集約 Loki + Grafana、もしくは Elastic Stack
メトリクス Prometheus(express-prom-bundle
アラート Alertmanager → Slack/メール

まとめ

1️⃣ MCP の責務分離で、機密データを自前サーバーに残しつつ外部 LLM を安全に利用できる。
2️⃣ Node と Python の環境構築nvm / pnpmpyenv / virtualenv が標準的で、バージョン衝突を防げる。
3️⃣ 公式 SDK が未提供のため、JSON Schema + AJV(Node)/pydantic(Python) を用いた入力検証が必須。
4️⃣ JWT による認証+RBAC・レートリミットで認可を強化し、外部からの不正アクセスを防止する。
5️⃣ Docker のマルチステージビルド + CI/CD(テスト・脆弱性スキャン)で本番環境への安全なデプロイが実現できる。

詳細コードやサンプルリポジトリは下記 GitHub に公開しています。
GitHub: https://github.com/your-org/mcp-server-sample

このガイドを元に、社内の AI アシスタントやナレッジ検索サービスを安全かつ高速に構築してください。 🚀

スポンサードリンク

お得なお知らせ

スポンサードリンク
タイプ別にすぐ選べる

AIエージェント開発、どこから始める?

MCP・Claude・LangGraph…進化が速い領域こそ「体系学習 or 1冊集中」のどちらかを選ぶのが近道です。

▷ プロ講師から体系的に学んで"仕事で使えるAIエンジニア"になりたい人

DMM 生成AI CAMP 学び放題|無料セミナー有り▶

▷ 独学派で、まず1冊を読み込んで手を動かしたいエンジニア

【kindle本】Claude CodeによるAI駆動開発入門 ▶

※スクールは説明会のみでもOK。書籍は紙・電子どちらでも

▶ 実装リファレンスには 【kindle本】実践Claude Code入門が便利です。


-MCP