Skip to main content
Glama
Amazon Bedrock Knowledge Base MCP Server

Amazon Bedrock Knowledge Base MCP Server

by r3-yamauchi

Amazon Bedrock Knowledge Base MCP Server (Unofficial)

Amazon Bedrock Knowledge Baseを管理するためのMCP(Model Context Protocol)サーバーです。

本プロジェクトでは FastMCPフレームワークを使用して Bedrock Knowledge Base に対する操作と RAG(Retrieval-Augmented Generation)機能を提供しています。

Ask DeepWiki

リポジトリ

https://github.com/r3-yamauchi/bedrock-kb-mcp-server

Related MCP server: personal-notes-assistant

起動方法

uvx --from git+https://github.com/r3-yamauchi/bedrock-kb-mcp-server bedrock-kb-mcp-server

主な機能

  • Knowledge Base管理: 作成、一覧取得、詳細取得、更新(敢えて削除機能は実装していません)

    • ストレージタイプは S3 のみをサポート

    • カスタムパーシング設定とチャンキング設定のサポート

  • データソース管理: 作成、一覧取得(敢えて削除機能は実装していません)

    • カスタムパーシング設定とチャンキング設定のサポート

  • データ取り込みジョブ: 開始、ステータス確認

  • RAGクエリ: Knowledge Baseに対する検索クエリの実行

  • S3ドキュメント管理: アップロード、一覧取得

プロジェクト構造

bedrock-kb-mcp-server/
├── pyproject.toml              # プロジェクト設定と依存関係
├── README.md                   # プロジェクトドキュメント
├── LICENSE                     # MITライセンス
├── .gitignore                  # Git除外設定
└── src/
    └── bedrock_kb_mcp_server/
        ├── __init__.py         # パッケージ初期化ファイル
        ├── main.py             # MCPサーバーのメインエントリーポイント
        ├── bedrock_client.py   # AWS Bedrock APIクライアントラッパー
        ├── models.py           # Pydanticモデル(バリデーションと型定義)
        ├── types.py            # TypedDict定義(型ヒントの改善)
        └── utils.py            # ユーティリティ関数(設定、エラーハンドリング、ログ、ARN正規化)

技術スタック

コアライブラリ

  • FastMCP (>=0.1.0): MCPサーバーを構築するためのフレームワーク

  • boto3 (>=1.26.0): AWS SDK for Python - AWSサービスとの通信に使用

  • pydantic (>=2.0.0): データバリデーションと設定管理

開発ツール

  • pytest (>=7.0): テストフレームワーク

  • pytest-asyncio (>=0.21.0): 非同期テストサポート

  • black (>=23.0): コードフォーマッター

  • ruff (>=0.1.0): 高速なPythonリンター

  • mypy (>=1.0): 静的型チェッカー

Python要件

  • Python 3.12以上が必要です

クイックスタート

前提条件

  • Python 3.12以上がインストールされていること

  • uvがインストールされていること

  • AWSアカウントと適切な認証情報が設定されていること

1. 依存関係のインストール

プロジェクトのルートディレクトリで以下のコマンドを実行します:

uv sync

開発環境の場合は:

uv sync --all-extras

2. AWS認証情報の設定

以下のいずれかの方法でAWS認証情報を設定します:

方法1: AWSプロファイルを使用(推奨)

export AWS_PROFILE=your-profile-name
export AWS_REGION=us-east-1

方法2: 環境変数で直接設定

export AWS_ACCESS_KEY_ID=your-access-key-id
export AWS_SECRET_ACCESS_KEY=your-secret-access-key
export AWS_REGION=us-east-1

方法3: AWS CLIで設定済みの場合

AWS CLIでaws configureを実行して設定済みの場合は、追加の設定は不要です。

3. 環境変数の設定(オプション)

ログレベルや構造化ログの設定を行います:

# ログレベルを設定(DEBUG, INFO, WARNING, ERROR, CRITICAL)
export FASTMCP_LOG_LEVEL=INFO

# 構造化ログ(JSON形式)を使用する場合
export FASTMCP_STRUCTURED_LOG=false

4. サーバーの起動

以下のコマンドでサーバーを起動します:

uv run bedrock-kb-mcp-server

正常に起動すると、以下のようなログが表示されます:

2024-01-01 12:00:00,000 - bedrock_kb_mcp_server.main - INFO - Starting Amazon Bedrock Knowledge Base MCP Server

5. 動作確認

MCP Serverは標準入力(stdin)からJSON-RPC形式のリクエストを受け取り、標準出力(stdout)にJSON-RPC形式のレスポンスを返します。

動作確認方法1: サーバーが起動していることを確認

サーバーを起動すると、以下のようなログが表示されます。このログが表示されれば、サーバーは正常に起動しています。

動作確認方法2: MCPクライアントを使用(推奨)

MCP対応のクライアント(例: Claude Desktop、Cursor IDEなど)を使用して接続します。

Claude Desktopの場合:

  1. ~/Library/Application Support/Claude/claude_desktop_config.jsonを編集

  2. MCP Serverを追加:

{
  "mcpServers": {
    "bedrock-kb-mcp-server": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/bedrock-kb-mcp-server", "bedrock-kb-mcp-server"],
      "env": {
        "AWS_PROFILE": "your-profile-name",
        "AWS_REGION": "us-east-1"
      }
    }
  }
}

Cursor IDEの場合:

  1. 設定からMCP Serverを追加

  2. コマンドパスと環境変数を設定

動作確認方法3: テストスクリプトを使用

プロジェクトに含まれているtest_mcp_server.pyを使用:

python3 test_mcp_server.py

注意: このスクリプトはサーバーが起動してリクエストに応答することを確認しますが、実際のAWS API呼び出しは行いません。

インストール

uv sync

開発環境の場合は:

uv sync --all-extras

使用方法

環境変数の設定

以下の環境変数を設定する必要があります:

  • AWS_PROFILE: AWSプロファイル名(認証情報の管理に使用)

  • AWS_REGION: AWSリージョン(例: us-east-1、デフォルト: us-east-1)

  • FASTMCP_LOG_LEVEL: ログレベル(DEBUG, INFO, WARNING, ERROR, CRITICAL、デフォルト: INFO)

  • FASTMCP_STRUCTURED_LOG: 構造化ログ(JSON形式)を使用するか(true/false、デフォルト: false)

サーバーの起動

uv run bedrock-kb-mcp-server

主要コンポーネント

1. bedrock_client.py - AWS Bedrock APIクライアント

AWS Bedrock Knowledge Base APIとの低レベルな通信を担当するラッパークラスです。

BedrockKBClient クラス

環境変数AWS_REGIONからリージョンを取得し、以下の3つのAWSクライアントを初期化します:

  • bedrock-agent: Knowledge Baseとデータソースの管理用

  • bedrock-agent-runtime: RAGクエリ実行用

  • s3: S3ドキュメント管理用

すべてのクライアントには以下の設定が適用されます:

  • リトライ設定(最大3回、adaptiveモード)

  • 接続タイムアウト(10秒)

  • 読み取りタイムアウト(30秒)

主要メソッド

Knowledge Base管理
  • create_knowledge_base(): 新しいKnowledge Baseを作成

  • list_knowledge_bases(): すべてのKnowledge Baseを一覧取得(ページネーション対応)

  • get_knowledge_base(): 特定のKnowledge Baseの詳細情報を取得

  • update_knowledge_base(): Knowledge Baseの名前、説明、IAMロールを更新

データソース管理

  • create_data_source(): Knowledge Baseにデータソースを追加

  • list_data_sources(): 指定されたKnowledge Baseのデータソース一覧を取得

データ取り込みジョブ管理
  • start_ingestion_job(): データソースからKnowledge Baseへのデータ取り込みジョブを開始

  • get_ingestion_job(): 取り込みジョブのステータスと統計情報を取得

RAGクエリ

  • retrieve(): Knowledge Baseに対してRAGクエリを実行(結果数1-100を指定可能)

S3ドキュメント管理

  • upload_document_to_s3(): ローカルファイルをS3バケットにアップロード

  • list_s3_documents(): S3バケット内のドキュメント一覧を取得(プレフィックスでフィルタリング可能)

2. main.py - MCPサーバーメイン

FastMCPフレームワークを使用してMCPサーバーを構築し、BedrockKBClientの機能をMCPツールとして公開します。

MCPツール

Knowledge Base管理ツール
  • create_knowledge_base: Knowledge Baseを作成

    • ストレージタイプ: S3、S3_VECTORS

    • 埋め込みモデル: Amazon Titan、Cohere、Amazon Nova Multimodal Embeddings v1

    • パーシング設定: BEDROCK_FOUNDATION_MODEL、BEDROCK_DATA_AUTOMATION

    • チャンキング設定: FIXED_SIZE、HIERARCHICAL、SEMANTIC、NONE

    • マルチモーダルストレージ設定(supplementalDataStorageConfiguration)

    • S3 ARN形式とS3 URI形式の両方をサポート

    • IAMロールARNのアカウントID自動補完

  • list_knowledge_bases: すべてのKnowledge Baseを一覧取得

  • get_knowledge_base: 特定のKnowledge Baseの詳細を取得

  • update_knowledge_base: Knowledge Baseを更新

データソース管理ツール
  • create_data_source: データソースを作成

    • パーシング設定とチャンキング設定のサポート

    • S3 ARN形式とS3 URI形式の両方をサポート

  • list_data_sources: データソース一覧を取得

データ取り込みツール
  • start_ingestion_job: 取り込みジョブを開始

  • get_ingestion_job: 取り込みジョブのステータスを取得

RAGクエリツール
  • retrieve: Knowledge Baseに対してRAGクエリを実行

S3ドキュメント管理ツール
  • upload_document_to_s3: S3にドキュメントをアップロード

  • list_s3_documents: S3バケット内のドキュメント一覧を取得

3. models.py - Pydanticモデル

リクエスト/レスポンスのバリデーションと型安全性を提供するPydanticモデルを定義します。

  • StorageType: ストレージタイプの列挙型(S3, S3_VECTORS)

  • SourceType: データソースタイプの列挙型(S3)

  • ParsingStrategy: パーシング戦略の列挙型(BEDROCK_FOUNDATION_MODEL, BEDROCK_DATA_AUTOMATION)

  • ChunkingStrategy: チャンキング戦略の列挙型(FIXED_SIZE, HIERARCHICAL, SEMANTIC, NONE)

  • ParsingConfiguration: パーシング設定モデル

  • ChunkingConfiguration: チャンキング設定モデル

  • VectorIngestionConfiguration: ベクトル取り込み設定モデル

  • CreateKnowledgeBaseRequest: Knowledge Base作成リクエストのバリデーション

    • S3 URI形式のサポート(自動的にARN形式に変換)

    • IAMロールARNのアカウントID自動補完

  • CreateDataSourceRequest: データソース作成リクエストのバリデーション

    • S3 URI形式のサポート(自動的にARN形式に変換)

  • 各種レスポンスモデル

4. types.py - TypedDict定義

APIレスポンスの型安全性を向上させるためのTypedDict定義を提供します。

  • KnowledgeBaseResponseDict: Knowledge Base作成/更新レスポンス

  • DataSourceResponseDict: データソース作成レスポンス

  • IngestionJobResponseDict: 取り込みジョブレスポンス

  • その他のレスポンス型定義

5. utils.py - ユーティリティ関数

設定管理、エラーハンドリング、ログ出力、ARN正規化などの共通機能を提供します。

  • validate_aws_credentials(): AWS認証情報の検証

  • get_log_level(): ログレベルの安全な取得

  • handle_errors(): エラーハンドリングデコレータ(AWS APIエラーの適切な処理)

    • 10種類以上のAWSエラーコードに対応

    • AWSリクエストIDを含む詳細なエラー情報

  • get_aws_account_id(): STSを使用してAWSアカウントIDを取得

  • normalize_s3_arn_or_uri(): S3 URI形式をARN形式に変換

  • normalize_iam_role_arn(): IAMロールARNのアカウントIDを自動補完

  • validate_required_string(): 必須文字列パラメータのバリデーション共通化

  • StructuredFormatter: 構造化ログフォーマッター(JSON形式)

  • sanitize_log_data(): 機密情報のマスキング

  • setup_logging(): ロギング設定の一元管理

ワークフロー例

1. Knowledge Baseの作成と設定

  1. S3バケットにドキュメントをアップロード

    upload_document_to_s3(local_file_path, bucket_name, s3_key)
  2. Knowledge Baseを作成(S3 URI形式とIAMロールARNの短縮形式を使用可能)

    # 基本的なKnowledge Base
    create_knowledge_base(
        name="My Knowledge Base",
        description="Example KB",
        role_arn="role/BedrockKBRole",  # アカウントIDなし形式(自動補完)
        storage_type="S3",
        bucket_arn="s3://my-bucket"  # S3 URI形式
    )
    
    # S3 Vectorsを使用したKnowledge Base
    create_knowledge_base(
        name="Vector KB",
        description="Vector search enabled KB",
        role_arn="arn:aws:iam::123456789012:role/BedrockKBRole",
        storage_type="S3_VECTORS",
        bucket_arn="s3://vector-bucket",
        embedding_model_arn="arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-embed-text-v1"
    )
    
    # マルチモーダルKnowledge Base(Amazon Nova Multimodal Embeddings v1)
    create_knowledge_base(
        name="Multimodal KB",
        description="KB with Nova Multimodal Embeddings",
        role_arn="role/BedrockKBRole",
        storage_type="S3_VECTORS",
        bucket_arn="s3://vector-bucket",
        embedding_model_arn="arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-2-multimodal-embeddings-v1:0",
        multimodal_storage_s3_uri="s3://multimodal-storage-bucket/"
    )
    
    # カスタムパーシングとチャンキング設定を使用
    create_knowledge_base(
        name="Custom KB",
        description="KB with custom parsing and chunking",
        role_arn="role/BedrockKBRole",
        storage_type="S3",
        bucket_arn="s3://my-bucket",
        parsing_strategy="BEDROCK_FOUNDATION_MODEL",
        parsing_model_arn="arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-sonnet-20240229-v1:0",
        parsing_modality="MULTIMODAL",
        chunking_strategy="FIXED_SIZE",
        chunking_max_tokens=1000,
        chunking_overlap_percentage=20
    )
  3. データソースを作成(S3 URI形式とカスタム設定を使用可能)

    # 基本的なデータソース
    create_data_source(
        knowledge_base_id="KB123",
        name="My Data Source",
        source_type="S3",
        bucket_arn="s3://my-bucket"  # S3 URI形式
    )
    
    # カスタムパーシングとチャンキング設定を使用
    create_data_source(
        knowledge_base_id="KB123",
        name="Custom Data Source",
        source_type="S3",
        bucket_arn="s3://my-bucket",
        parsing_strategy="BEDROCK_FOUNDATION_MODEL",
        parsing_model_arn="arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-sonnet-20240229-v1:0",
        chunking_strategy="FIXED_SIZE",
        chunking_max_tokens=1000,
        chunking_overlap_percentage=20
    )
  4. データ取り込みジョブを開始

    start_ingestion_job(knowledge_base_id, data_source_id)
  5. ジョブのステータスを確認

    get_ingestion_job(knowledge_base_id, data_source_id, ingestion_job_id)

2. RAGクエリの実行

  1. Knowledge Baseに対してクエリを実行

    retrieve(knowledge_base_id, query, number_of_results)
  2. 結果には関連ドキュメントと引用情報が含まれます

アーキテクチャの特徴

1. レイヤードアーキテクチャ

  • プレゼンテーション層: main.py - MCPツールの定義と公開

  • ビジネスロジック層: bedrock_client.py - AWS APIとの通信

  • データ層: models.py - データバリデーションと型定義

2. エラーハンドリング

  • すべてのAWS API呼び出しはClientErrorを適切に処理

  • 10種類以上のAWSエラーコードに対応(InternalServerException、InvalidParameterException、ResourceNotFoundExceptionなど)

  • AWSリクエストIDを含む詳細なエラー情報

  • エラーコードに応じた日本語メッセージを提供

  • エラー情報はログに記録され、ユーザーには分かりやすいメッセージが返却される

3. ロギング

  • 標準ログ: 人間が読みやすい形式(デフォルト)

  • 構造化ログ: JSON形式で出力可能(FASTMCP_STRUCTURED_LOG=trueで有効化)

  • 機密情報の自動マスキング: ARN、認証情報などが自動的にマスクされる

  • 環境変数でログレベルを制御可能

4. 型安全性

  • Pydanticを使用したデータバリデーション

  • TypedDictを使用したAPIレスポンスの型定義

  • すべてのMCPツール関数とBedrockKBClientメソッドの戻り値型を具体的に定義

  • 型ヒントの活用

  • mypyによる静的型チェック対応

  • IDEの補完機能と型安全性が向上

5. 入力バリデーションと正規化

  • ARN形式とURI形式の両方をサポート

    • S3 ARN形式: arn:aws:s3:::bucket-name

    • S3 URI形式: s3://bucket-name または s3://bucket-name/path(自動的にARN形式に変換)

    • IAMロールARN: 完全な形式または短縮形式(アカウントIDを自動補完)

  • 必須フィールドのチェック

  • ストレージタイプ、パーシング戦略、チャンキング戦略の列挙型による型安全性の向上

  • Pydanticモデルによる包括的なバリデーション

6. リトライロジック

  • AWS API呼び出しにリトライメカニズムを実装

  • 適応的リトライモード(adaptive)を使用

  • 一時的なネットワークエラーやレート制限エラーに対する自動リトライ

セキュリティ考慮事項

  1. AWS認証情報: 環境変数AWS_PROFILEを使用して認証情報を管理

  2. IAMロール: Knowledge Baseには適切なIAMロールが必要

  3. S3アクセス: S3バケットへのアクセス権限が必要

  4. リージョン設定: 適切なAWSリージョンを指定

  5. 機密情報のマスキング: ログ出力時にARN、認証情報などが自動的にマスクされる

トラブルシューティング

よくある問題

  1. AWS認証エラー

    • AWS_PROFILEが正しく設定されているか確認

    • AWS認証情報が有効か確認

    • boto3が自動的に認証情報を取得する場合もあるため(IAMロール、EC2インスタンスプロファイル)、明示的な設定がなくても動作する場合があります

  2. リージョンエラー

    • AWS_REGIONが正しく設定されているか確認

    • Bedrockがそのリージョンで利用可能か確認

  3. 権限エラー

    • IAMロールに必要な権限があるか確認

    • S3バケットへのアクセス権限があるか確認

  4. 取り込みジョブの失敗

    • データソースの設定を確認

    • S3バケット内のドキュメント形式を確認

  5. バリデーションエラー

    • ARN形式が正しい場合、エラーメッセージを確認

    • 必須フィールドがすべて指定されているか確認

エラー: AWS認証情報が見つからない

WARNING - AWS認証情報が明示的に設定されていません。

解決方法: AWS認証情報を設定してください(クイックスタートの手順2を参照)

エラー: モジュールが見つからない

ModuleNotFoundError: No module named 'fastmcp'

解決方法: 依存関係をインストールしてください

uv sync

エラー: Pythonバージョンが古い

ERROR: This package requires Python >=3.12

解決方法: Python 3.12以上をインストールしてください

サーバーが起動しない

  • ログレベルをDEBUGに設定して詳細なログを確認:

export FASTMCP_LOG_LEVEL=DEBUG
uv run bedrock-kb-mcp-server
  • 構造化ログを有効にしてJSON形式で確認:

export FASTMCP_STRUCTURED_LOG=true
uv run bedrock-kb-mcp-server

実際の使用例

Knowledge Baseの一覧を取得

MCPクライアントからlist_knowledge_basesツールを呼び出すと、AWSアカウント内のすべてのKnowledge Baseが返されます。

Knowledge Baseを作成

{
  "name": "my-knowledge-base",
  "description": "テスト用のKnowledge Base",
  "role_arn": "role/BedrockKnowledgeBaseRole",
  "storage_type": "S3",
  "bucket_arn": "s3://my-documents-bucket"
}

注意:

  • role_arnは短縮形式(role/ROLE_NAME)も使用可能で、アカウントIDが自動補完されます

  • bucket_arnはS3 URI形式(s3://bucket-name)も使用可能で、自動的にARN形式に変換されます

RAGクエリを実行

{
  "knowledge_base_id": "YOUR_KB_ID",
  "query": "ドキュメントの内容について教えてください",
  "number_of_results": 5
}

注意事項

  • 実際のAWS APIを呼び出すため、適切なAWS認証情報とIAM権限が必要です

  • Knowledge Baseの作成には、適切なIAMロールが必要です

  • S3バケットへのアクセス権限が必要です

  • リージョンによってはBedrockが利用できない場合があります

開発

コードフォーマット

black src/
ruff check src/
mypy src/

テスト(今後実装予定)

pytest

ライセンス

MIT License - see LICENSE file for details.

Available Tools

13 tools
create_bedrock_kb_roleA

Amazon Bedrock Knowledge Base用のサービスロールを作成します。

このツールは、Bedrock Knowledge Baseが使用するIAMロールを作成します。 ロールには以下の信頼ポリシーが設定されます:

  • Service: bedrock.amazonaws.com

  • Condition: aws:SourceAccountとaws:SourceArnによる制限

    • aws:SourceAccount: 現在のAWSアカウントID

    • aws:SourceArn: arn:aws:bedrock:[REGION]:[ACCOUNT_ID]:knowledge-base/*

Args: role_name: 作成するIAMロールの名前(必須) 例: "BedrockKnowledgeBaseRole" 注意: ロール名はAWSアカウント内で一意である必要があります region: Knowledge Baseを作成する先のリージョン(デフォルト: "us-east-1") 例: "us-east-1", "ap-northeast-1" 注意: 信頼ポリシーのaws:SourceArnにこのリージョンが使用されます このリージョンは、Knowledge Baseを作成する際に指定するリージョンと一致させる必要があります description: ロールの説明(デフォルト: "Bedrock Knowledge Base access") max_session_duration: 最大セッション時間(秒)(デフォルト: 3600秒 = 1時間) 範囲: 3600秒(1時間)から43200秒(12時間)まで

Returns: IAMRoleCreateResponseDict: ロール作成結果 - role_name: 作成されたロール名 - role_arn: ロールのARN(arn:aws:iam::ACCOUNT_ID:role/service-role/ROLE_NAME形式) - path: ロールのパス(/service-role/) - status: 作成ステータス("created")

Raises: ValueError: role_nameが空の場合、またはmax_session_durationが無効な範囲の場合 ClientError: AWS API呼び出しが失敗した場合 例: ロール名が既に使用されている、権限がないなど

Example: # 基本的なロール作成(デフォルトリージョン) create_bedrock_kb_role("BedrockKnowledgeBaseRole")

# 特定のリージョン用のロール作成
create_bedrock_kb_role("BedrockKnowledgeBaseRole", region="ap-northeast-1")

# カスタム説明とセッション時間を指定
create_bedrock_kb_role(
    "MyBedrockRole",
    description="Custom Bedrock KB role",
    max_session_duration=7200
)

Note: - ロールは /service-role/ パスに作成されます - 信頼ポリシーには、現在のAWSアカウントIDとリージョンが自動的に設定されます - ロール作成後、適切な権限ポリシーをアタッチする必要があります - ロール名が既に使用されている場合、EntityAlreadyExistsエラーが発生します

Inputs: role_name (required), region, description, max_session_duration. Returns: IAMロール作成のレスポンス型

create_data_sourceA

Knowledge Baseにデータソースを作成します。

データソースは、Knowledge Baseがデータを取得する場所を定義します。 S3バケットを指定し、必要に応じて特定のプレフィックス(フォルダ)のみを 含めることができます。パーシング設定とチャンキング設定を指定することで、 データソースごとに異なる処理方法を適用できます。

注意: Knowledge Baseのstorage_typeがS3_VECTORSでも、データソースのtypeは 常にS3になります。これらは異なる概念です:

  • storage_type: Knowledge Baseのストレージ設定(S3またはS3_VECTORS)

  • dataSourceConfiguration.type: データソースのタイプ(S3, WEB, CONFLUENCEなど)

Args: knowledge_base_id: データソースを追加するKnowledge BaseのID name: データソースの名前(1-100文字) source_type: データソースタイプ(現在は'S3'のみサポート、デフォルト: 'S3') bucket_arn: データソースとして使用するS3バケットのARN(arn:aws:s3:::BUCKET_NAME形式) inclusion_prefixes: 含めるS3プレフィックスのカンマ区切り文字列(オプション) 例: "documents/,images/" のように複数のプレフィックスを指定可能 空文字列の場合はバケット内のすべてのオブジェクトが対象

パーシング設定(オプション):
parsing_strategy: パーシング戦略
    - 'BEDROCK_FOUNDATION_MODEL': Foundation Modelを使用したパーシング
      (マルチモーダルデータ(画像、表、グラフなど)を処理可能、プロンプトカスタマイズ可能)
    - 'BEDROCK_DATA_AUTOMATION': Bedrock Data Automationを使用したパーシング
      (マルチモーダルデータを処理可能、完全マネージド、追加プロンプト不要)
    注意: 指定しない場合はKnowledge Baseのデフォルト設定が使用されます
parsing_model_arn: Foundation ModelのARN(parsing_strategy='BEDROCK_FOUNDATION_MODEL'の場合必須)
    例: "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-sonnet-20240229-v1:0"
    サポートされているモデル: Claude 3 Sonnet, Claude 3 Opus, Claude 3 Haikuなど
parsing_modality: マルチモーダル設定
    - 'MULTIMODAL': テキストと画像の両方を処理(オプション)
parsing_prompt_text: パーシングプロンプトのテキスト(オプション)
    Foundation Modelにドキュメントの解釈方法を指示するテキスト
    例: "Extract all text, tables, and figures from this document."

チャンキング設定(オプション):
chunking_strategy: チャンキング戦略
    - 'FIXED_SIZE': 固定サイズのチャンクに分割(推奨: max_tokens=1000, overlap_percentage=20)
    - 'HIERARCHICAL': 階層的なチャンクに分割(大きなチャンクと小さなチャンクの2層)
    - 'SEMANTIC': セマンティックなチャンクに分割(NLPを使用して類似コンテンツでグループ化)
    - 'NONE': チャンクに分割しない(各ファイルが1つのチャンクとして扱われる)
    注意: 指定しない場合はKnowledge Baseのデフォルト設定が使用されます
chunking_max_tokens: 最大トークン数(chunking_strategy='FIXED_SIZE'または'SEMANTIC'の場合に使用)
    - FIXED_SIZE: 1以上(推奨: 500-2000)
    - SEMANTIC: 1以上(推奨: 1000-3000)
chunking_overlap_percentage: オーバーラップ率(chunking_strategy='FIXED_SIZE'の場合に使用)
    範囲: 1-99(推奨: 10-30)
    隣接するチャンク間で重複するトークンの割合
chunking_overlap_tokens: オーバーラップトークン数(chunking_strategy='HIERARCHICAL'の場合に使用)
    階層チャンキングで使用する重複トークン数
chunking_buffer_size: バッファサイズ(chunking_strategy='SEMANTIC'の場合に使用)
    範囲: 0-1(推奨: 1)
    文を比較する際の移動コンテキストウィンドウのサイズ
chunking_breakpoint_threshold: ブレークポイントのパーセンタイル閾値(chunking_strategy='SEMANTIC'の場合に使用)
    範囲: 50-99(推奨: 80-95)
    チャンクを分割するための類似度閾値(低いほど多くのチャンクが作成される)

Returns: DataSourceResponseDict: データソースの作成結果 - data_source_id: 作成されたデータソースのID - status: データソースのステータス('CREATING', 'ACTIVE', 'FAILED'など)

Raises: ValueError: 入力値が無効な場合(source_typeが無効、バリデーションエラーなど) - source_typeが'S3'以外の場合 - parsing_strategy='BEDROCK_FOUNDATION_MODEL'でparsing_model_arnが指定されていない場合 - ARN形式が無効な場合

Examples: # 基本的なデータソースの作成(デフォルト設定) create_data_source( knowledge_base_id="KB123", name="My Data Source", source_type="S3", bucket_arn="arn:aws:s3:::my-bucket" )

# 特定のプレフィックスのみを含めるデータソース
create_data_source(
    knowledge_base_id="KB123",
    name="Documents Only",
    source_type="S3",
    bucket_arn="arn:aws:s3:::my-bucket",
    inclusion_prefixes="documents/,pdfs/"
)

# カスタムパーシングとチャンキング設定を使用
create_data_source(
    knowledge_base_id="KB123",
    name="Custom Data Source",
    source_type="S3",
    bucket_arn="arn:aws:s3:::my-bucket",
    parsing_strategy="BEDROCK_FOUNDATION_MODEL",
    parsing_model_arn="arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-sonnet-20240229-v1:0",
    parsing_modality="MULTIMODAL",
    chunking_strategy="FIXED_SIZE",
    chunking_max_tokens=1000,
    chunking_overlap_percentage=20
)

Inputs: knowledge_base_id (required), name (required), source_type, bucket_arn, +11 more. Returns: データソース作成のレスポンス型

create_knowledge_baseA

新しいAmazon Bedrock Knowledge Baseを作成します。

Args: name: Knowledge Baseの名前(1-100文字) description: Knowledge Baseの説明(1文字以上) role_arn: Knowledge Baseが使用するIAMロールのARN - 完全な形式: "arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME" - アカウントIDなし: "arn:aws:iam::role/ROLE_NAME" または "role/ROLE_NAME"(自動補完) storage_type: ストレージタイプ - 'S3': 標準的なS3ストレージ(デフォルト) - 'S3_VECTORS': S3 Vectorsを使用したベクトル検索対応ストレージ bucket_arn: ドキュメントを保存するS3バケットのARNまたはS3 URI - ARN形式: "arn:aws:s3:::BUCKET_NAME" - URI形式: "s3://BUCKET_NAME" または "s3://BUCKET_NAME/path" S3_VECTORSの場合はベクトルバケットARNまたはURIを指定 region: Knowledge Baseを作成する先のリージョン(デフォルト: "us-east-1") 例: "us-east-1", "ap-northeast-1" 注意: Knowledge Baseのリージョンは作成時に決定され、後から変更できません embedding_model_arn: 埋め込みモデルのARN(S3_VECTORSタイプの場合必須) 形式: "arn:aws:bedrock:REGION::foundation-model/MODEL_ID"

    サポートされている埋め込みモデル:
    - Amazon Titan Embeddings G1 - Text:
      "arn:aws:bedrock:REGION::foundation-model/amazon.titan-embed-text-v1"
      (ベクトル次元数: 1536、タイプ: Floating-point)
    
    - Amazon Titan Text Embeddings V2:
      "arn:aws:bedrock:REGION::foundation-model/amazon.titan-embed-text-v2:0"
      (ベクトル次元数: 256, 512, 1024、タイプ: Floating-point, binary)
    
    - Cohere Embed Multilingual:
      "arn:aws:bedrock:REGION::foundation-model/cohere.embed-multilingual-v3"
      (ベクトル次元数: 1024、タイプ: Floating-point, binary)
    
    - Amazon Nova Multimodal Embeddings v1:
      "arn:aws:bedrock:REGION::foundation-model/amazon.nova-2-multimodal-embeddings-v1:0"
      (ベクトル次元数: 1024、タイプ: Floating-point)
      (マルチモーダル対応: テキスト、画像、動画、音声を処理可能)
      注意: マルチモーダルコンテンツを処理する場合は、supplementalDataStorageConfiguration
      でマルチモーダルストレージ先を指定する必要があります
    
    例: "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-embed-text-v1"
    注意: リージョンは実際に使用するリージョンに置き換えてください

パーシング設定(オプション):
parsing_strategy: パーシング戦略
    - 'BEDROCK_FOUNDATION_MODEL': Foundation Modelを使用したパーシング
      (マルチモーダルデータ(画像、表、グラフなど)を処理可能、プロンプトカスタマイズ可能)
    - 'BEDROCK_DATA_AUTOMATION': Bedrock Data Automationを使用したパーシング
      (マルチモーダルデータを処理可能、完全マネージド、追加プロンプト不要)
    注意: 指定しない場合はデフォルトパーサーが使用されます(テキストのみ、無料)
parsing_model_arn: Foundation ModelのARN(parsing_strategy='BEDROCK_FOUNDATION_MODEL'の場合必須)
    例: "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-sonnet-20240229-v1:0"
    サポートされているモデル: Claude 3 Sonnet, Claude 3 Opus, Claude 3 Haikuなど
parsing_modality: マルチモーダル設定
    - 'MULTIMODAL': テキストと画像の両方を処理(オプション)
parsing_prompt_text: パーシングプロンプトのテキスト(オプション)
    Foundation Modelにドキュメントの解釈方法を指示するテキスト
    例: "Extract all text, tables, and figures from this document."

チャンキング設定(オプション):
chunking_strategy: チャンキング戦略
    - 'FIXED_SIZE': 固定サイズのチャンクに分割(推奨: max_tokens=1000, overlap_percentage=20)
    - 'HIERARCHICAL': 階層的なチャンクに分割(大きなチャンクと小さなチャンクの2層)
    - 'SEMANTIC': セマンティックなチャンクに分割(NLPを使用して類似コンテンツでグループ化)
    - 'NONE': チャンクに分割しない(各ファイルが1つのチャンクとして扱われる)
    注意: 指定しない場合はデフォルトのチャンキングが使用されます
chunking_max_tokens: 最大トークン数(chunking_strategy='FIXED_SIZE'または'SEMANTIC'の場合に使用)
    - FIXED_SIZE: 1以上(推奨: 500-2000)
    - SEMANTIC: 1以上(推奨: 1000-3000)
chunking_overlap_percentage: オーバーラップ率(chunking_strategy='FIXED_SIZE'の場合に使用)
    範囲: 1-99(推奨: 10-30)
    隣接するチャンク間で重複するトークンの割合
chunking_overlap_tokens: オーバーラップトークン数(chunking_strategy='HIERARCHICAL'の場合に使用)
    階層チャンキングで使用する重複トークン数
chunking_buffer_size: バッファサイズ(chunking_strategy='SEMANTIC'の場合に使用)
    範囲: 0-1(推奨: 1)
    文を比較する際の移動コンテキストウィンドウのサイズ
chunking_breakpoint_threshold: ブレークポイントのパーセンタイル閾値(chunking_strategy='SEMANTIC'の場合に使用)
    範囲: 50-99(推奨: 80-95)
    チャンクを分割するための類似度閾値(低いほど多くのチャンクが作成される)

Returns: KnowledgeBaseResponseDict: Knowledge Baseの作成結果 - knowledge_base_id: 作成されたKnowledge BaseのID - status: Knowledge Baseのステータス('CREATING', 'ACTIVE', 'FAILED'など) - arn: Knowledge BaseのARN(オプション)

Raises: ValueError: 入力値が無効な場合(バリデーションエラー) - storage_typeが無効な値の場合 - S3_VECTORSタイプでembedding_model_arnが指定されていない場合 - parsing_strategy='BEDROCK_FOUNDATION_MODEL'でparsing_model_arnが指定されていない場合 - ARN形式が無効な場合

Examples: # 基本的なKnowledge Baseの作成(デフォルト設定) create_knowledge_base( name="My Knowledge Base", description="Example KB", role_arn="arn:aws:iam::123456789012:role/BedrockKBRole", storage_type="S3", bucket_arn="s3://my-bucket" # S3 URI形式も使用可能 )

# S3 Vectorsを使用したKnowledge Baseの作成
create_knowledge_base(
    name="Vector KB",
    description="Vector search enabled KB",
    role_arn="role/BedrockKBRole",  # アカウントIDなし形式も使用可能(自動補完)
    storage_type="S3_VECTORS",
    bucket_arn="s3://vector-bucket",  # S3 URI形式も使用可能
    embedding_model_arn="arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-embed-text-v1"
)

# カスタムパーシングとチャンキング設定を使用
create_knowledge_base(
    name="Custom KB",
    description="KB with custom parsing and chunking",
    role_arn="arn:aws:iam::123456789012:role/BedrockKBRole",
    storage_type="S3",
    bucket_arn="arn:aws:s3:::my-bucket",
    parsing_strategy="BEDROCK_FOUNDATION_MODEL",
    parsing_model_arn="arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-sonnet-20240229-v1:0",
    parsing_modality="MULTIMODAL",
    chunking_strategy="FIXED_SIZE",
    chunking_max_tokens=1000,
    chunking_overlap_percentage=20
)

# Amazon Nova Multimodal Embeddings v1を使用したマルチモーダルKnowledge Base
create_knowledge_base(
    name="Multimodal KB",
    description="KB with Nova Multimodal Embeddings",
    role_arn="arn:aws:iam::123456789012:role/BedrockKBRole",
    storage_type="S3_VECTORS",
    bucket_arn="arn:aws:s3:::vector-bucket",
    embedding_model_arn="arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-2-multimodal-embeddings-v1:0",
    multimodal_storage_s3_uri="s3://multimodal-storage-bucket/"
)

Inputs: name (required), description (required), role_arn (required), storage_type, +14 more. Returns: Knowledge Base作成/更新のレスポンス型

create_s3_bucketA

S3バケットを新規作成します。

バケット名は以下のルールに従う必要があります:

  • 3文字以上63文字以下

  • 小文字、数字、ハイフン(-)、ピリオド(.)のみ使用可能

  • 先頭と末尾は小文字または数字である必要がある

  • 連続するハイフンやピリオドは使用不可

  • IPアドレス形式(例: 192.168.1.1)は使用不可

  • バケット名はグローバルに一意である必要があります

注意: セキュリティ上の理由から、パブリックアクセスブロックは常に有効化されます。

Args: bucket_name: 作成するS3バケット名(必須) 例: "my-documents-bucket" region: バケットを作成するリージョン(デフォルト: "us-east-1") 例: "us-east-1", "ap-northeast-1" 注意: us-east-1リージョンの場合、LocationConstraintは指定しません

Returns: S3BucketCreateResponseDict: バケット作成結果 - bucket_name: 作成されたバケット名 - region: バケットが作成されたリージョン - arn: バケットのARN(arn:aws:s3:::bucket-name形式) - status: 作成ステータス("created")

Raises: ValueError: bucket_nameが空の場合、またはバケット名が無効な形式の場合 ClientError: AWS API呼び出しが失敗した場合 例: バケット名が既に使用されている、権限がないなど

Example: # 基本的なバケット作成(デフォルトリージョン、パブリックアクセスブロック有効) create_s3_bucket("my-documents-bucket")

# 特定のリージョンにバケットを作成
create_s3_bucket("my-documents-bucket", region="ap-northeast-1")

Note: - バケットの作成には数秒かかる場合があります - バケット名が既に使用されている場合、BucketAlreadyOwnedByYouまたはBucketAlreadyExistsエラーが発生します - パブリックアクセスブロック設定は、バケット作成後に自動的に適用されます

Inputs: bucket_name (required), region. Returns: S3バケット作成のレスポンス型

get_ingestion_jobA

取り込みジョブのステータスと詳細情報を取得します。

取り込みジョブの進捗状況、統計情報、エラー情報などを取得できます。

Args: knowledge_base_id: Knowledge BaseのID data_source_id: データソースのID ingestion_job_id: 取り込みジョブのID(start_ingestion_jobで取得)

Returns: IngestionJobResponseDict: 取り込みジョブの詳細情報 - ingestion_job_id: 取り込みジョブのID - status: ジョブのステータス - "STARTING": ジョブが開始中 - "IN_PROGRESS": ジョブが実行中 - "COMPLETE": ジョブが完了 - "FAILED": ジョブが失敗 - statistics: 統計情報(オプション、ジョブが進行中または完了している場合) - numberOfDocumentsScanned: スキャンされたドキュメント数 - numberOfDocumentsModified: 変更されたドキュメント数 - numberOfDocumentsDeleted: 削除されたドキュメント数 - numberOfDocumentsFailed: 失敗したドキュメント数

Raises: ValueError: いずれかのIDが空の場合

Inputs: knowledge_base_id (required), data_source_id (required), ingestion_job_id (required). Returns: 取り込みジョブのレスポンス型

get_knowledge_baseB

特定のAmazon Bedrock Knowledge Baseの詳細情報を取得します。

Args: knowledge_base_id: Knowledge BaseのID

Returns: KnowledgeBaseDetailDict: Knowledge Baseの詳細情報 - id: Knowledge BaseのID - name: Knowledge Baseの名前 - status: Knowledge Baseのステータス - description: Knowledge Baseの説明(オプション) - arn: Knowledge BaseのARN(オプション) - その他の設定情報

Raises: ValueError: knowledge_base_idが空の場合

Inputs: knowledge_base_id (required). Returns: Knowledge Base詳細情報の型

list_data_sourcesB

指定されたKnowledge Baseのデータソース一覧を取得します。

Knowledge Baseに紐づけられているすべてのデータソースを取得します。

Args: knowledge_base_id: Knowledge BaseのID

Returns: DataSourceListResponseDict: データソース一覧 - count: データソースの数 - data_sources: データソースの詳細情報のリスト 各要素には以下の情報が含まれます: - id: データソースのID - name: データソースの名前 - status: データソースのステータス - dataSourceConfiguration: データソースの設定情報

Raises: ValueError: knowledge_base_idが空の場合

Inputs: knowledge_base_id (required). Returns: データソース一覧のレスポンス型

list_knowledge_basesB

すべてのAmazon Bedrock Knowledge Baseの一覧を取得します。

Returns: KnowledgeBaseListResponseDict: Knowledge Base一覧 - count: Knowledge Baseの数 - knowledge_bases: Knowledge Baseの詳細情報のリスト

Inputs: no named parameters. Returns: Knowledge Base一覧のレスポンス型

list_s3_documentsA

S3バケット内のドキュメント一覧を取得します。

指定されたプレフィックス(フォルダ)に一致するドキュメントのみを 取得することもできます。

Args: bucket_name: S3バケット名 prefix: フィルタリングするS3プレフィックス(オプション) 例: "documents/" を指定すると、documents/フォルダ内の ファイルのみが返されます

Returns: S3DocumentListResponseDict: ドキュメント一覧 - count: ドキュメントの数 - bucket: バケット名 - prefix: 使用されたプレフィックス(指定した場合) - documents: ドキュメントの詳細情報のリスト 各要素には以下の情報が含まれます: - key: S3オブジェクトキー(ファイルパス) - size: ファイルサイズ(バイト) - last_modified: 最終更新日時(ISO形式)

Raises: ValueError: bucket_nameが空の場合

Example: # すべてのドキュメントを取得 list_s3_documents("my-bucket")

# 特定のプレフィックスのドキュメントのみを取得
list_s3_documents("my-bucket", "documents/")

Inputs: bucket_name (required), prefix. Returns: S3ドキュメント一覧のレスポンス型

retrieveB

Knowledge Baseに対してRAG(Retrieval-Augmented Generation)クエリを実行します。

ベクトル検索を使用して、クエリに関連するドキュメントを取得します。

Args: knowledge_base_id: クエリ対象のKnowledge BaseのID query: 検索クエリのテキスト number_of_results: 返す結果の数(デフォルト: 5、範囲: 1-100)

Returns: RetrieveResponseDict: クエリ結果 - results: 検索結果のリスト(各結果にはcontent、location、score、metadataが含まれる) - query: 実行したクエリテキスト

Raises: ValueError: 入力値が無効な場合(knowledge_base_idやqueryが空、number_of_resultsが範囲外など)

Inputs: knowledge_base_id (required), query (required), number_of_results. Returns: RAGクエリのレスポンス型

start_ingestion_jobA

データソースからKnowledge Baseへのデータ取り込みジョブを開始します。

このジョブは非同期で実行され、データソース内のドキュメントを Knowledge Baseに取り込みます。ジョブの進捗はget_ingestion_jobで確認できます。

Args: knowledge_base_id: Knowledge BaseのID data_source_id: データソースのID

Returns: IngestionJobResponseDict: 取り込みジョブの開始結果 - ingestion_job_id: 開始された取り込みジョブのID - status: ジョブのステータス(通常は "STARTING" または "IN_PROGRESS") - statistics: 統計情報(オプション、ジョブ開始時は通常None)

Raises: ValueError: knowledge_base_idまたはdata_source_idが空の場合

Note: 取り込みジョブは非同期で実行されるため、この関数は即座に返ります。 ジョブの完了を待つには、get_ingestion_jobを定期的に呼び出して ステータスを確認してください。

Inputs: knowledge_base_id (required), data_source_id (required). Returns: 取り込みジョブのレスポンス型

update_knowledge_baseA

Amazon Bedrock Knowledge Baseを更新します。

Knowledge Baseの名前、説明、IAMロールを更新できます。 空文字列のパラメータは更新されません(既存の値が保持されます)。

Args: knowledge_base_id: 更新対象のKnowledge BaseのID name: 新しい名前(オプション、空文字列の場合は更新されない) description: 新しい説明(オプション、空文字列の場合は更新されない) role_arn: 新しいIAMロールARN(オプション、空文字列の場合は更新されない)

Returns: KnowledgeBaseResponseDict: 更新されたKnowledge Baseのステータス - knowledge_base_id: Knowledge BaseのID - status: Knowledge Baseのステータス - arn: Knowledge BaseのARN(オプション)

Raises: ValueError: knowledge_base_idが空の場合

Inputs: knowledge_base_id (required), name, description, role_arn. Returns: Knowledge Base作成/更新のレスポンス型

upload_document_to_s3A

ローカルファイルをS3バケットにアップロードします。

アップロードされたファイルは、Knowledge Baseのデータソースとして 使用できます。

Args: local_file_path: アップロードするローカルファイルのパス bucket_name: アップロード先のS3バケット名 s3_key: S3オブジェクトキー(バケット内のパス) 例: "documents/myfile.pdf" のようにパスを指定可能

Returns: S3UploadResponseDict: アップロード結果 - s3_uri: アップロードされたファイルのS3 URI(s3://bucket/key形式) - status: アップロードステータス("uploaded")

Raises: ValueError: パラメータが空の場合、またはファイルが存在しない場合

Example: upload_document_to_s3( "/path/to/document.pdf", "my-bucket", "documents/document.pdf" ) # 戻り値: {"s3_uri": "s3://my-bucket/documents/document.pdf", "status": "uploaded"}

Inputs: local_file_path (required), bucket_name (required), s3_key (required). Returns: S3アップロードのレスポンス型

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 13 tools

    Disambiguation5/5

    Each tool has a distinct purpose with clear boundaries: create_bedrock_kb_role handles IAM role creation, create_s3_bucket and upload_document_to_s3 manage S3 infrastructure, create_knowledge_base and update_knowledge_base manage KB lifecycle, create_data_source configures data sources, start_ingestion_job and get_ingestion_job handle ingestion workflows, list_* tools provide read-only views, and retrieve performs querying. There is no functional overlap between tools.

    Naming Consistency5/5

    All tools follow a consistent verb_noun naming pattern with snake_case: create_bedrock_kb_role, create_data_source, create_knowledge_base, create_s3_bucket, get_ingestion_job, get_knowledge_base, list_data_sources, list_knowledge_bases, list_s3_documents, retrieve, start_ingestion_job, update_knowledge_base, upload_document_to_s3. The pattern is perfectly uniform across all 13 tools.

    Tool Count5/5

    With 13 tools, the set is well-scoped for managing Amazon Bedrock Knowledge Bases. It covers the full lifecycle: infrastructure setup (S3, IAM), KB CRUD operations, data source management, ingestion workflows, querying, and listing operations. Each tool serves a necessary purpose without redundancy.

    Completeness4/5

    The toolset provides comprehensive coverage for core KB workflows: create, read, update, list, and query operations are well-represented. Minor gaps include the lack of delete operations for knowledge bases, data sources, or S3 resources, and no tool to attach policies to the created IAM role. However, agents can still accomplish most tasks with the available tools.

    Related MCP Connectors

    Related MCP Servers