メインコンテンツへスキップ

AWS MCP SERVER使ってみた. core-mcp-serverのコンセプトは素晴らしい!が・・・

· loading · loading ·
kiitosu
著者
kiitosu
画像処理やデバイスドライバ、データ基盤構築からWebバックエンドまで、多様な領域に携わってきました。地図解析や地図アプリケーションの仕組みにも経験があり、幅広い技術を活かした開発に取り組んでいます。休日は草野球とランニングを楽しんでいます。
目次

はじめに
#

先日 AWS MCP SERVER について調べてみました。MCPサーバの種類の多さに圧倒され使うまでに至りませんでした。 今日はいくつかのMCPを掘り下げ、実際に使ってみたいと思います。特にMCP同士の連携が気になっていて、とりあえず全部入りにしておけばいいのか?というあたりの肌感を掴むのが目的です。

まとめ
#

  • いくつかの MCPサーバ を使ってみました
  • Core MCP Server でロールごとに適切なMCPサーバを使うことができました
  • Gemini と連携して MCPサーバ を使ってみました
  • aws-vault を使ってAWSプロファイルを指定して実行する必要がありました
  • MCPサーバ の効果が感じられない!まだもうちょい成熟しないと使いがってわるすぎる?

使ってみるMCPサーバ
#

以下6つがかなり基本的なところのようなので1つずつ動作確認してみたいと思います。

  1. Core MCP Server
  2. AWS Knowledge MCP Server
  3. AWS API MCP Server
  4. AWS Documentation MCP Server
  5. AWS Support MCP Server
  6. Amazon Aurora PostgreSQL MCP Server
  7. OpenAPI MCP Server

1. Core MCP Server
#

概要
#

ロールベースの環境変数に基づく動的なプロキシサーバ戦略を通じて、AWS MCP サーバを利用するための出発点を提供する MCP サーバ。

ちょっと何言ってるかわかんないスネ。

機能
#

計画立案と統制
#

  • プロンプトの理解とAWSサービス向けの翻訳をするツールを提供する

動的サーバ戦略
#

Core MCP サーバは、ロールベースの環境変数に基づいて他の MCP サーバを動的にインポートおよびプロキシするプロキシサーバ戦略を実装しています。これにより、各サーバを手動で構成することなく、特定のユースケースやロールに合わせたサーバ構成を作成できます。

なるほど、ちょいわかったかも。MCPサーバという専門家達がいて、その中の Core MCP は中間管理職的なイメージでユースケースやロールに従って適切なMCPサーバに仕事を依頼(プロキシ)する。どのロールを使うかは環境変数で指定する。

ロールベースのサーバ設定
#

環境変数を設定することで特定のロールを有効にできます。各ロールは、特定のユースケースでよく一緒に使用される MCP サーバの論理的なグループに対応します。

ロール 説明 含まれるMCPサーバ
aws-foundation AWSの知識とAPIサーバ aws-knowledge-server, aws-api-server
dev-tools 開発ツール git-repo-research-server, code-doc-gen-server, aws-knowledge-server
ci-cd-devops CI/CDとDevOps cdk-server, cfn-server
container-orchestration コンテナ管理 eks-server, ecs-server, finch-server
serverless-architecture サーバレス開発 serverless-server, lambda-tool-server, stepfunctions-tool-server, sns-sqs-server
analytics-warehouse データ分析とウェアハウジング redshift-server, timestream-for-influxdb-server, dataprocessing-server, syntheticdata-server
data-platform-eng データプラットフォームエンジニアリング dynamodb-server, s3-tables-server, dataprocessing-server
frontend-dev フロントエンド開発 frontend-server, nova-canvas-server
solutions-architect ソリューションアーキテクチャ diagram-server, pricing-server, cost-explorer-server, syntheticdata-server, aws-knowledge-server
finops FinOps (財務オペレーション) cost-explorer-server, pricing-server, cloudwatch-server, billing-cost-management-server
monitoring-observability モニタリングとオブザーバビリティ cloudwatch-server, cloudwatch-appsignals-server, prometheus-server, cloudtrail-server
caching-performance キャッシングとパフォーマンス elasticache-server, memcached-server
security-identity セキュリティとアイデンティティ iam-server, support-server, well-architected-security-server
sql-db-specialist SQLデータベーススペシャリスト postgres-server, mysql-server, aurora-dsql-server, redshift-server
nosql-db-specialist NoSQLデータベーススペシャリスト dynamodb-server, documentdb-server, keyspaces-server, neptune-server
timeseries-db-specialist 時系列データベーススペシャリスト timestream-for-influxdb-server, prometheus-server, cloudwatch-server
messaging-events メッセージングとイベント sns-sqs-server, mq-server
healthcare-lifesci ヘルスケアとライフサイエンス healthomics-server
これはわかりやすい。ロールによって使えるMCPサーバが設定されているわけですね。aws-foundation だと aws-knowledge-serveraws-api-server が使える。複数のロールを割り当てができ、MCPサーバが重複する場合もあるけれどもプロキシが重複しない様に制御してくれている。

プロキシサーバ戦略の効果
#

  • 簡素化された構成: 単一の環境変数で複数のサーバーを有効化
  • 重複の削減: 複数のロールで必要な場合でも、サーバーは一度だけインポート
  • 最適化された体験: 特定のユースケースに合わせてカスタムサーバー構成を作成
  • 柔軟なデプロイ: 異なるサーバー構成を容易に切り替え可能

利用時の注意
#

ロールが有効化されていない場合でも、Core MCP サーバーは基本機能(prompt_understanding)を提供しますが、追加のサーバーはインポートされません。複数のロールを同時に有効化することで、包括的なサーバー構成を作成できます。プロキシ戦略により、複数のロールで必要とされる場合でも各サーバーは一度だけインポートされます。

事前条件
#

  • Python 3.12 or higher
  • uv Pythonのパッケージ管理ツール
  • Bedrock アクセスを使って設定されたAWSの資格情報
  • Node.js: UVX インストールのため

インストール手続き
#

Cursor VS Code
Install MCP Server
Install on VS Code

MCPクライアント設定でMCPサーバを設定します。(Amazon Q Developer CLIの場合は ~/.aws/amazonq/mcp.json を編集します):

{
  "mcpServers": {
    "awslabs.core-mcp-server": {
      "command": "uvx",
      "args": [
        "awslabs.core-mcp-server@latest"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR",
        "aws-foundation": "true",
        "solutions-architect": "true"
        // Add other roles as needed
      },
      "autoApprove": [],
      "disabled": false
    }
  }
}

特定のロールベースのサーバー設定を有効にするには、MCPクライアント設定の env セクションに対応する環境変数を追加します。例えば、上記の設定では aws-foundation およびsolutions-architect ロールが有効になり、対応するMCPサーバーがインポートされます。

Windows でのインストール
#

Windowsの場合はMCPサーバの設定フォーマットが若干異なります。

{
  "mcpServers": {
    "awslabs.core-mcp-server": {
      "disabled": false,
      "timeout": 60,
      "type": "stdio",
      "command": "uv",
      "args": [
        "tool",
        "run",
        "--from",
        "awslabs.core-mcp-server@latest",
        "awslabs.core-mcp-server.exe"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR",
        "AWS_PROFILE": "your-aws-profile",
        "AWS_REGION": "us-east-1",
        "aws-foundation": "true",
        "solutions-architect": "true"
        // Add other roles as needed
      }
    }
  }
}

あるいはドッカーの場合は docker build -t awslabs/core-mcp-server . が成功した後に

  {
    "mcpServers": {
      "awslabs.core-mcp-server": {
        "command": "docker",
        "args": [
          "run",
          "--rm",
          "--interactive",
          "--env",
          "FASTMCP_LOG_LEVEL=ERROR",
          "--env",
          "aws-foundation=true",
          "--env",
          "solutions-architect=true",
          "awslabs/core-mcp-server:latest"
        ],
        "env": {},
        "disabled": false,
        "autoApprove": []
      }
    }
  }

ツールとリソース
#

サーバは MCPインタフェースを通して次の機能を提供します。

  • prompt_understanding AWS Solutionを組み立てる時のガイドと計画立てを提供します。

githubのREADMEによるMCPの解説は以上

理解できなかったこと
#

  • MCPサーバ自体は別途インストールする必要があるのか? core-mcp-server を入れてロールを設定すれば必要なMCPサーバをインストールしてくれるのか?
  • LLM側が core-mcp-server に問い合わせをしてくれるかどうか分からなくないか? 直接 aws-foundation と話されたりしないのか?もしそれがあり得るならロール定義外のMCPサーバにもアクセスできちゃうのでは?

使ってみる
#

インストール
#

最近 Gemini CLI を使うことが多いのでその設定をしてみる。 プロジェクト内の .gemini/settings.json に以下を追記。

    "mcpServers": {
        "awslabs.core-mcp-server": {
        "command": "uvx",
        "args": [
            "awslabs.core-mcp-server"
        ],
        "env": {
            "FASTMCP_LOG_LEVEL": "ERROR",
            "aws-foundation": "true",
            "solutions-architect": "true"
            // Add other roles as needed
        },
        "autoApprove": [],
        "disabled": false
        }
    }

以下のようにMCPサーバにつなぎに行く様子がわかる。

$ gemini
[DEBUG] [IDEClient] Attempting to connect to IDE via HTTP SSE
⠙ Connecting to MCP servers... (0/1)
AWS MCPサーバー ざっくりまとめ(READMEベース) にも書きましたが、@latestを書くとこの時の起動時間が毎回長くなります。

以下のエラーが出た。

Skipping tool 'diagram_get_diagram_examples' from MCP server 'awslabs.core-mcp-server' because it has missing types in its parameter schema. Please file an issue with the owner of the MCP server.
Skipping tool 'pricing_get_pricing' from MCP server 'awslabs.core-mcp-server' because it has missing types in its parameter schema. Please file an issue with the owner of the MCP server.
Skipping tool 'cost_explorer_get_dimension_values' from MCP server 'awslabs.core-mcp-server' because it has missing types in its parameter schema. Please file an issue with the owner of the MCP server.
Skipping tool 'cost_explorer_get_tag_values' from MCP server 'awslabs.core-mcp-server' because it has missing types in its parameter schema. Please file an issue with the owner of the MCP server.
Skipping tool 'cost_explorer_get_cost_forecast' from MCP server 'awslabs.core-mcp-server' because it has missing types in its parameter schema. Please file an issue with the owner of the MCP server.
Skipping tool 'cost_explorer_get_cost_and_usage_comparisons' from MCP server 'awslabs.core-mcp-server' because it has missing types in its parameter schema. Please file an issue with the owner of the MCP server.
Skipping tool 'cost_explorer_get_cost_comparison_drivers' from MCP server 'awslabs.core-mcp-server' because it has missing types in its parameter schema. Please file an issue with the owner of the MCP server.
Skipping tool 'cost_explorer_get_cost_and_usage' from MCP server 'awslabs.core-mcp-server' because it has missing types in its parameter schema. Please file an issue with the owner of the MCP server.
Skipping tool 'syntheticdata_validate_and_save_data' from MCP server 'awslabs.core-mcp-server' because it has missing types in its parameter schema. Please file an issue with the owner of the MCP server.
Skipping tool 'syntheticdata_load_to_storage' from MCP server 'awslabs.core-mcp-server' because it has missing types in its parameter schema. Please file an issue with the owner of the MCP server.
Skipping tool 'syntheticdata_execute_pandas_code' from MCP server 'awslabs.core-mcp-server' because it has missing types in its parameter schema. Please file an issue with the owner of the MCP server.
Loaded cached credentials.

その後以下のメッセージが表示された。

Using: 3 open files (ctrl+g to view) | 1 MCP server (ctrl+t to view)

ctrl+t してみる。


ℹConfigured MCP servers:
 
  🟢 awslabs.core-mcp-server - Ready (18 tools)
    Tools:
    - aws_api_call_aws
    - aws_api_suggest_aws_commands
    - aws_knowledge_aws___read_documentation
    - aws_knowledge_aws___recommend
    - aws_knowledge_aws___search_documentation
    - cost_explorer_get_today_date
    - diagram_generate_diagram
    - diagram_list_icons
    - pricing_analyze_cdk_project
    - pricing_analyze_terraform_project
    - pricing_generate_cost_report
    - pricing_get_bedrock_patterns
    - pricing_get_price_list_urls
    - pricing_get_pricing_attribute_values
    - pricing_get_pricing_service_attributes
    - pricing_get_pricing_service_codes
    - prompt_understanding
    - syntheticdata_get_data_gen_instructions

どうやらMCPサーバの準備ができたようです。

`ctrl-t’ をした時、最初はまだツールが準備されていないようで、以下のようなエラーが出ていました。ツールの準備が完了するには暫く待つ必要があるようです。
alt text

試す
#

S3のバケットリスト取得方法を聞いてみたところ、awslabs.core-mcp-server を使うよ!と言ってくれました。

╭────────────────────────────────────────────────╮
│  > s3のバケットのリスト取得方法を教えて下さい         │
╰────────────────────────────────────────────────╯

✦ はい、S3バケットのリストを取得します。次のコマンドを実行します。
 ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ?  aws_api_call_aws (awslabs.core-mcp-server MCP Server) {"cli_command":"aws s3 ls","description":"List all S3… ← │
 │                                                                                                                   │
 │   MCP Server: awslabs.core-mcp-server                                                                             │
 │   Tool: aws_api_call_aws                                                                                          │
 │                                                                                                                   │
 │ Allow execution of MCP tool "aws_api_call_aws" from server "awslabs.core-mcp-server"?                             │
 │                                                                                                                   │
 │ ● 1. Yes, allow once                                                                                              │
 │   2. Yes, always allow tool "aws_api_call_aws" from server "awslabs.core-mcp-server"                              │
 │   3. Yes, always allow all tools from server "awslabs.core-mcp-server"                                            │
 │   4. No, suggest changes (esc)                                                                                    │
 │                                                                                                                   │
 ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

1. Yes, allow once したところ以下の返答が来ました。やり方を聞いているだけなんですが、s3 list を実行しようとしているんですかね。

✦ 資格情報が設定されていないため、S3バケットのリスト取得に失敗しました。
  aws configure を実行して、AWSの認証情報を設定してください。設定後、再度コマンドを実行してください。

MCP設定がない場合は以下の返答でした。まあ普通の回答ですね。

╭────────────────────────────────────────────────╮
│  > s3のバケットのリスト取得方法を教えて下さい         │
╰────────────────────────────────────────────────╯

✦ AWS CLIを使用してS3バケットのリストを取得できます。次のコマンドを実行します。

  aws s3 ls

  このコマンドを実行して、バケットのリストを表示しますか?

私は AWSの認証情報管理として aws-vault を使っているので aws-vault を使えないか聞いたところ以下の回答になりました。 なかなか難しいですね。そしてコマンド自体はMCPサーバがあってもなくても s3 ls するだけなので大きな差はないですね。

✦ aws-vault を使用したコマンドは、MFA(多要素認証)コードの入力を求めたため失敗しました。このツールは対話的な入力に対応
  していません。

  お手数ですが、以下のコマンドを直接お使いのターミナルで実行していただけますでしょうか。

   1 aws-vault exec ${profile} -- aws s3 ls

  コマンドを実行するとMFAコードの入力が求められますので、ご入力ください。これにより、S3バケットのリストが表示されます。

aws-vault exec の対象として gemini を実行することでMCPサーバにアクセスはできました。

aws-vault exec profile -- gemini

さっきの質問は簡単すぎて、MCPサーバの効果がわからないので、どんな質問がいいかgeminiにきいてみました。

AWS MCPサーバーを効果的に使うことができるプロンプト例を教えて下さい

以下の回答を得られました。

✦ はい、承知いたしました。AWS MCPサーバー(Gemini in the
  CLI)を効果的に活用するためのプロンプト例を、目的別にいくつかご紹介します。

  1. AWSリソースの操作・情報取得

  具体的な操作や、AWS
  CLIコマンドが分からない場合でも、自然言語で指示するだけでエージェントがコマンドを提案・実行します。

  例:
   * 「EC2インスタンスの一覧を、t2.microタイプでフィルタリングして表示して。」
   * 「testプロファイルを使って、東京リージョン(ap-northeast-1)のVPCをすべてリストアップして。」
   * 「一番最近作成されたAMIのIDを教えて。」
   * 「IAMユーザー test-user を作成し、AmazonS3ReadOnlyAccessポリシーをアタッチするコマンドを教えて。」
   * 「(エラーが出た時に)このエラーの原因は何?どうすれば解決できる?」

  2. AWSの知識・ベストプラクティスに関する質問

  AWSの仕様、料金、ベストプラクティスなど、ドキュメントを横断して調査が必要な質問に役立ちます。

  例:
   * 「Amazon Bedrockの料金体系について、特にClaude 3 Sonnetモデルのオンデマンド料金を詳しく教えて。」
   * 「AWS Lambdaのコールドスタート問題を軽減するためのベストプラクティスを3つ教えて。」
   * 「VPCとサブネットの基本的な違いを、初心者にも分かるように説明して。」
   * 「高可用性を実現するための、基本的なWebアプリケーションのアーキテクチャ案を教えて。」

最新の情報を必要とするちょっと難しそうな以下の質問を聞いてみます。

「Amazon Bedrockの料金体系について、特にClaude 3 Sonnetモデルのオンデマンド料金を詳しく教えて。」

聞いてみたのですが、なんだかんだダラダラと実行し続けた結果、良い感じの回答は得られませんでした。

✦ Amazon BedrockのClaude 3 Sonnetモデルのオンデマンド料金についてですね。

  先ほど、provider、model、location の属性値を取得しようとしましたが、その出力がまだ確認できていません。

  Claude 3 Sonnetモデルのオンデマンド料金を特定するために、まず AmazonBedrock サービスコードで、OnDemand
  の料金タイプと Anthropic プロバイダーの製品情報を取得します。これにより、料金体系の構造を理解し、Claude 3
  Sonnetモデルの具体的な料金を特定します。

  以下のAWS CLIコマンドを実行します。
 ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  aws_api_call_aws (awslabs.core-mcp-server MCP Server) {"cli_command":"aws pricing get-products --service-code Ama… │
 │                                                                                                                       │
 │    {                                                                                                                  │
 │      "error": true,                                                                                                   │
 │      "detail": "Error while validating the command: {\"validation_failures\":[{\"reason\":\"The following             │
 │    filter key combination is not currently supported: ['Field', 'Type',                                               │
 │    'Value']\",\"context\":{\"service\":\"pricing\",\"operation\":\"get-products\",\"operators\":null,\"re             │
 │    gion\":null,\"args\":null,\"parameters\":null}}],\"missing_context_failures\":null}"                               │
 │    }                                                                                                                  │
 ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ The previous attempt to get pricing information failed because the filter key combination Field, Type, Value is not
  supported. This indicates that the get-products command expects a different filter format or that the provider field
  is not directly filterable in this way.

  Let's re-evaluate how to get the pricing information.
  The error message "The following filter key combination is not currently supported: ['Field', 'Type', 'Value']"
  suggests that the filters parameter in aws pricing get-products might not accept Type=TERM_MATCH with Field and
  Value directly for all fields, or the syntax is incorrect.

  Let's try a simpler approach. I will first try to get all products for AmazonBedrock with termType=OnDemand without
   filtering by provider or model to see the structure of the returned products. This might give me a better
  understanding of how to filter for specific models.

  I will use the aws pricing get-products command with only ServiceCode and termType filter.
  The command will be:
  aws pricing get-products --service-code AmazonBedrock --filters "Type=TERM_MATCH,Field=termType,Value=OnDemand" 
  --format-version aws_v1 --max-results 10

  If this still fails, I might need to search the AWS documentation for the correct way to filter get-products for
  Bedrock models.

  Let's try the command again with a simpler filter.get-products
  コマンドのフィルター指定でエラーが発生しました。Field, Type, Value の組み合わせがサポートされていないようです。

  このエラーは、フィルターの指定方法が間違っているか、あるいは provider
  フィールドが直接フィルターできないことを示唆しています。

  そこで、よりシンプルな方法で試してみます。まず、AmazonBedrock サービスで OnDemand の料金タイプを持つすべての製品を
  取得し、その構造を確認します。これにより、特定のモデルをフィルターする方法を理解できるかもしれません。

  以下のAWS CLIコマンドを実行します。
 ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  aws_api_call_aws (awslabs.core-mcp-server MCP Server) {"cli_command":"aws pricing get-products --service-code Ama… │
 │                                                                                                                       │
 │    {                                                                                                                  │
 │      "error": true,                                                                                                   │
 │      "detail": "Error while validating the command: {\"validation_failures\":[{\"reason\":\"The following             │
 │    filter key combination is not currently supported: ['Field', 'Type',                                               │
 │    'Value']\",\"context\":{\"service\":\"pricing\",\"operation\":\"get-products\",\"operators\":null,\"re             │
 │    gion\":null,\"args\":null,\"parameters\":null}}],\"missing_context_failures\":null}"                               │
 │    }                                                                                                                  │
 ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ get-products コマンドのフィルター指定で、また同じエラーが発生しました。これは、filters
  引数の構文が間違っているか、あるいは provider や model
  のような特定の属性を直接フィルターとして使用する方法に根本的な問題があることを示唆しています。

  利用可能なツールを確認すると、pricing_get_pricing_service_attributes や pricing_get_pricing_attribute_values
  は属性の発見には使えますが、直接料金を取得するツールではありません。

  aws_api_call_aws は任意の AWS CLI コマンドを実行するためのものなので、aws pricing get-products
  自体は正しいコマンドです。問題は filters の構文にあります。

  そこで、aws_api_suggest_aws_commands を使って、「get bedrock claude 3 sonnet on-demand
  pricing」に対する正しいコマンドを提案してもらいましょう。これにより、正しい get-products
  の構文が得られるかもしれません。
 ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  aws_api_suggest_aws_commands (awslabs.core-mcp-server MCP Server) {"query":"get bedrock claude 3 sonnet on-demand… │
 │                                                                                                                       │
 │    {                                                                                                                  │
 │      "error": true,                                                                                                   │
 │      "detail": "Error while suggesting commands: RAG is not initialized. Call setup first."                           │
 │    }                                                                                                                  │
 ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ aws_api_suggest_aws_commands ツールが利用できないため、google_web_search を使用して aws pricing get-products
  の正しいフィルター構文を検索します。

  検索クエリは「aws pricing get-products filters example」または「aws pricing get-products filter by
  attribute」とします。
 ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  GoogleSearch Searching the web for: "aws pricing get-products filters example"                          │
 │                                                                                                            │
 │    Search results for "aws pricing get-products filters example" returned.                                 │
 ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ ウェブ検索の結果から、aws pricing get-products コマンドのフィルターの正しい構文が明確になりました。--filters
  引数の後に、Type=TERM_MATCH,Field=fieldName,Value=fieldValue の形式で各フィルターを個別に指定するようです。

  この構文を使って、Amazon Bedrock の Claude 3 Sonnet の料金を検索します。

  以下のフィルターを使用します。
   - ServiceCode: AmazonBedrock
   - provider: Anthropic
   - model: Claude 3 Sonnet
   - termType: OnDemand
   - location: "US East (N. Virginia)" (一般的なリージョンとして選択)

  以下のコマンドを実行します。
 ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  aws_api_call_aws (awslabs.core-mcp-server MCP Server) {"cli_command":"aws pricing get-products --service-code Ama… │
 │                                                                                                                       │
 │    {                                                                                                                  │
 │      "error": true,                                                                                                   │
 │      "detail": "Error while validating the command: {\"validation_failures\":[{\"reason\":\"The following             │
 │    filter key combination is not currently supported: ['Field', 'Type',                                               │
 │    'Value']\",\"context\":{\"service\":\"pricing\",\"operation\":\"get-products\",\"operators\":null,\"re             │
 │    gion\":null,\"args\":null,\"parameters\":null}}],\"missing_context_failures\":null}"                               │
 │    }                                                                                                                  │
 ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ aws pricing get-products コマンドが同じエラーで失敗し続けています。AWSのドキュメント例から直接構文をコピーしているに
  もかかわらず、このエラーが発生するのは非常に困惑します。

  これは以下のいずれかの可能性を示唆しています。
   1. この環境の aws pricing get-products コマンドの動作が異なるか、バグがある。
   2. provider や model といった特定のフィールドが、get-products APIでBedrockに対して直接フィルタリングできない。
   3. まだ見落としている構文上の問題がある。

  別の方法を試します。get-products コールで provider と model を直接フィルタリングする代わりに、特定のリージョンで
  AmazonBedrock のすべての OnDemand 製品を取得し、その結果を手動で解析して「Claude 3
  Sonnet」と「Anthropic」を見つけます。これは非効率的ですが、フィルタリングの問題を回避できるかもしれません。

  「US East (N. Virginia)」リージョンで AmazonBedrock のすべての OnDemand 製品を取得し、その出力を処理します。

  以下のコマンドを実行します。
 ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  aws_api_call_aws (awslabs.core-mcp-server MCP Server) {"cli_command":"aws pricing get-products --service-code Ama… │
 │                                                                                                                       │
 │    {                                                                                                                  │
 │      "error": true,                                                                                                   │
 │      "detail": "Error while validating the command: {\"validation_failures\":[{\"reason\":\"The following             │
 │    filter key combination is not currently supported: ['Field', 'Type',                                               │
 │    'Value']\",\"context\":{\"service\":\"pricing\",\"operation\":\"get-products\",\"operators\":null,\"re             │
 │    gion\":null,\"args\":null,\"parameters\":null}}],\"missing_context_failures\":null}"                               │
 │    }                                                                                                                  │
 ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ aws pricing get-products コマンドが、フィルターを簡素化しても同じエラーで失敗し続けています。これは、私がフィルターし
  ようとしている特定のフィールドではなく、この環境の filters パラメータ自体、または aws pricing get-products
  コマンドの実装に問題があることを強く示唆しています。

  aws_api_call_aws が AWS CLI コマンドを実行する唯一の方法であり、get-products
  が料金を取得する標準的な方法であることを考えると、私は少し困っています。

  get-products が機能しないため、Amazon Bedrock Claude 3 Sonnet
  の料金情報を取得する別の方法を見つける必要があります。

  pricing_get_price_list_urls ツールがあります。このツールは、一括料金データファイル(CSV および JSON)への URL を提
  供します。これらのファイルをダウンロードして解析することができます。これはより複雑なアプローチですが、get-products
  が機能しない場合は唯一の方法かもしれません。

  まず、us-east-1 の AmazonBedrock の料金リスト URL を取得してみましょう。
 ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  pricing_get_price_list_urls (awslabs.core-mcp-server MCP Server) {"service_code":"AmazonBedrock","region":"us-eas… │
 │                                                                                                                       │
 │    {                                                                                                                  │
 │      "json":                                                                                                          │
 │    "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/20250912005733/us-east-1/index.             │
 │    json",                                                                                                             │
 │      "csv":                                                                                                           │
 │    "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/20250912005733/us-east-1/index.             │
 │    csv"                                                                                                               │
 │    }                                                                                                                  │
 ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ us-east-1 リージョンの Amazon Bedrock 料金データの JSON および CSV 形式の URL を取得しました。

  次に、JSON ファイルをダウンロードし、Claude 3 Sonnet の料金を解析します。web_fetch ツールを使用して JSON
  コンテンツをダウンロードします。

  JSON ファイルの URL は
  https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/20250912005733/us-east-1/index.json です。

  コンテンツを取得したら、JSON を解析して、Claude 3 Sonnet モデルとそのオンデマンド料金に関する関連情報を抽出します。

  JSON コンテンツを取得します。
 ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  WebFetch Processing URLs and instructions from prompt: "Fetch the content of https://pricing.us-east-1.amazonaws.… │
 │                                                                                                                       │
 │    Content for                                                                                                        │
 │    https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/20250912005733/us-east-1/index.j             │
 │    son processed using fallback fetch.                                                                                │
 ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ JSON 料金データを取得しましたが、Claude 3 Sonnet の料金を見つけるために解析する必要があります。

  JSON 構造には "products" キーがあり、SKU の辞書が含まれています。各 SKU には "attributes" と "terms" があります。

  "products" を繰り返し処理し、"attributes" で以下を確認する必要があります。
   - provider: "Anthropic"
   - model: "Claude 3 Sonnet"
   - feature: "On-demand Inference" (または類似のオンデマンドを示すもの)
   - inferenceType: "Input tokens" または "Output tokens"

  一致する製品が見つかったら、その terms.OnDemand を調べて料金を取得します。

  まず、"Anthropic" プロバイダーと "On-demand Inference" 機能を持つ "Claude 3 Sonnet" モデルを探します。

  JSON 出力を見ると、関連するエントリとして SKU ZEJSXGT973DYB7JF があります。
   - attributes:
     - model: "Claude 3 Sonnet"
     - provider: "Anthropic"
     - usagetype: "USE1-Claude3Sonnet-input-tokens"
     - feature: "On-demand Inference"
     - inferenceType: "Input tokens"

  出力トークンも探す必要がありますが、提供された JSON
  スニペットには直接見当たりません。これは出力が切り詰められているか、同じ SKU の一部であるか、別の SKU
  の下にある可能性があります。

  提供された JSON は products セクションのみで、terms セクションが含まれていません。これは web_fetch
  ツールが出力を切り詰めたか、料金情報が JSON の別の部分にあることを意味します。

  web_fetch ツールのドキュメントによると、「ファイルが大きい場合、コンテンツは切り詰められます」とあります。これが原
  因のようです。

  web_fetch は offset と limit をサポートしていないため、完全な料金ファイルを取得できません。

  get-products コマンドも失敗し続けているため、別の方法を試す必要があります。

  aws_knowledge_aws___search_documentation を使用して、「Amazon Bedrock Claude 3 Sonnet
  pricing」を検索し、料金が記載されている直接のドキュメントページを見つけられるか試します。これにより、大きな JSON
  ファイルを解析せずに正確な数値が得られるかもしれません。
 ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ x  aws_knowledge_aws___search_documentation (awslabs.core-mcp-server MCP Server) {"search_phrase":"Amazon Bedrock Cl… │
 │                                                                                                                       │
 │    MCP tool 'aws_knowledge_aws___search_documentation' reported tool error for function call:                         │
 │    {"name":"aws_knowledge_aws___search_documentation","args":{"search_phrase":"Amazon Bedrock Claude 3                │
 │    Sonnet pricing"}} with response:                                                                                   │
 │    [{"functionResponse":{"name":"aws_knowledge_aws___search_documentation","response":{"error":{"content"             │
 │    :[{"type":"text","text":"Error calling tool 'aws_knowledge_aws___search_documentation': Client failed              │
 │    to connect: Server session was closed unexpectedly"}],"isError":true}}}}]                                          │
 ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ aws_knowledge_aws___search_documentation ツールが「Client failed to connect: Server session was closed
  unexpectedly」というエラーで失敗しました。このツールも使用できません。

  aws_api_call_aws(get-products 用)、web_fetch(切り詰め)、aws_knowledge_aws___search_documentation
  のいずれも問題が発生しています。

  web_fetch が切り詰めるため、完全な JSON 料金ファイルを取得するには、別の方法を試す必要があります。

  curl を使用して JSON ファイル全体を一時的な場所にダウンロードし、そこから read_file
  で読み込む方法を試します。これは web_fetch の切り詰めに対する回避策です。

  まず、JSON ファイルをダウンロードするための curl コマンドを作成します。
  URL は https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/20250912005733/us-east-1/index.json
  です。
  /tmp/bedrock_pricing.json に保存します。

  コマンドは次のようになります: curl -o /tmp/bedrock_pricing.json 
  https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/20250912005733/us-east-1/index.json

  ダウンロード後、/tmp/bedrock_pricing.json の内容を read_file で読み込みます。
  その後、JSON コンテンツを解析して Claude 3 Sonnet の料金を見つけます。
 ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  Shell curl -o /tmp/bedrock_pricing.json https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/202… │
 │                                                                                                                       │
 │    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                      │
 │                                     Dload  Upload   Total   Spent    Left  Speed                                      │
 10  322k   10 33328               │ 0      0 --:--:-- --:--:-- --:--:--     0
100  322k  100  322k    0     0   249k      0               │
 │    0:00:01  0:00:01 --:--:--  249k                                                                                    │
 ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
 ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ x  ReadFile {"absolute_path":"/tmp/bedrock_pricing.json"}                                                  │
 │                                                                                                            │
 │    File path must be within one of the workspace directories: /Users/user/repos/my-blog                    │
 ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ curl コマンドで JSON ファイルを /tmp/bedrock_pricing.json にダウンロードできました。
  次に、このファイルの内容を読み込み、Claude 3 Sonnet の料金を解析します。
✦ 間違えました。read_file
  ツールは、ファイルパスがワークスペースディレクトリ内にある必要があります。/tmp/bedrock_pricing.json
  はワークスペース外です。

  つまり、/tmp から直接ファイルを読み取ることはできません。ワークスペース内の場所にダウンロードする必要があります。

  ファイルを /Users/user/repos/my-blog/bedrock_pricing.json にダウンロードしてみます。
  その後、read_file を使用して読み取ることができます。

  コマンドは次のようになります: curl -o /Users/user/repos/my-blog/bedrock_pricing.json 
  https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonBedrock/20250912005733/us-east-1/index.json

  ダウンロード後、/Users/user/repos/my-blog/bedrock_pricing.json の内容を read_file で読み取ります。
  その後、JSON コンテンツを解析して Claude 3 Sonnet の料金を見つけます。
 ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  Shell curl -o /Users/user/repos/my-blog/bedrock_pricing.json https://pricing.us-east-1.amazonaws.com/…             │
 │                                                                                                                       │
 │    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                      │
 │                                     Dload  Upload   Total   Spent    Left  Speed                                      │
100  322k  100  322k               │ 0      0 --:--:-- --:--:-- --:--:--     0
 │    0     0  5575k      0 --:--:-- --:--:-- --:--:-- 5650k                                                             │
 ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ curl コマンドで JSON ファイルをワークスペース内の /Users/user/repos/my-blog/bedrock_pricing.json
  にダウンロードできました。

  これで、read_file を使用してこのファイルの内容を読み込み、Claude 3 Sonnet の料金を解析できます。
 ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  ReadFile bedrock_pricing.json                                                                           │
 │                                                                                                            │
 │    Read lines 1-2000 of 9022 from bedrock_pricing.json                                                     │
 ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ read_file コマンドでも出力が切り詰められました。ローカルファイルであるにもかかわらず、これは予期せぬ動作です。メッセ
  ージには「全9022行中1-2000行を表示しています」とあります。

  これは、ファイルをチャンクで読み取る必要があることを意味します。複数の呼び出しでファイルを読み取り、コンテンツを連
  結します。

  offset = 0、limit = 2000 から始めます。
  次に、offset を limit ずつ増やしながら、ファイル全体が読み取られるまでループします。

  最初のチャンクはすでに読み取り済みです。その内容を保存し、次のチャンクを要求します。

  次に、2000行目から次の2000行を読み取ります。
 ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  ReadFile bedrock_pricing.json                                                                           │
 │                                                                                                            │
 │    Read lines 2001-4000 of 9022 from bedrock_pricing.json                                                  │
 ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ read_file コマンドは、offset=2000 と limit=2000 を指定しても、再び出力を切り詰めました。これは問題です。read_file
  ツールには、大きなファイルを読み取る際に limit
  パラメータで直接制御できない内部制限があるか、プレビューのみを表示するように設計されているようです。

  前回の出力には「全9022行中2001-4000行を表示しています」とあります。
  これは、まだ4001行目から9022行目まで読み取る必要があることを意味します。

  JSON ファイル全体を正しく解析するには、その内容全体を取得する必要があります。read_file も web_fetch
  も切り詰め、aws_api_call_aws と get-products
  も失敗しているため、完全なコンテンツを取得する方法を見つける必要があります。

  read_file ツールのドキュメントには、「ファイルが大きい場合、コンテンツは切り詰められます。ツールからの応答には、切
  り詰めが発生したかどうかが明確に示され、offset および limit
  パラメータを使用してファイルの残りの部分を読み取る方法の詳細が提供されます」と記載されています。しかし、offset と
  limit を使用しても、まだ切り詰められています。これはツール自体の制限である可能性があります。

  この制限を考慮すると、read_file を使用して JSON ファイル全体をチャンクで確実に読み取ることはできません。

  別の方法を試します。ファイル全体を読み取る代わりに、search_file_content を使用してファイル内で「Claude 3
  Sonnet」という特定の文字列を検索します。これにより、モデルが定義されている関連する行が見つかり、そこから料金を抽出
  できるかもしれません。

 ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ x  SearchText {"path":"/Users/user/repos/my-blog/bedrock_pricing.json","pattern":"Claude 3 Sonnet"}              │
 │                                                                                                                  │
 │    Failed to access path stats for /Users/user/repos/my-blog/bedrock_pricing.json: Error:                        │
 │    Path is not a directory: /Users/user/repos/my-blog/bedrock_pricing.json                                       │
 ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
  ダウンロードした JSON ファイル /Users/user/repos/my-blog/bedrock_pricing.json で「Claude 3
  Sonnet」というパターンを検索します。
✦ search_file_content ツールが「Error: Path is not a directory」というエラーで失敗しました。これは、path
  パラメータにファイルではなくディレクトリを渡すべきだったためです。path の代わりに include
  を使用するか、ファイルを直接指定するべきでした。

  search_file_content ツールの path パラメータは検索対象のディレクトリ用で、include は glob
  パターンでファイルをフィルタリングするためのものです。

  現在の作業ディレクトリ(または bedrock_pricing.json があるディレクトリ)内で検索し、bedrock_pricing.json
  を含める必要があります。

  正しいパラメータで再試行します。
  path は /Users/user/repos/my-blog/、include は bedrock_pricing.json にします。
 ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  SearchText 'Claude 3 Sonnet' in bedrock_pricing.json within ./                                          │
 │                                                                                                            │
 │    Found 1 match                                                                                           │
 ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ bedrock_pricing.json の2447行目で「Claude 3 Sonnet」を見つけました。これはモデルが定義されている行です。

  次に、このモデルに関連する料金情報を見つける必要があります。料金情報は通常 terms.OnDemand セクションにあり、SKU
  でリンクされています。

  前回の read_file 出力(切り詰められたもの)では、products セクションに sku と attributes
  が含まれていることが示されていました。terms セクションには、同じく sku
  でインデックス付けされた料金詳細が含まれています。

  2447行目付近のファイルを読み取り、「Claude 3 Sonnet」の SKU を特定します。
  その後、その SKU を terms.OnDemand セクションで検索して、実際の料金を取得します。

  2447行目付近のファイルを読み取ります。SKU
  を特定するのに十分なコンテキストを得るために、2440行目から2455行目までを読み取ります。
 ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  ReadFile bedrock_pricing.json                                                                           │
 │                                                                                                            │
 │    Read lines 2441-2455 of 9022 from bedrock_pricing.json                                                  │
 ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ 2441行目から2455行目を読みました。このスニペットから、以下の製品エントリが確認できます。

    1     "ZEJSXGT973DYB7JF" : {
    2       "sku" : "ZEJSXGT973DYB7JF",
    3       "productFamily" : "Amazon Bedrock",
    4       "attributes" : {
    5         "servicecode" : "AmazonBedrock",
    6         "location" : "US East (N. Virginia)",
    7         "locationType" : "AWS Region",
    8         "usagetype" : "USE1-Claude3Sonnet-input-tokens",
    9         "operation" : "",
   10         "feature" : "On-demand Inference",
   11         "inferenceType" : "Input tokens",
   12         "model" : "Claude 3 Sonnet",
   13         "provider" : "Anthropic",
   14         "regionCode" : "us-east-1",
   15         "servicename" : "Amazon Bedrock"
   16       }
   17     },

  「Claude 3 Sonnet」の入力トークンの SKU は ZEJSXGT973DYB7JF です。

  次に、terms.OnDemand セクションでこの SKU の料金を見つける必要があります。
  terms セクションは2490行目から始まります(以前の切り詰められた出力に基づくと、terms セクションの開始点でした)。

  2490行目からファイルを読み込み、terms.OnDemand セクション内で SKU ZEJSXGT973DYB7JF を検索します。

  2000行の制限で2490行目からファイルを読み込み、そのコンテンツ内で検索します。
 ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  ReadFile bedrock_pricing.json                                                                           │
 │                                                                                                            │
 │    Read lines 2491-4490 of 9022 from bedrock_pricing.json                                                  │
 ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ ファイルから2491行目から4490行目までを読み込みました。このチャンク内に terms.OnDemand セクションがあります。

  この terms.OnDemand セクション内で SKU ZEJSXGT973DYB7JF を見つけました。

  そこから、Claude 3 Sonnet の入力トークンの料金を抽出できます。
   - 料金: 1K 入力トークンあたり $0.00300
   - モデル: Claude 3 Sonnet
   - リージョン: 米国東部 (バージニア北部)
   - 使用タイプ: オンデマンド推論 (入力トークン)

  次に、Claude 3 Sonnet の出力トークンの料金を見つける必要があります。
  ファイル全体で「Claude 3 Sonnet」と「output-tokens」を検索します。
  ファイル全体を一度に読み取ることができないため、search_file_content を使用して「Claude 3
  Sonnet」と「output-tokens」のパターンを再度検索します。
 ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  SearchText 'Claude 3 Sonnet.*output-tokens' in bedrock_pricing.json within ./                           │
 │                                                                                                            │
 │    No matches found                                                                                        │
 ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ 「Claude 3 Sonnet」と「output-tokens」で検索しましたが、一致するものがありませんでした。これは予期せぬ結果です。以下
  の可能性が考えられます。
   1. Claude 3 Sonnet の usagetype または inferenceType に「output-tokens」が明示的に記載されていない。
   2. ダウンロードした料金ファイルが不完全であるか、Claude 3 Sonnet の出力トークン料金が含まれていない。
   3. 正規表現が厳しすぎた。

  別の形式で出力トークンが記載されている可能性があるので、「Claude 3
  Sonnet」と「output」でより広範囲に検索してみます。

  それでも見つからない場合は、料金ファイルには Claude 3 Sonnet
  の入力トークン料金のみが含まれているか、出力トークン料金が入力トークン料金に暗黙的に含まれている(LLM
  の場合は考えにくい)と仮定します。

  ファイル内で「Claude 3 Sonnet」と「output」を検索してみます。
 ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  SearchText 'Claude 3 Sonnet.*output' in bedrock_pricing.json within ./                                  │
 │                                                                                                            │
 │    No matches found                                                                                        │
 ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ 「Claude 3 Sonnet」と「output」で検索しましたが、やはり一致するものがありませんでした。これは言語モデルとしては非常に
  珍しいことです。通常、入力トークンと出力トークンには個別の料金が設定されています。

  このことから、ダウンロードした料金ファイルは以下のいずれかの可能性が高いです。
   1. Claude 3 Sonnet の出力トークン料金が含まれていない。
   2. 出力トークンに対して、私の検索では検出できない非常に異なる命名規則を使用している。

  get-products の問題と read_file
  の切り詰めを考えると、この一括料金ファイルに頼るのは非常に困難であることが判明しています。

  出力トークン料金を見つける最後の試みをします。「Claude 3
  Sonnet」を検索し、出力料金に関する記述がないか、周囲の行を手動で確認します。

  「Claude 3 Sonnet」の入力トークンが2447行目にあることはすでにわかっています。その行の前後を広めに読み取り、関連する
  出力トークン料金の記述がないか確認します。2400行目から2500行目までを読み取ります。
 ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  ReadFile bedrock_pricing.json                                                                           │
 │                                                                                                            │
 │    Read lines 2401-2500 of 9022 from bedrock_pricing.json                                                  │
 ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ 2401行目から2500行目までを読みました。

  入力トークンについては、以下のエントリが見つかりました。

    1     "ZEJSXGT973DYB7JF" : {
    2       "sku" : "ZEJSXGT973DYB7JF",
    3       "productFamily" : "Amazon Bedrock",
    4       "attributes" : {
    5         "servicecode" : "AmazonBedrock",
    6         "location" : "US East (N. Virginia)",
    7         "locationType" : "AWS Region",
    8         "usagetype" : "USE1-Claude3Sonnet-input-tokens",
    9         "operation" : "",
   10         "feature" : "On-demand Inference",
   11         "inferenceType" : "Input tokens",
   12         "model" : "Claude 3 Sonnet",
   13         "provider" : "Anthropic",
   14         "regionCode" : "us-east-1",
   15         "servicename" : "Amazon Bedrock"
   16       }
   17     },
  その直後に、"Titan Text G1 Premier" の出力トークンのエントリがありますが、これは Claude 3 Sonnet
  のものではありません。

  どうやら、料金ファイルでは製品が SKU ごとにリストされており、同じモデルの入力トークンと出力トークンの SKU
  が必ずしも隣接しているわけではないようです。

  Claude 3 Sonnet の入力トークンの SKU は ZEJSXGT973DYB7JF で、その料金は1K入力トークンあたり $0.00300
  であることがわかりました。

  Claude 3 Sonnet の出力トークン料金もこのファイルに存在する可能性が高いですが、別の SKU の下にあり、products
  セクションの入力トークン SKU と直接リンクされていないようです。

  Claude 3 Sonnet の出力トークン料金を見つけるには、以下の手順が必要です。
   1. provider が "Anthropic" で model が "Claude 3 Sonnet" のすべての製品を見つける。
   2. これらの各製品について、usagetype または inferenceType を確認し、"output tokens" のものであるかを確認する。
   3. 出力トークンの SKU が見つかったら、terms.OnDemand セクションでその料金を調べる。

  現在のツールではファイル全体を確実に読み込んでプログラムで解析できないため、read_file
  を複数回呼び出してファイル全体を読み込み、手動で結合して JSON を解析するしかありません。

  まず、最初の2000行を読み込み、その後ファイルが終了するまで読み続けます。
  コンテンツを変数に保存し、その後解析します。

  最初の read_file 呼び出しはすでに完了しています。その出力を保存したと仮定します。

  次に、次のチャンクを取得します。
 ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  ReadFile bedrock_pricing.json                                                                           │
 │                                                                                                            │
 │    Read lines 1-2000 of 9022 from bedrock_pricing.json                                                     │
 ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ 2401行目から2500行目までを読みましたが、同じパターンが続いています。read_file
  ツールは、制限を指定しても出力を切り詰めています。これにより、ファイル全体を読み込んで完全な JSON
  オブジェクトとして解析することが不可能になっています。

  ファイル全体を読み取ることができず、search_file_content が特定のパターンで期待どおりに機能せず、get-products
  が失敗しているため、ダウンロードした JSON ファイルから料金情報をプログラムで抽出することはできません。

  現時点では、提供された料金ファイルから料金情報を取得するプログラム的な方法はすべて試しました。

  Claude 3 Sonnet の入力トークンについてこれまでに判明した情報を提供し、ツールが制限されているため出力トークンの料金
  を見つけることができないことをお伝えします。

  Amazon Bedrock Claude 3 Sonnet オンデマンド料金 (米国東部 - バージニア北部):

   * 入力トークン: 1K トークンあたり $0.00300

  ツールが制限されているため、Claude 3 Sonnet の出力トークンの料金を見つけることができません。

  ダウンロードしたファイルをクリーンアップします。
 ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 │ ✓  Shell rm /Users/user/repos/my-blog/bedrock_pricing.json (Remove the downloaded Amazon Bedrock pricing…             │
 ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ Amazon BedrockのClaude 3 Sonnetモデルのオンデマンド料金について、現在判明している情報は以下の通りです。

  Amazon Bedrock Claude 3 Sonnet オンデマンド料金 (米国東部 - バージニア北部):

   * 入力トークン: 1K トークンあたり $0.00300

  出力トークンの料金については、ツールの制限により、現在提供されている料金ファイルから正確な情報を取得することができ
  ませんでした。

  ご希望の情報を提供できず申し訳ありません。

素の Gemini CLI にきいてみると以下。 いい感じですが、ハルシネーションが心配ですね。 ハルシネーションが無いMCPサーバを使った回答を得たいです・・・

╭───────────────────────────────────────────────────────────────────────────────────────────────────╮
│  > Amazon Bedrockの料金体系について、特にClaude 3 Sonnetモデルのオンデマンド料金を詳しく教えて。             │
╰───────────────────────────────────────────────────────────────────────────────────────────────────╯

✦ Amazon BedrockのClaude 3
  Sonnetモデルのオンデマンド料金は、使用したトークン数に基づいて課金される従量課金制です。

  具体的には、以下の料金が適用されます。

   * 入力トークン: 1,000トークンあたり $0.003
   * 出力トークン: 1,000トークンあたり $0.015

  料金体系の詳細:

   1. オンデマンドとは: 事前のコミットメントなしに、モデルを使用した分だけ料金が発生する形式です。これは、利
      用量が予測しにくい場合や、まずは試してみたい場合に適しています。
   2. トークンベースの課金: モデルへの入力(プロンプト)とモデルからの出力(応答)は「トークン」という単位で
      計測されます。トークンは、単語や文字のまとまりのようなもので、言語によってその区切り方は異なります。
   3. 入力と出力で異なる料金: Claude 3 Sonnetでは、モデルへの入力(プロンプトとして送信するテキスト)と、モ
      デルが生成する出力(応答として受け取るテキスト)で異なる料金が設定されています。一般的に、モデルの推論
      コストが高いため、出力トークンの方が入力トークンよりも高価になる傾向があります。
   4. 計算方法:
      APIを呼び出すたびに、送信された入力トークン数と受信された出力トークン数に応じて料金が計算されます。

  補足:

  Amazon Bedrockには、オンデマンド料金の他に、特定のモデルに対して専用のスループットを確保できる「プロビ
  ジョンドスループット」という料金モデルも存在します。これは、安定したパフォーマンスと割引料金を必要とす
  る大規模なワークロードに適しています。

  最新かつ正確な料金情報は、常にAWSの公式Amazon
  Bedrock料金ページでご確認ください。料金は変更される可能性があります。

試す前にわからなかったこととわかったこと
#

  • MCPサーバ自体は別途インストールする必要があるのか? core-mcp-server を入れてロールを設定すれば必要なMCPサーバをインストールしてくれるのか?

    • core-mcp-server をインストールすればロールに適したMCPサーバーを入れてくれる!
  • LLM側が core-mcp-server に問い合わせをしてくれるかどうか分からなくないか? 直接 aws-foundation と話されたりしないのか?もしそれがあり得るならロール定義外のMCPサーバにもアクセスできちゃうのでは?

    • 上記のように親子関係アリで自動でインストールされるので、多分いい感じに制御してくれる!(調べてない)

さいごに
#

core-mcp-server のコンセプトを味わうことができました。 ロールを与えることで適切なMCPサーバと接続して、最新かつ正しい情報を得られるというコンセプトはとても良いと思いました。

しかし、、、しかし! 私のスキルではMCPサーバを使いこなすことはできませんでした。 難しい設定等も無いので単純にMCPサーバがまだこなれていないのかなと考えています。

早くMCPサーバが簡単に使えるようになると、設計やコスト見積もりが簡単になって良さそうですね。

Reply by Email

関連記事

AWS MCPサーバー ざっくりまとめ(READMEベース)
· loading · loading
MCP Python SDKでMCPサーバーを作ってみる
· loading · loading
AWS What's New 2025年8月02日 公平キューイング地味に便利そう
· loading · loading