mcpField
A
Azure Cosmos DB MCP CLient & Server

Azure Cosmos DB MCP CLient & Server

ローカル
github.com/patrice-truongデータベース182 週間前に更新

Azure Cosmos DB MCP CLient & Server について

NextJS 15の商品カタログとAIアシスタントを、Azure Cosmos DBに接続するMCPサーバーと組み合わせたサンプルです。商品検索や注文情報の取得に対応します。

主な機能

  1. 01NextJS 15の商品カタログ
  2. 02AIアシスタントによる商品検索
  3. 03過去の注文の取得
  4. 04Azure Cosmos DBからのデータ読み取り
  5. 05セットアップでのベクトル検索対応

活用シーン

  1. 01カタログ内の商品検索
  2. 02ユーザーの過去の注文確認
  3. 03MCPを使ったストアアシスタントのデモ

MCP 対応

Azure Cosmos DBに接続するMCPサーバーを含み、フロントエンドのAIアシスタント向けに商品と注文のデータを読み取ります。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"cosmosdb": {
"command": "npx",
"args": [
"-y",
"ts-node"
]
}
}
}
起動コマンドnpx -y ts-node

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmts-node

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Azure Cosmos DB MCP クライアント&サーバー

このリポジトリには、Azure Cosmos DB 用の MCP サーバーとクライアントの作成方法を示すプロジェクトが含まれています。プロジェクトは 2 つの部分に分かれています。

  • フロントエンドアプリケーション:商品のカタログを表示する NextJS 15 アプリケーションです。ユーザーがカタログから商品を見つけたり、過去の注文を確認したりするのを支援する AI アシスタントを備えています。
  • Azure Cosmos DB NoSQL データベースに接続され、データベースから商品と注文を読み取る MCP サーバーコンポーネント

デモ

Azure アーキテクチャ

  • 商品カタログを格納する Azure Cosmos DB NoSQL データベース
  • MCP サーバーコンポーネントとして機能する node.js サーバー

参考資料

手順ごとの説明

インストール

Azure Cosmos DB

Azure portal で、Azure Cosmos DB for NoSQL アカウントを作成します。

  • Azure Cosmos DB アカウントに一意の名前を付けます。この手順では、以降 cosmos-eastus2-nosql-2 を使用します。

Cosmos DB - 基本

  • 「次へ:グローバル分散」をクリックします。

Cosmos DB - グローバル分散

  • 既定値をそのまま使用し、「次へ:ネットワーク」をクリックします。

Cosmos DB - ネットワーク

  • 既定値をそのまま使用し、「次へ:バックアップ ポリシー」をクリックします。
  • 「定期的」バックアップ ポリシーを選択します。
  • 「ローカル冗長」バックアップ ストレージを選択します。

Cosmos DB - バックアップ ポリシー

  • 「次へ:暗号化」をクリックします。

Cosmos DB - 暗号化

  • 「確認および作成」をクリックして、検証を開始します。

Cosmos DB - 検証

  • 「作成」をクリックして、Azure Cosmos DB for NoSQL アカウントの作成を開始します。

このプロジェクトでは、Azure Cosmos DB アカウントでベクター検索を有効にする必要があります。

  • 設定セクションで「機能」を選択し、「NoSQL API のベクター検索」を選択します。

  • 開いたパネルで、「有効にする」ボタンをクリックします。

Cosmos DB - 検証

  • Azure Cosmos DB の eShop データベースと Products コンテナーを作成します。

  • eShop の横にある「...」をクリックしてコンテキスト メニューを表示し、「新しいコンテナー」を選択して、eShop データベースに「carts」コンテナーを作成します。

パーティション キーが "/id" であることを確認してください(パーティション キーでは大文字と小文字が区別されます)。

「コンテナー ベクター ポリシー」を展開し、「ベクター埋め込みの追加」ボタンをクリックします。

Cosmos DB - データベースの作成

  • carts コンテナーを作成します。

Cosmos DB - データベースの作成

ストレージ アカウント

  1. 商品画像を保存するためのストレージ アカウントを作成します。

詳細については、ドキュメントを参照してください:https://learn.microsoft.com/en-us/azure/storage/common/storage-account-create?tabs=azure-portal

ストレージ - 基本

ストレージ - 詳細

ストレージ - ネットワーク

ストレージ - データ保護

ストレージ - 暗号化

ストレージ - 検証

**ソフトウェアの前提条件をインストールする **

  1. Azure で仮想マシンを作成するか、ローカルコンピューターを使用します
  2. https://nodejs.org/en/download から node.js v22.13.1 (LTS) をインストールします
  3. https://code.visualstudio.com/download から Visual Studio Code x64 1.97.0 をインストールします
  4. https://git-scm.com/downloads から Git 2.47.12 x64 をインストールします
  5. https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-9.0.102-windows-x64-installer から .NET SDK x64 v9.0.102 をインストールします
  6. ターミナルウィンドウを開き、次のコマンドで nuget ソースを追加します
dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.org
  1. 必要に応じて、Windows コンピューターの PowerShell 実行ポリシーを変更します。管理者モードで Powershell ウィンドウを開き、次のコマンドを実行します
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
  1. 必要に応じて、nuget、powershell、az cli、az modules をインストールします
# install az cli
winget install -e --id Microsoft.AzureCLI

# install nuget and reference nuget source
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force

# update to latest Powershell release (7.5 as of writing)
winget install --id Microsoft.PowerShell --source winget

# install az modules
Install-Module -Name Az -Repository PSGallery -Force -AllowClobber
  1. ターミナルウィンドウを開き、リポジトリをクローンします:
git clone https://github.com/patrice-truong/cosmosdb-mcp.git
cd cosmosdb-mcp
  1. nextjs フォルダーに移動し、依存関係をインストールします
cd cosmosdb-mcp/nextjs
npm install  --legacy-peer-deps
  1. nextjs フォルダーに .env ファイルを作成し、次の値を設定します:
AZURE_COSMOSDB_NOSQL_ENDPOINT=https://<cosmosdb_account_name>.documents.azure.com:443/
AZURE_COSMOSDB_NOSQL_DATABASE=eshop
AZURE_COSMOSDB_NOSQL_PRODUCTS_CONTAINER=products
AZURE_COSMOSDB_NOSQL_CARTS_CONTAINER=carts
AZURE_COSMOSDB_NOSQL_ORDERS_CONTAINER=orders
AZURE_STORAGE_ACCOUNT_NAME=<storage_account_name>
AZURE_STORAGE_CONTAINER_NAME=<container_name>
  1. テナント ID を取得します。テナント ID は次のコマンドで取得できます:
az login
az account show --query tenantId -o tsv
  1. webapi フォルダーで appsettings.json ファイルを設定し、tenant_id を前の手順で取得した値に置き換えます:
{
  "CosmosDb": {
    "Endpoint": "https:/<cosmosdb_account_name>.documents.azure.com:443/",
    "TenantId": "<tenant_id>",
    "DatabaseName": "eshop",
    "ProductsContainerName": "products",
    "CartsContainerName": "carts",
    "OrdersContainerName": "orders"
  },
  "AzureBlobStorage": {
    "AccountName": "<storage_account_name>"
  }
}
  1. Azure Portal でアプリ登録を作成します
  2. Azure Portal でアプリシークレットを作成します
  3. アプリが Azure Cosmos DB にアクセスできるようにする必要があります。以下に記載された 4 つの ID を取得し、ファイル "populate/set_rbac.ps1" を変更します。
変数参照
サブスクリプション IDCosmos DB > 概要 > サブスクリプション ID
Azure Cosmos DB アカウント名cosmos-eastus2-nosql-2
リソースグループ名Cosmos DB > 概要 > リソースグループ名
プリンシパル IDアプリ登録のオブジェクト ID
$SubscriptionId = "<subscription-id>"   # Azure subscription id
$AccountName = "<cosmosdb-account-name>"    # cosmos db account name
$ResourceGroupName = "<resource-group-name>" # resource group name of the Cosmos DB account
$PrincipalId = "<principal-id>"   # object id of the app registered in Entra ID
  1. Powershell プロンプトを開き、Connect-AzAccount を実行してから ./set_rbac.ps1 を実行します

Cosmos DB - RBAC

  1. アプリ(または仮想マシン)がストレージアカウントにアクセスできるようにします
  • Azure portal でストレージアカウントに移動します
  • メニューから Access Control (IAM) を選択します

Storage - Access Control

  • 「Add role assignment」をクリックします
  • フィルターテキストボックスに「Storage Blob Data Contributor」と入力します

Storage - Blob Data contributor

  • 「Members」をクリックします
  • アプリケーション名を選択します

Storage - Role assignment

  • 「Select」ボタンをクリックします
  • 「Review and assign」をクリックします

Storage - Role assignment

  1. コンテナーを作成し、「azure-storage」フォルダーの内容をストレージアカウントにコピーします

Storage - Create container

Storage - Upload files

Storage - Files uploaded

  1. dotnet build で webapi バックエンドプロジェクトをビルドします
cd webapi
dotnet build

Dotnet build 18. セカンダリリージョンの VM(Australia East)で、.env ファイルを変更し、プライマリリージョン(East US 2)のソケットサーバーの IP アドレスを設定します

socket_server_ip

  1. このプロジェクトには認証機能が組み込まれていません。ユーザーのメールアドレスは /nextjs/models/constants.ts にハードコードされています。デモの要件に合わせて変更してください

npm run build

  1. mcp-server フォルダーと nextjs フォルダーで、.env.template を .env にコピーし、デモの要件に合わせて値を変更します
AZURE_COSMOSDB_NOSQL_ENDPOINT=https://<cosmosdb_account>.documents.azure.com:443/
AZURE_COSMOSDB_NOSQL_DATABASE=eshop
AZURE_COSMOSDB_NOSQL_PRODUCTS_CONTAINER=products
AZURE_COSMOSDB_NOSQL_CARTS_CONTAINER=carts
AZURE_COSMOSDB_NOSQL_ORDERS_CONTAINER=orders

NEXT_PUBLIC_AZURE_TENANT_ID=<tenant_id>
NEXT_PUBLIC_AZURE_CLIENT_ID=<client_id>
NEXT_PUBLIC_AZURE_CLIENT_SECRET=<client_secret>

NEXT_PUBLIC_AZURE_STORAGE_ACCOUNT_NAME=<storage_account_name>
NEXT_PUBLIC_AZURE_STORAGE_CONTAINER_NAME=img

AZURE_OPENAI_ENDPOINT=https://<azure_openai_account>.openai.azure.com/
AZURE_OPENAI_API_KEY=<azure_openai_key>
AZURE_OPENAI_EMBEDDING_MODEL=text-embedding-3-small
AZURE_OPENAI_API_VERSION=2024-05-01-preview
  1. nextjs フロントエンドプロジェクトをビルドします
cd nextjs
npm run build

npm run build

商品カタログの登録

このセクションでは、populate/catalog.json ファイルから商品カタログを読み込み、Azure Cosmos DB for NoSQL データベースに登録します。

  1. appsettings.json を編集して、Cosmos DB アカウント名と
{
  "CosmosDb": {
    "Endpoint": "https://<cosmosdb_account_name>.documents.azure.com:443/",
    "TenantId": "<tenant_id>",
    "DatabaseName": "eshop",
    "ProductsContainerName": "products",
    "OrdersContainerName": "orders",
  }
}
  1. ターミナルウィンドウを開き、populate フォルダーに移動して、az login を実行し、その後 dotnet run を実行します。

Cosmos - 商品の登録

  1. Azure Cosmos DB コンテナーに正しくデータが登録されたことを確認します。

Cosmos - 商品

デモスクリプト

デモの初期化:

  1. 開発用コンピューターで、MCP サーバーを起動します。
cd mcp-server
npx ts-node src/server.ts
  1. フロントエンドプロジェクトを起動します。
  • NextJS フロントエンド(ストアフロント)
    • cd nextjs
    • npm start
  1. 必要に応じて、コマンドプロンプトを開き、次のコマンドで MCP inspector を起動します。 npx -y @modelcontextprotocol/inspector

デモの手順:

  1. http://localhost:3002 に移動します。
  2. 右上隅にある AI アシスタントアイコンをクリックします。
  3. 「I'm interested in backpacks」と入力します(商品一覧が更新され、バックパックの一覧が表示されます)。
  4. 「Get my orders」と入力します(注文一覧が更新され、注文の一覧が表示されます)。

デモ

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。