mizuko
0
0
MCPサーバー実装まとめ
MCPサーバーの基本概念と初期設定
8日前
Model Context Protocol(MCP)は、AIアシスタントと外部ツールを連携させるためのプロトコルだ。MCPサーバーを構築することで、WindsurfやCursorなどのAIアシスタントから外部サービスを操作できるようになる。
初期設定には以下が必要:
- Node.js環境(v20以上推奨)
- MCP SDKのインストール
- TypeScriptの設定
- 対象サービス(今回はPaPut)のAPIキー
基本的なプロジェクト構成は以下の通り:
- package.json:依存関係の管理
- tsconfig.json:TypeScriptの設定
- src/index.ts:エントリーポイント
MCPサーバーのプロジェクト構造設計
8日前
効率的なMCPサーバー開発のためのプロジェクト構造:
この構造により、関心の分離が実現され、コードの保守性と拡張性が向上する。
MCPサーバーの基本実装(サーバー部分)
8日前
MCPサーバーの中核となるサーバー部分の実装例:
MCPツールの定義と実装
8日前
MCPサーバーでツールを定義する方法:
MCPハンドラーの実装パターン
8日前
効果的なハンドラー関数の実装パターン:
MCPサーバーのデバッグとテスト
8日前
MCPサーバーのデバッグとテストのベストプラクティス:
- ローカルテスト
-
AIアシスタントとの統合テスト Windsurfの場合は
~/.codeium/windsurf/mcp_config.json
に設定を追加 -
デバッグログの活用
- エラーケースのテスト
- 無効なパラメータ
- APIキーなしでの起動
- ネットワークエラー
- APIレスポンスエラー
- 手動テストコマンド例
MCPサーバーのコード分割と責務分離
8日前
MCPサーバーのコードを適切に分割するためのガイドライン:
-
関心の分離
- サーバー設定(server.ts)
- ツール定義(tool.ts)
- ハンドラー実装(handlers/*.ts)
- API通信(services/*.ts)
- 型定義(types/*.ts)
-
ファイル分割の利点
- コードの可読性向上
- 単体テストの容易化
- 並行開発の促進
- 変更の影響範囲の限定
-
モジュール間の依存関係
- 循環依存を避ける
- インターフェースを通じた疎結合
- 共通ユーティリティの抽出
-
拡張性の確保
- 新機能追加時に既存コードへの変更を最小化
- プラグイン的な拡張ポイントの提供
MCPサーバーのエラーハンドリング戦略
8日前
堅牢なMCPサーバーのためのエラーハンドリング戦略:
- サーバーレベルのエラーハンドリング
- ハンドラーレベルのエラーハンドリング
- パラメータ検証エラー
- APIリクエストエラー
- 予期せぬ例外
- エラーレスポンスの構造
- デバッグ情報の提供
- 開発環境では詳細なエラー情報
- 本番環境ではユーザーフレンドリーなメッセージ
- リトライ戦略
- 一時的なネットワークエラーに対するリトライ
- 指数バックオフの実装
AIアシスタントとMCPサーバーの連携設定
8日前
各AIアシスタントとMCPサーバーを連携させる設定方法:
- Windsurf
~/.codeium/windsurf/mcp_config.json
に以下を追加:
- Cursor 設定から「AI: MCP Servers」に追加:
- Claude Desktop 設定から「拡張機能」→「MCP サーバー」に追加:
- 名前:
service_name
- コマンド:
npx
- 引数:
-y your-package-name
- 環境変数:
API_KEY=your_api_key