こんにちは。クロスイノベーション本部クラウドイノベーションセンターの柴田です。
最近 Model Context Protocol (MCP) が注目を集めていますね。
一部の MCP サーバーは実行に資格情報を必要とします。例えば以下は https://github.com/makenotion/notion-mcp-server の設定例です。環境変数 OPENAPI_MCP_HEADERS
に Notion の integration secret を設定する必要があります。
{ "servers": { "notionApi": { "command": "npx", "args": ["-y", "@notionhq/notion-mcp-server@v1.7.0"], "env": { "OPENAPI_MCP_HEADERS": "{\"Authorization\": \"Bearer ntn_****\", \"Notion-Version\": \"2022-06-28\" }" } } } }
しかし MCP クライアントの設定ファイルに資格情報を平文でハードコーディングするのはセキュリティの観点から望ましくありません。そこでこの記事では MCP クライアントとして Visual Studio Code を使用する場合に MCP サーバーの実行に必要な資格情報をパラメーター化する方法をご紹介します。
入力変数を利用して資格情報をパラメーター化する
Visual Studio Code では 入力変数 を利用して Task や Debugging の設定ファイルの値をパラメーター化できます。同様に MCP サーバーの設定でも入力変数を利用して実行に必要な資格情報をパラメーター化できます。
先ほどの Notion MCP サーバーの設定を入力変数を使って書き直すと以下のようになります。ハードコーディングしていた integration secret がパラメーター化されています。
{ "inputs": [ { "description": "Notion Integration Secret", "id": "notion-integration-secret", "password": true, "type": "promptString" } ], "servers": { "notionApi": { "command": "npx", "args": ["-y", "@notionhq/notion-mcp-server@v1.7.0"], "env": { "OPENAPI_MCP_HEADERS": "{\"Authorization\": \"Bearer ${input:notion-integration-secret}\", \"Notion-Version\": \"2022-06-28\" }" } } } }
早速 MCP サーバーを起動してみましょう。
すると integration secret を入力するプロンプトが表示されます。
integration secret を入力して MCP サーバーを起動しました。試しに適当なプロンプトを入力してみます。
MCP サーバーが正常に動作していることが確認できました。
inputs
ブロックを見ると値が格納されていることがわかります( password=true
なので表示される値は *
に置換されています)。
カーソルを合わせると入力変数の値を編集またはクリアできます。
入力した値は Visual Studio Code によって永続化されます。試しに PC を再起動してみましたが integration secret は残っていました。 Visual Studio Code の公式ドキュメント には以下のように書かれています。
// 💡 Inputs are prompted on first server start, then stored securely by VS Code.
具体的にどうセキュアに保存されるのかは確認できませんでした。「入力した資格情報は Visual Studio Code によってローカルに保存される」ということは認識しておきましょう。
おわりに
この記事では Visual Studio Code で MCP サーバーの実行に必要な資格情報をパラメーター化する方法をご紹介しました。最後までお読みいただき、ありがとうございました。
参考資料
執筆:@shibata.takao、レビュー:@handa.kenta
(Shodoで執筆されました)