MCPツール設計の基本:機能分割・命名・権限境界を最適化し、DXを加速する実践ガイド
MCPツール設計における機能分割、命名規則、権限境界の最適な決め方を解説。保守性・拡張性・セキュリティを高め、業務効率を最大化する実践ノウハウを提供します。
目次 クリックで開く
AIが外部データやツールに直接アクセスするためのオープン標準「Model Context Protocol(以下、MCP)」の登場により、社内業務システムの在り方が激変しています。しかし、単にツールを接続するだけでは、API制限の枯渇、命名の混乱によるAIの誤動作、そして深刻なセキュリティホールを招きます。
本記事では、日本最高峰のIT実務の知見に基づき、拡張性と安全性を両立させるMCPツール設計の最適解を詳説します。企業のDXを加速させる「動くアーキテクチャ」の構築手法を、公式事例と具体的な数値を交えて公開します。
1. MCPツールにおける「機能分割」の設計指針
MCPツール(MCP Server)を設計する際、最大の失敗要因は「1つのサーバーに全機能を詰め込む」ことです。これはAIのコンテキストウィンドウを無駄に消費し、レスポンスの遅延を招きます。
関心の分離(SoC)に基づくコンポーネント設計
各ツールは「読み取り専用」「書き込み用」「分析用」の3つに論理分割することを推奨します。これにより、AIが「今何をすべきか」を判断する際の計算負荷を下げ、トークンコストを削減できます。
- Data Fetcher(取得系): CRMやデータベースから必要なレコードのみを抽出する。
- Action Executor(実行系): 承認フローの回付やステータス更新など、副作用を伴う操作を担う。
- Logic Processor(ロジック系): 複雑な計算やデータ成形を行い、AIが理解しやすい形式でレスポンスを返す。
API制限と処理速度の考慮
外部SaaSと連携する場合、各プラットフォームのAPI制約(Rate Limit)を設計に組み込む必要があります。例えば、SalesforceのREST APIでは、24時間あたりのリクエスト上限が組織のライセンス数に基づき厳格に定められています。
例えば、Salesforce Enterprise Editionの場合、基本の1日あたりリクエスト上限は「100,000 + (ユーザー数 × 追加分)」となります。MCPツール側でキャッシュ(Redis等)を実装せずに全検索を繰り返すと、数時間でAPIが停止し、全社業務が麻痺する恐れがあります。
関連記事:Salesforceとfreeeを繋いでも「サブスク売上」は自動化できない。前受金管理とバクラクを活用した一括請求アーキテクチャ
2. AIを迷わせない「命名規則」の標準化
MCPツールの名称や説明文(description)は、AIにとっての「取扱説明書」です。曖昧な命名はAIのツール選択ミスを誘発します。
ツール命名のベストプラクティス
関数名(tool_name)は、[動詞][対象][条件] の形式で統一します。
| 種別 | 命名テンプレート | 具体的名称(例) | AIへの説明(Description)のコツ |
|---|---|---|---|
| 顧客検索 | get_customer_by_[key] | get_customer_by_email | メールアドレスをキーに顧客IDを取得する。部分一致は不可。 |
| 仕訳作成 | create_accounting_journal | create_freee_journal | freee会計に振替伝票を作成する。税区分IDの指定が必須。 |
| 分析 | calculate_[target] | calculate_churn_rate | 指定期間の解約率を算出する。返り値は小数点第2位まで。 |
説明文(Description)の重要性
AIはコードの中身ではなく、メタデータを見てツールを選択します。get_user ではなく、Fetch comprehensive profile data for an internal employee by their primary email address. と具体的に記述してください。ここには「何ができないか(制約)」を書くのがプロの実務です。
3. セキュリティを担保する「権限境界」の設計
MCPはAIが強力な権限を持つことを意味します。プロンプトインジェクションによって、「全社員の給与データを取得せよ」という命令が実行されるリスクを最小化しなければなりません。
ゼロトラスト・アーキテクチャの適用
MCPツール設計においては、以下の「3層の守り」を実装します。
- トランスポート層: API KeyやOAuth 2.0による認証。
- 認可層(IAM): 実行ユーザーの権限に基づき、アクセス可能なリソースを制限する。
- バリデーション層: AIが生成した引数が、許容範囲内(例:負の金額でないか、未来の日付でないか)をチェックする。
特に会計系SaaSとの連携では、この境界線が重要です。
関連記事:freee会計の「経営可視化・高度連携」フェーズ。会計データを羅針盤に変えるBIとAPI連携術
4. 主要ツール比較と公式事例
MCP実装において選択肢となる主要プラットフォームを比較します。
| ツール名 | 主な特徴 | 料金目安 | 公式導入事例 |
|---|---|---|---|
| Anthropic MCP SDK | 公式SDK。TypeScript/Python対応で柔軟性が極めて高い。 | オープンソース(無料) | Anthropic公式ブログ参照 |
| Cloudflare Workers | エッジで動作。レイテンシが最小で、セキュリティ設定が強固。 | $5/月〜(無料枠あり) | Doorstep Market(高速処理事例) |
| MuleSoft (Salesforce) | エンタープライズ向け。既存のレガシーシステムとの統合に強み。 | 要問い合わせ(高額) | ヤマハ株式会社(API統合事例) |
5. 実践ステップ:MCPサーバーの構築手順
ここでは、最も汎用的な Node.js + Anthropic MCP SDK を用いた、社内ドキュメント検索ツールの構築手順を解説します。
STEP 1: 環境構築とSDKの導入
mkdir my-mcp-server cd my-mcp-server npm init -y npm install @modelcontextprotocol/sdk
STEP 2: ツール定義の記述
AIが利用できる機能を定義します。ここではGoogle Drive上の規約を検索する機能を想定します。
const server = new Server({
name: "internal-doc-search",
version: "1.0.0"
}, {
capabilities: {
tools: {}
}
});
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [{
name: "search_internal_policy",
description: "社内の就業規則や経費規定を検索します",
inputSchema: {
type: "object",
properties: {
query: { type: "string", description: "検索キーワード" }
},
required: ["query"]
}
}]
}));
STEP 3: エラーハンドリングの実装
実務で頻発するエラーへの対策を組み込みます。
- タイムアウト: 外部APIの応答が5秒を超えた場合、AIに「再試行するか、条件を絞るか」を提案させる。
- データなし: 検索結果が0件の場合、単にnullを返すのではなく「該当するデータが見つかりませんでした。別のキーワード(例:旅費規定)を試してください」とガイダンスを返す。
6. よくあるトラブルと解決策(トラブルシューティング)
Q: AIがツールを呼び出してくれない(または間違ったツールを呼ぶ)
原因: Descriptionの重複、または「プロンプトの競合」です。
解決策: ツール同士の役割が重なっていないか確認してください。例えば get_sales_data と get_revenue_report が混在している場合、1つのツールに統合し、引数で「詳細度」を切り替える設計に変更します。
Q: レスポンスがトークン上限を超えてしまう
原因: 外部APIから取得した生のJSONをそのままAIに渡しています。
解決策: MCPサーバー側で「要約」または「必要なプロパティの抽出」を行ってください。AIに渡すのは全データではなく、回答に必要な最小限の情報のみに絞り込むのが鉄則です。
Q: 権限のないユーザーが機密情報にアクセスできてしまう
原因: MCPツールが「システム管理者権限」で外部SaaSを叩いています。
解決策: MCPの実行時コンテキストにユーザーIDを含め、ツール内部で Row Level Security (RLS) を適用してください。例えば、freee API を叩く際は、必ず実行ユーザーのアクセストークンを使用する設計にします。
関連記事:SaaS増えすぎ問題と退職者のアカウント削除漏れを防ぐ。Entra ID・Okta・ジョーシスを活用した自動化アーキテクチャ
まとめ:MCPは「設計」で価値が決まる
MCPツールの真価は、接続の容易さではなく、その背後にある「機能分割の美しさ」と「権限管理の堅牢さ」にあります。本稿で示した設計指針を守ることで、貴社のAI活用は「お遊び」から「24時間稼働するデジタル社員」へと進化します。
特に、Salesforce、Tableau、freeeといった基幹SaaSとの連携においては、公式の仕様を深く理解し、API制限やデータ構造に配慮した実装が不可欠です。本ガイドを基に、保守性の高い次世代の業務基盤を構築してください。
7. 本格運用前に確認すべき「運用・ガバナンス」チェックリスト
MCPツールをローカル環境から全社展開へ移行する際、エンジニアが最も直面する壁は、AIによる「想定外の挙動」の管理です。特にデータの更新や削除を伴うAction Executor(実行系)を実装する場合、以下のチェックリストを基準に、システム設計を再点検してください。
実務で必須となる「安全装置」の要件
- Human-in-the-loop(人間による承認)の有無: 10万円以上の経費承認や、顧客データのバルク更新など、インパクトの大きい操作には必ず人間の最終確認ステップを挟んでいるか。
- べき等性の確保: AIが同じ指示を2回送った場合でも、仕訳が二重計上されたり、通知が2通届いたりしない設計になっているか(Request IDによる制御など)。
- トークン消費の監視: MCPツールがループに陥り、API経由で膨大なトークンを消費し続けないよう、タイムアウトやリトライ回数の上限がMCPサーバー側にハードコードされているか。
MCPツールと従来型iPaaSの使い分け
すべての連携をMCPで行う必要はありません。バッチ処理や定型的な同期は既存のiPaaSやデータ連携基盤に任せ、MCPは「非定型な判断が必要な動的アクセス」に特化させるのが、コストと信頼性のバランスを取るコツです。
| 比較項目 | MCPツール (Model Context Protocol) | 従来型iPaaS / ETL連携 |
|---|---|---|
| 得意な領域 | 非定型な質問への回答、文脈に応じた操作 | 大量データの定期同期、定型ワークフロー |
| 主なコスト | LLMトークン料 + サーバー維持費 | コネクタ課金 + レコード転送量課金 |
| メンテナンス | AIへの「説明文(Description)」の更新 | マッピング定義、スキーマ変更の追従 |
| 推奨記事 | データ連携の全体設計図 | モダンデータスタック構成案 |
8. さらに詳細を学ぶための公式リソース
MCPは仕様のアップデートが非常に速いプロトコルです。実装の際は、以下の公式ドキュメントおよびリポジトリを常に最新のソースとして参照してください。特にSDKの仕様変更(Breaking Changes)には注意が必要です。
- Anthropic公式: Model Context Protocol Documentation(基本コンセプトとチュートリアル)
- GitHubリポジトリ: MCP Reference Servers(PostgreSQL、Slack、GitHub等の公式実装例)
- SDKリファレンス: TypeScript SDK for MCP(型定義とインターフェースの詳細)
また、データ基盤そのものの設計思想については、当サイトの「高額なCDPは不要?BigQuery・dbt・リバースETLで構築するモダンデータスタック」も、MCPツールの参照先となるデータマート構築の参考になります。
ご相談・お問い合わせ
本記事の内容を自社の状況に当てはめたい場合や、導入・運用の設計を一緒に整理したい場合は、当社までお気軽にご相談ください。担当より折り返しご連絡いたします。
CRM・営業支援
Salesforce・HubSpot・kintoneの選定から導入・カスタマイズ・定着まで一貫対応。営業生産性を高め、商談化率を改善します。