クイックスタート:Connector NamespaceでホストMCPサーバーを作成する(プレビュー)

Important

このプレビュー機能は、 Microsoft Azure プレビューの追加使用条件に従います

プレビュー期間中、ホストされたMCPサーバーは以下の地域で利用可能です: 西中部アメリカ、東アジア、中央アメリカ、北ヨーロッパ

このクイックスタートでは、コネクターネームスペースホストされたモデルコンテキストプロトコル(MCP)サーバーを作成し、MCPクライアントに接続します。 このページの上部にあるサーバー セレクターを使用して、デプロイするサーバーを選択します。

MCPサーバーはコネクターネームスペースにおける一流のリソースです。 コネクタ名前空間は、コネクタ、接続、トリガー、および MCP サーバーをホストするフル マネージド サービスです。

名前空間にホストされた MCP サーバーを作成すると、プラットフォームはプロビジョニングする専用コンピューティングでサーバーの事前構築済みイメージを実行します。 サーバー構成、環境変数、およびパラメーターを制御します。 名前空間は、ホスティング、スケーリング、資格情報の管理を処理します。 Copilot、カスタム エージェント、または MCP 対応クライアントなどの AI エージェントは、名前空間の接続モデルを使用してサーバーのツールを検出して呼び出します。

ホストされる MCP サーバーは、コネクタ上に構築されたプラットフォームで管理される実装であるマネージド MCP サーバーとは異なります。 名前空間は、マネージド サーバーのツール定義と構成を処理します。

Azure Developer CLI を使用してデプロイする

SQL MCPサーバーをデプロイする最も簡単な方法は、azure-sql-mcpのサンプルにアクセスし、READMEの指示に従ってAzure DeveloperのCLIやazdを使ってデプロイすることです。 サンプルには、コネクターネームスペース、SQL MCPサーバー、SQLデータベース、その他必要なAzureリソースを1コマンドでプロビジョニングできるbicepファイルが含まれています。

SQL MCPサーバーと必要なリソースを最初から最後まで一歩進めたい場合は、以下の指示に従ってください。

Prerequisites

SQL データベースのシード処理

  1. Azure ポータルで、(サーバーではなく) SQL データベースに移動します。

  2. 左側のメニューで、[ クエリ エディター ] を選択し、データベース管理者としてサインインします。

  3. [ 新しいクエリ ] を選択し、次のコマンドを実行してデータベースをシード処理します。

    CREATE TABLE dbo.Books
    (
       Id int IDENTITY(1,1) PRIMARY KEY,
       Title nvarchar(200) NOT NULL
    );
    
    INSERT INTO dbo.Books (Title) VALUES (N'The little prince');
    INSERT INTO dbo.Books (Title) VALUES (N'Pride and prejudice');
    

DAB 構成ファイルを生成する

SQL でホストされる MCP サーバーは 、データ API ビルダー (DAB) 上に構築されています。これは、データベースに対してセキュリティで保護されたデータ API を提供し、そのエンティティ (テーブル) を MCP ツールとして公開します。 サーバーには、データベース接続と公開するエンティティを定義する DAB 構成ファイルが必要です。

  1. データベースの DAB 構成ファイルを生成し、MCP のみを有効にします。

    dab init --database-type "mssql" --host-mode "Development" --graphql.enabled false --rest.enabled false --connection-string "<your-sql-connection-string>"
    

    サーバーはシステム割り当て管理型アイデンティティ(SAMI)を使って基盤データベースにアクセスするため、接続文字列は以下の例のように見えるはずです。

    Server=<your-sql-server>.database.windows.net;Database=<your-database>;Authentication=Active Directory Default;Encrypt=True;TrustServerCertificate=False;
    
  2. Books エンティティと関連するアクセス許可を追加します。

    dab add Books --source "dbo.Books" --permissions "anonymous:*"
    

    エンティティとアクセス許可の構成の詳細については、 データ API ビルダーの承認に関するページを参照してください。

    構成ファイルの例を次に示します。

    {
       "$schema": "https://github.com/Azure/data-api-builder/releases/download/v1.7.93/dab.draft.schema.json",
       "data-source": {
          "database-type": "mssql",
          "connection-string": "Server=<your-sql-server>.database.windows.net;Database=<your-database>;Authentication=Active Directory Default;Encrypt=True;TrustServerCertificate=False;",
          "options": {
             "set-session-context": false
          }
       },
       "runtime": {
          "rest": {
             "enabled": false,
             "path": "/api",
             "request-body-strict": true
          },
          "graphql": {
             "enabled": false,
             "path": "/graphql",
             "allow-introspection": true
          },
          "mcp": {
             "enabled": true,
             "path": "/mcp"
          },
          "host": {
             "cors": {
                "origins": [],
                "allow-credentials": false
             },
             "authentication": {
                "provider": "AppService"
             },
             "mode": "development"
          }
       },
       "entities": {
          "Books": {
             "source": {
                "object": "dbo.Books",
                "type": "table"
             },
             "graphql": {
                "enabled": true,
                "type": {
                   "singular": "Books",
                   "plural": "Books"
                }
             },
             "rest": {
                "enabled": true
             },
             "permissions": [
                {
                   "role": "anonymous",
                   "actions": [
                      {
                      "action": "*"
                      }
                   ]
                }
             ]
          }
       }
    }
    

ホストされている MCP サーバーを作成する

  1. Azure portal にサインインする

  2. コネクタ名前空間リソースを検索します。

  3. [ 名前空間に接続] を選択して、新しいブラウザー タブで名前空間ポータルを開きます。

  4. リダイレクトされたら、名前空間に関連付けられているMicrosoft アカウントを使用してサインインします。

  5. 名前空間インスタンス内で、 MCP コネクタ セクションを探し、[ + 作成 ] ボタンを選択します。

  1. Playwright を検索し、それを選択してサーバーを作成します。
  1. SQL MCP Serverを検索して、サーバーを作成するために選択してください。

  2. 作成ウィンドウで、送信認証方法として [ID の管理 ] を選択します。

  3. 前に生成した DAB 構成ファイルをアップロードします。

  4. を選択してを作成します。

必要な接続とサーバーがプロビジョニングされてデプロイされるまで待ちます。 デプロイ後に [作成 ] ダイアログを閉じないでください。 サーバーからテレメトリを収集するように Application Insights リソースを設定します。

サーバーで監視を有効にする

  1. 別のタブを開いて、Azure ポータルで Application Insights リソースの接続文字列を取得します。

  2. 名前空間ポータルに戻り、[監視を 有効にする] を選択します。

  3. ボックスに接続文字列を貼り付け、[有効] を選択します。

  4. Application Insights の構成時に [完了] を 選択します。

自動的にデプロイ済みサーバーの 「概要 」ページに誘導され、そこでエンドポイントを確認できます。 そうでない場合は、左側のメニューの [MCP コネクタ ] タブを選択し、デプロイしたサーバーを見つけます。

名前空間 ID にデータベースへのアクセス権を付与する

ホストされる SQL サーバーは、名前空間の SAMI を使用してデータベースにアクセスします。 名前空間の作成時に SAMI を有効にすることができます。

作成時に SAMI を有効にしなかった場合は、Web ポータルで名前空間インスタンスに移動して有効にする 必要があります 。 左側のメニューで、[ID] タブ 見つけます。 [システム割り当て済み] トグルを [オン] に切り替えて、更新プログラムを保存します。

Azure ポータルで SQL データベースに移動し、クエリ エディターを開き、次のコマンドを実行してマネージド ID へのアクセスを許可します。

CREATE USER [<your-connector-namespace-name>] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [<your-connector-namespace-name>];
ALTER ROLE db_datawriter ADD MEMBER [<your-connector-namespace-name>];
GRANT VIEW DEFINITION TO [<your-connector-namespace-name>];

<your-connector-namespace-name>をコネクタ名前空間リソースの名前に置き換えます。

Visual Studio Code のGitHub Copilotから接続する

  1. ホストされている MCP サーバーを Visual Studio Code のGitHub Copilotに接続するには、MCP 設定にサーバー構成を追加します。

    {
      "servers": {
        "my-hosted-server": {
          "url": "<your-mcp-endpoint-url>",
          "type": "http"
        }
      }
    }
    

    <your-mcp-endpoint-url>を、サーバーの [概要] ページからコピーしたエンドポイント URL に置き換えます。

  2. サーバー名の上にある [スタート] を選択します。 Microsoftで認証するように求められます。 Azure ポータルへのサインインに使用した電子メール アドレスでサインインします。

  3. 使用可能なツールの数がサーバー名の上に表示されることを確認します。

  1. Copilot のエージェント モードを開き、「11 Times Square に最も近いピッツェリアはどこですか?」と尋ねます。
  1. Copilot のエージェント モードを開き、「利用可能なテーブルは何ですか?」と質問します。

MCP Inspector から接続する

  1. ターミナルから、次のコマンドを実行します。

    az login
    
  2. az login セッションからアクセス トークンを取得してサーバーに接続します。

    MCP_TOKEN=$(az account get-access-token --resource https://apihub.azure.com --query accessToken -o tsv)
    
  3. サーバーを呼び出して、ツールの一覧を取得します。

    npx @modelcontextprotocol/inspector --cli \
    "<your-mcp-endpoint-url>" \
    --transport http \
    --method tools/list \
    --header "Authorization: Bearer $MCP_TOKEN"
    
  1. 特定のツールを呼び出します。 たとえば、次のコマンドは browser_navigate ツールを呼び出します。

    npx @modelcontextprotocol/inspector --cli \
    "<your-mcp-endpoint-url>" \
    --transport http \
    --method tools/call \
    --tool-name browser_navigate \
    --tool-arg url="https://www.google.com/search?q=pizza+near+11+Times+Square+New+York" \
    --header "Authorization: Bearer $MCP_TOKEN"
    
  1. 特定のツールを呼び出します。 たとえば、次のコマンドは describe_entities ツールを呼び出して、使用可能なエンティティを一覧表示します。

    npx @modelcontextprotocol/inspector --cli \
    "<your-mcp-endpoint-url>" \
    --transport http \
    --method tools/call \
    --header "Authorization: Bearer $MCP_TOKEN" \
    --tool-name describe_entities \
    --tool-arg 'nameOnly=true'
    
  2. read_records ツールを呼び出して、エンティティ (Books) からレコードを取得します。

    npx @modelcontextprotocol/inspector --cli \
    "<your-mcp-endpoint-url>" \
    --transport http \
    --method tools/call \
    --header "Authorization: Bearer $MCP_TOKEN" \
    --tool-name read_records \
    --tool-arg 'entity=Books' \
    --tool-arg 'first=2'
    

Important

アクセス トークンを手動で渡すことは、ローカルの開発とテストにのみ適しています。 運用シナリオでは、マネージド ID または OAuth フローを使用してトークンを自動的に取得します。

サーバー ログの表示

  1. Azure ポータルに移動し、MCP サーバーで構成した Application Insights リソースを見つけます。

  2. 左側のメニューで、 調査>検索を見つけます

  3. 上部の [ローカル時刻 ] フィルターを過去 30 分に設定します。 ログをトレースまたは個々の項目として表示します。

SQL Server のトラブルシューティング

ホストされている SQL MCP サーバーが期待どおりに接続またはデータを返さない場合は、次の項目を確認します。

  • DAB 構成ファイル。 アップロードされた DAB 構成ファイルが有効であることを確認し、正しい接続文字列を使用し、公開する予定のエンティティとアクセス許可を定義します。
  • システム割り当てマネージド ID。 名前空間で SAMI が有効になっていることを確認します。 Web ポータルで名前空間インスタンスに移動し、[ ID ] タブを選択し、[ システム割り当て済み ] が [オン] に設定されていることを確認します。
  • データベース アクセス。 名前空間 ID にデータベースへのアクセス権が付与されていることを確認します。 データベースへの名前空間 ID アクセスの許可を参照してください