mcpField
A
Amazon Bedrock Converse API and Database MCP Server Integration

Amazon Bedrock Converse API and Database MCP Server Integration

ローカル
github.com/aws-samplesデータベース882 週間前に更新

Amazon Bedrock Converse API and Database MCP Server Integration について

Amazon BedrockのConverse APIとリレーショナルデータベースを組み合わせ、自然言語でデータを照会するサンプルです。RDS PostgreSQLとSQLiteの読み取り専用方式を示し、他のMCP対応データベース連携の参考になります。

主な機能

  1. 01自然言語によるデータベース照会
  2. 02読み取り専用モード
  3. 03RDS PostgreSQLとSQLiteに対応
  4. 04Bedrock Converse APIとの連携
  5. 05Bedrock Guardrailsの任意利用

活用シーン

  1. 01データベースのレコードについて質問
  2. 02対話型データベースアクセスの試作
  3. 03MCPデータベース連携の実装例として参照

MCP 対応

MCPサーバーがデータベース操作とセキュリティを担い、BedrockのConverse APIをPostgreSQLおよびSQLiteのデータに接続します。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

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

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

詳細

Amazon Bedrock Converse API とデータベース MCP サーバーの統合

このサンプルでは、Model Context Protocol(MCP) サーバーアーキテクチャを通じて、AWS Bedrock の会話型 AI 機能とリレーショナルデータベースを統合する方法を紹介します。Bedrock の Converse API を活用して、クエリ専用モードでデータベースと自然言語でやり取りできるようにし、MCP サーバーがデータベース操作とセキュリティプロトコルの複雑さを処理します。

アーキテクチャ図

このアーキテクチャは、データベースアプリケーションに生成 AI 機能を組み込む開発者向けのリファレンス実装です。このサンプルでは RDS PostgreSQL と SQLite に焦点を当てていますが、このパターンは MCP サーバーとの統合をサポートする他のデータベースシステムにも容易に応用できます。

このサンプルでは、次の内容を紹介します。

  • Model Context Protocol(MCP)を使用した、RDS PostgreSQL および SQLite と AWS Bedrock の基盤モデルとの統合
  • Bedrock Converse API と MCP サーバーの統合
  • Bedrock の基盤モデルを使用したデータベースへの自然言語クエリ(読み取り専用)
  • MCP サーバーを介した、安全で効率的なデータベース操作
  • 既存のアプリケーションへの GenAI 機能の追加
  • 複数のデータベースに対応する GenAI ソリューションの基盤

AWS コンポーネント

このサンプルで使用する AWS リソースの一覧

  • Bedrock Converse API:基盤モデル(FM)との複数回のやり取りにわたり、コンテキスト、メモリ、状態を管理することで、リアルタイムの会話型エクスペリエンスを実現します。リンク
  • Bedrock Model:Anthropic Claude Sonnet 3.5、または Bedrock で利用できるその他の LLM。リンク
  • Bedrock Guardrails:アプリケーションの要件と責任ある AI ポリシーに合わせてカスタマイズした安全対策を実装します。リンク
  • RDS Postgres:データベースのクエリに使用します。リンク

前提条件

  • RDS PostgreSQL データベースを作成する権限を持つ AWS Identity and Access Management(IAM)権限がある AWS アカウント
  • Bedrock LLM へのアクセス
  • RDS Postgress への読み取り専用アクセス権を持つユーザー
  • Boto3 ライブラリをインストールした Python
  • Visual Studio Code などの IDE
  • ローカルシステム上の SQLite データベース
  • AWS RDS ルート証明書をこちらからダウンロード
  • 必要に応じて、LLM レベルで DDL クエリを停止するために Bedrock Guardrails を設定します。データベースユーザーに DDL 操作が許可されている場合でも、データベースで DDL 操作が実行されないようにできます。

リポジトリをクローンする

git clone https://github.com/aws-samples/sample-for-bedrock-integration-with-database-mcp-server

ステップ 1

たとえば VS Code IDE を使用して開発環境をセットアップします。

Node.js(v10.13.0 以降)がインストールされていることを確認してください。

AWS CDK をインストールします。

npm install -g aws-cdk

AWS CLI を認証情報で設定し、Bedrock が利用可能なリージョンを使用します。

aws configure

MacOS および Linux で仮想環境を手動で作成します。

python3 -m venv .venv

仮想環境を有効にします。

source .venv/bin/activate

仮想環境を有効にしたら、必要な依存関係をインストールできます。

pip install -r requirements.txt

npm を使用して PostgreSQL MCP サーバーをインストールします。

npm install -g @modelcontextprotocol/server-postgres

pip install mcp psycopg2-binary

Bedrock へのアクセス

ユーザーは、このサンプルで使用する Bedrock モデルにアクセスできる必要があります。このサンプルでは、次の設定を想定しています。

  • リージョン:agent.py で AWS セッションから設定します。
  • LLM:us.anthropic.claude-3-5-sonnet-20240620-v1:0 #mcpmain.py でクロスリージョン推論を使用します。クロスリージョン推論が不要な場合は、代わりに LLM エンドポイントを使用してください。

ステップ 2:RDS Postgres のセットアップとアクセス

RDS の作成とセットアップ

dbconfig.ini ファイルを以下の情報で変更します。

  • db_user = "xxx"
  • db_password = "xxx" //セキュリティ上の理由により、この設定はファイルから削除されています。忘れずに追加してください
  • db_host = "xxx.us-east-1.rds.amazonaws.com"
  • db_port = "5432"
  • db_name = "xxx"
  • ssl_cert_path = "/xxx/global-bundle.pem" //.pem ファイルの場所

ステップ 3:アプリケーションを実行し、自然言語で設定したデータベースにクエリを実行する

適切なデータベースタイプのオプションを指定して実行します。データベースタイプが指定されていない場合、チャットセッションではデフォルトとして SQLite が使用され、src/data フォルダー内に mymcpdb.db という名前のデータベースが作成されます。このファイルを変更すると、既存の SQLite データベースを指定できます。

cd src

python3 chat.py --db-type [sqlite / postgres]

次のような質問をします(データベースユーザーには、データベースでこれらの操作を実行する権限が必要です)。

  • products テーブルで利用可能な商品をすべて一覧表示する
  • 価格が 50.00 を超える商品の一覧

このサンプルの実行コスト

以下のサービスでは、使用量と稼働時間に応じて費用が発生します。必要に応じて、終了時にこれらのリソースへのアクセスを削除または無効にしてください。

追加情報

テスト用の RDS Postgres テーブルとデータのサンプル。簡単なテスト用です。

設定するデータベースユーザーには、これらの操作を実行するための十分な権限が必要です。このサンプルは読み取り専用の指示でのみ動作するため、これらの操作はデータベースツールを使用して、このサンプルの外部で実行する必要があります。

CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL, email VARCHAR(255) UNIQUE NOT NULL, created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP );

INSERT INTO users (name, email) VALUES ('John Doe', '[email protected]'), ('Jane Smith', '[email protected]'), ('Bob Wilson', '[email protected]'), ('Alice Johnson', '[email protected]'), ('Tom Brown', '[email protected]');

CREATE TABLE products ( product_id SERIAL PRIMARY KEY, name VARCHAR(255) NOT NULL, price DECIMAL(10,2) NOT NULL );

INSERT INTO products (name, price) VALUES ('Amazon Echo Dot (5th Gen)', 49.99), ('Kindle Paperwhite 8GB', 139.99), ('Fire TV Stick 4K', 49.99), ('Ring Video Doorbell', 99.99), ('Amazon Smart Plug', 24.99);

コメント

MCP は初めてですか?

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

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