業務システムに社内向けAIアシスタントやチャットボットを組み込む際、外部サービス連携をどう実装するかで迷う担当者は多いはずです。今回は、MCP(Model Context Protocol、AIモデルが外部ツールやデータソースを呼び出すための標準プロトコル)のサーバーを、公式レジストリから導入する手順を業務システム視点で整理します。
MCPはAnthropicが提唱した仕様で、AIアシスタントに「このツールを使ってよい」と伝える共通の作法です。従来はSlack連携やSmartsheet連携のたびに個別のAPIラッパーを書いていましたが、MCPサーバーという共通の窓口を挟むことで実装の重複を減らせます。公式レジストリ(https://registry.modelcontextprotocol.io)は、そのMCPサーバーを検索できる公開カタログです。
MCPサーバー検索の仕組みを段階的に見る
MCPを使いこなすには、まず「検索」「識別」「起動方式の判断」という3段階を分けて理解すると整理しやすくなります。
検索は文字通り、目的のサービス名でレジストリに問い合わせる操作です。例えばSmartsheet(プロジェクト管理・表計算SaaS)向けのMCPサーバーがあるか調べる場合、SAFi(Self Alignment Framework interface、オープンソースのAIエージェント基盤)というツールでは以下のように検索します。
# Dockerで動かしている場合
docker compose exec app python scripts/safi_mcp.py search smartsheet
# ベアメタル(コンテナを使わず直接サーバーに導入している場合)
cd /var/www/safi
source venv/bin/activate
python3 scripts/safi_mcp.py search smartsheetベアメタル環境では、仮想環境を有効化するsource venv/bin/activateを忘れると、Pythonの依存パッケージが見つからずスクリプトが動きません。プロンプトの先頭に(venv)と表示されているかを、実行前に必ず確認してください。
検索結果には、次のような1行が返ってきます。
io.github.christianclaudio/smartsheet-rm (package, v1.0.2) [pypi:mcp-server-smartsheet-rm@1.0.2]
この1行には業務判断に必要な情報が凝縮されています。順に分解します。
- 名前の接頭辞: io.github.〜はSmartsheet社の公式パッケージではなく、個人開発者が公開したコミュニティ製であることを示す(禁止ではないが、社内利用前にコードの中身を確認する対象になる)
- 種別: package は自分のサーバー上でプロセスとして起動する方式。remote はURLだけで済み、ローカルへのインストールが不要な方式
- バージョン: v1.0.2のようにピン留めされている。バージョン固定がないと、名前は同じままツールの挙動が裏で変わるリスクがある
- エコシステム: [pypi:...]はPython製という意味。npmと書かれていればNode.js製で、起動コマンドが変わる
既存システムとの接続方式をどう選ぶか
エンタープライズの現場では、社内ネットワークのポリシーやセキュリティ審査の有無によって、packageとremoteのどちらを選ぶかが変わってきます。
package方式は自社サーバー上でプロセスを起動するため、外部への通信を自社のファイアウォール内で完結させたい場合に向いています。ただしPython製ならuv(Pythonパッケージのインストーラー兼実行ツール)、Node.js製ならnpxといった実行系が事前に必要です。
# ベアメタルで仮想環境を有効化した状態で
pip install uvDockerで運用している場合は、コンテナに直接pip installしても、次回docker compose up --buildでイメージを再構築した瞬間に消えてしまいます。Dockerfileに以下のように記述し、イメージに焼き込む必要があります。
RUN pip install uvこれを忘れると、「先週まで動いていたMCPサーバーが急に接続できなくなった」という、原因が追いにくい障害につながります。既存の保守運用フローに「Dockerfile変更時はMCPサーバーの起動確認を行う」という項目を1つ追加しておくと安心です。
一方remote方式は、公開URLに接続するだけなので自社側のインストール作業は不要です。ただし外部SaaSの認証をどう扱うかが論点になります。ユーザーごとに個別ログインさせたい場合はOAuth(第三者サービスに自分のアカウントで安全にアクセス権を渡す認証の仕組み)対応の有無を確認します。
curl -s https://mcp.example.com/.well-known/oauth-authorization-serverこのURLに対してドキュメントが返ってくればOAuth対応、何も返らなければ対応していないと判断できます。
従来のAPI連携との違いと業務システムへの影響
これまでSlackやSmartsheetのような外部SaaSと連携する場合、多くの現場ではサービスごとにAPIクライアントを個別実装してきました。認証方式もOAuth、APIキー、Webhookとサービスごとにばらばらで、担当者が変わるたびに仕様書を読み直す負担がありました。
MCPはこの「サービスごとに違う作法」を、AIエージェントから見て共通のインターフェースに揃える試みです。ただし裏側の実装がpackageかremoteか、Pythonかnode.jsかという違いは残るため、完全に均一化されるわけではありません。あくまで「AIに何ができるかを伝える窓口の形式」が統一されるイメージで捉えるのが実態に近いです。
既存の業務システムに組み込む際に注意したいのは、公式レジストリに載っているサーバーがSmartsheetのような大手SaaSの「公式」実装とは限らない点です。名前の接頭辞がio.github.〜であれば個人開発者による非公式実装であり、社内のセキュリティ審査対象としてコードレビューやライセンス確認が必要になるケースがあります。
今日確認できること
導入を検討する場合、以下の順で確認すると判断がしやすくなります。
- 使っているMCPクライアント(SAFiなど)のバージョンと、検索コマンドが用意されているかをドキュメントで確認する
- 検索結果の接頭辞(io.github.かサービス公式ドメインか)で、公式実装かコミュニティ実装かを見分ける
- package方式ならuvやnpxなど起動系ランタイムがサーバー環境に用意されているか、Dockerfileに反映されているかを確認する
- remote方式ならOAuth対応の有無をwell-known URLで確認し、ユーザー単位のアクセス制御が必要かどうかを判断する
- バージョンがピン留めされているか確認し、意図しないアップデートで挙動が変わらないようにする
まとめ
MCP公式レジストリは、AIエージェントに外部ツールを接続するための共通カタログとして機能します。
検索結果の1行には、公式か非公式か、ローカル起動かリモートか、バージョン固定の有無という業務判断に直結する情報が詰まっています。
Docker環境ではランタイムのインストールをDockerfileに反映し忘れると再構築時に壊れる点、remote方式ではOAuth対応の有無を事前に確認する点は、既存の保守運用フローに組み込んでおくと安心です。
まずは自社で使っているMCPクライアントの検索コマンドを一度実行し、候補に上がったサーバーの接頭辞とバージョンを確認するところから始めてみてください。