MCP申請フローを整備して安全なAI活用を進めた話

に公開

はじめに

株式会社Linc’well フロントエンド基盤チームです。

AIエージェントの活用が急速に広がる中で、社内でも多様な MCP Serverを利用する機会が増えてきました。
その一方で、「安全に使うにはどうすればよいか」という観点が徐々に重要になっています。

本日は弊社で行った MCP Serverの申請フロー作成までの話と、セキュリティチェックに使用している MCP Scan についてお話ししようと思います。

直面していた課題

弊社でも MCP Server の活用が進む一方で、申請・承認の仕組みは明確ではありませんでした。
どのように安全性を確保しながら運用するかが課題として浮かび上がりました。

以前は、MCP Server を利用する際に Slack 上でセキュリティチームへ連絡し、許可を得る運用でした。
しかし、利用可能な MCP が明文化されておらず、対応もフロー化されていなかったため、曖昧な状態が続いていました。

利用者側からも「どの MCP Server が許可済みなのか」が判断しづらく、Slack 検索で確認し、証跡があれば利用するというグレーな運用が生まれていました。

対応方針と整理した課題

まずは、現状の問題を客観的に整理するところから始めました。
利用者側とセキュリティチーム側の両方にとって負担がある構造を明らかにし、両者のバランスを取る仕組みづくりを目指しました。

利用者側

  • MCP Server を使っていいのかどうかわからない
  • 誰に依頼すればいいかわからない
  • 安全性などの相談先がない

セキュリティチーム側

  • 特定メンバーへの依頼が属人化している
  • セキュリティチェックの手順が確立されていない
  • チェックの負担が大きい
  • MCP Server がアプリケーションにどのように作用するか把握しにくい

MCP Server利用の原則を策定

課題を整理した上で、まず取り組んだのが「原則の明文化」です。
どのような MCP Server が利用可能で、どのような場合に相談が必要なのかを明確に定めることで、判断の迷いを減らします。

基本的には第三者の帰属が不明な MCP Server は禁止としています。
問答無用で棄却するわけではなく、例外的な利用は相談できるようにしています。

### MCP利用の原則

- **公式提供の MCP Server のみ利用可能**
    - 会社として、公式から提供されている MCP Server のみ利用を許可
    - 非公式 MCP Server は原則利用禁止
- **全ての MCP 利用には事前申請が必須**
    - 社内で MCP Server を利用する場合は、どのようなものでも必ず申請が必要
    - 申請は MCP Server単位で実施
    - 同一会社提供でも、異なる MCP Server の場合は個別申請が必要

### 例外対応


- **非公式 MCP Server 利用希望の場合**
    - 別途申請時に「相談」として扱う
    - 基本方針により棄却される可能性が高いことを周知
- **申請済み MCP Server の利用**
    - すでに承認済みの MCP は申請不要

申請フローの設計

次に取り組んだのは、実際に使える「申請フロー」の設計です。
利用者が迷わず申請でき、セキュリティチームが確認しやすい仕組みを整備しました。
申請フォームは利便性を重視して、Notionフォームで実装しました。

必須項目

  • 公式提供の確認(URL 等の証跡添付)
  • プレビュー版かどうかの明記
  • プレビュー版の場合は免責事項の記載(URL など)
  • SOC2 等セキュリティ認証の取得状況
  • MCP Scan 実行結果の添付(uvx による事前チェック)

また、ツールがどのような実行権限を持つのかを明確にする項目も設けました。
利用者自身がその権限を理解した上で申請することで、後続の安全確認をスムーズに行う狙いがあります。

このツールはどのような実行権限を持つか

  • データの閲覧のみ
  • データの作成・編集・削除
  • 社内の機密情報を含むデータの利用
  • 個人情報を含むデータの利用
  • 該当しない

これらの項目を通じて、申請者自身が MCP の安全性を把握した上で利用申請できるようにしました。
また、一定の情報を共通フォーマットで記録することで、後続利用者の確認も容易になります。

MCP Scanの活用

MCP Server の安全性を確認するための重要な要素が MCP Scan です。
これは、MCP Server がどのような権限を持ち、どのデータにアクセスできるかを可視化できるツールです。

使い方は簡単で、Python 環境にライブラリをインストールし、次のコマンドを実行するだけです。

brew install uv
uvx mcp-scan@latest --full-toxic-flows

このライブラリはデフォルトでMCP Serverとして設定されているConfigをスキャンし、ツールの診断を行います。
これにより、利用する MCP Server の目的と権限に相違がないかを確認できます。

たとえば、ランダムな数値を返すだけの MCP Server にターミナル実行権限が付与されていた場合、意図せぬ操作権限が与えられていることが分かります。

逆に VSCode や JetBrains の MCP Server は実行権限があってしかるべきなので、診断結果のアラートは想定どおりです。
重要なのは「アラートの有無」ではなく、「MCP Server が何をできるのか」を可視化・記録し、検証可能にすることです。
あくまで MCP Scan の結果は参考指標のひとつであり、100%信用するにはまだ早い段階です。

MCP Scan 自体も継続的にアップデートされているため、利用時には必ず最新のドキュメントを確認してください。

https://github.com/invariantlabs-ai/mcp-scan
https://explorer.invariantlabs.ai/docs/mcp-scan/issue-code-reference/

詳細に関してはこちらの記事にまとめている方いらっしゃいますので、興味のある方はぜひご覧ください。
https://zenn.dev/sun_asterisk/articles/introducing_mcp_scan

運用上の課題と今後の改善

新しい仕組みを導入したことで、安心感が生まれた一方で、運用上の課題も見えてきました。
ここでは実際に運用してみてわかった改善点を紹介します。

MCP Scanのハードル

利用者にもセキュリティ観点の意識を持ってほしい狙いはありますが、一定の申請に対する負荷増加は否めません。

アップデート対応

MCP Server のアップデートごとの再申請は現実的でなく、現状では運用していません。半期ごとの棚卸しでの対応などを検討する必要があります。

申請単位の難しさ

原則、「同一会社提供でも、異なる MCP Server の場合は個別申請が必要」としていますが、AWSなど信頼性がある程度担保できているプラットフォームの場合は柔軟に対応しています。日々各社からMCPが提供されている状況もあり、なかなか判断が難しい場面も多いです。

取り組みを通して感じたこと

プロダクト開発とセキュリティ対応は、目的は同じでもアプローチが異なります。
両者が協力して仕組みを整えることで、開発体験の向上とリスク低減を両立できると感じました。

普段はプロダクト開発が中心ですが、今回の取り組みを通じてセキュリティ側の視点に触れられたのは貴重な経験でした。
今後も新しい技術を積極的に取り入れつつ、安全に活用できる環境づくりを続けていきたいと思います。

おわりに

MCP Server申請フローの整備は、「安全性」と「スピード」を両立させる第一歩でした。
今後も、基盤エンジニアとして“より良い開発ができる環境を開発する”ために改善を続けていきます 🚀


弊社ではフロントエンドエンジニアを積極的に採用しています。コードの負債解消に取り組んでおり、非常にやりがいのある時期です。

AI 活用や医療ドメインに興味のある方は、ぜひ採用ページもご覧ください。

https://recruit.linc-well.com/contact

ありがとうございました。

Linc'well, inc.

Discussion