Generative AI Use CaseのMCPチャットを使ってみた

に公開

はじめに

Fusicのレオナです。
今回は GenU で MCP に対応した LLM チャットが可能になったので、実際に試してみたいと思います。
※回答精度については考察していません。
リリースはこちら:
https://github.com/aws-samples/generative-ai-use-cases/releases/tag/v4.3.0

GenUとは

Amazon Bedrockを使用した生成AIアプリケーションのサンプル実装です。オープンソースライセンスで提供されており、AWSが提供しているaws-samplesの中の一つで、生成AI に特化したユースケースが提供されています。ユースケースの詳細は下記をご確認ください。
https://github.com/aws-samples/generative-ai-use-cases/blob/main/README_ja.md#genu-活用パターン集

MCP: Model Context Protocol とは

Anthropicが公開したIntroducing the Model Context Protocolから引用すると、MCPは複数のシステムに散在するデータを統一的に管理するためのオープンスタンダードです。コンテンツリポジトリ、業務用ツール、開発環境など、さまざまなデータソース間で、安全かつ効率的に情報をやりとりする手法となります。

MCPのGeneral architectureについて

  • Host:
    • Claude Desktop や VS Code, Cursor,Windsurf,ClineなどのLLMを搭載した全体のアプリケーションを指す
  • MCP Client:
    • サーバーと1:1の接続部分であり、サーバーとの通信を維持するクライアント
  • MCP Server:
    • 標準化されたModel Context Protocolを通じて特定の機能を提供するプログラム
  • Local Data Sources:
    • MCP サーバーが安全にアクセスできるローカルのファイルやサービス
  • Remote Services
    • MCPサーバーが接続できる、インターネット上で利用可能な外部システム(例:API経由でアクセスできるものなど)

https://modelcontextprotocol.io/introduction#general-architectureより

GenUのデプロイ

  1. リポジトリをクローン

    git clone https://github.com/aws-samples/generative-ai-use-cases.git
    
  2. ルートディレクトリで依存パッケージをインストール

    npm ci
    
  3. CDK を初めて使う場合はブートストラップを実行

    npx -w packages/cdk cdk bootstrap
    
  4. cdk.json で MCP を有効化

    packages/cdk/cdk.json
    {
      "mcpEnabled": true
    }
    
  5. 使用する MCP サーバーを設定

    • 今回は AWS Documentation MCP Server を利用します(GenUではデフォルト設定になります。)
    packages/cdk/mcp-api/mcp.json
    {
      "mcpServers": {
        "awslabs.aws-documentation-mcp-server": {
          "command": "uvx",
          "args": ["awslabs.aws-documentation-mcp-server@latest"]
        }
      }
    }
    

AWS Documentation MCP Serverについては以下をご覧ください。
https://zenn.dev/fusic/articles/473a9d1a1dfc43

  1. デプロイを実行

    npm run cdk:deploy
    
  2. デプロイ完了後、出力された Web URL にアクセス

    GenerativeAiUseCasesStack.WebUrl = https://ds6cs8d8wzz04.cloudfront.net
    

アカウント作成

  1. パスワードを設定

    • 8文字以上
    • 小文字、大文字、数字、特殊文字を組み合わせる
      • 例:P@ssw0rd123

    パスワード設定

  2. メール認証

    • 登録したメールアドレスに届く認証コードを入力
    • アカウント登録を完了させる

    メール認証

  3. ログイン後の画面確認

    • 正常にログインできると、以下のダッシュボード画面が表示されます

    ログイン後画面


注意
現状 MCP サーバーとその設定には以下の制約があります。

  • MCP サーバーは AWS Lambda で実行されるため、ファイルの書き込みはできません。(/tmp 以下に書き込むことは可能ですが、取り出すことができません。)
  • MCP サーバーは uvx または npx で実行可能である必要があります。
  • MCP クライアントは stdio のみが利用できます。
  • 現状、マルチモーダルのリクエストはサポートされていません。
  • API Key などを動的に取得して環境変数に設定する仕組みはまだ実装されていません。
  • ユーザーが利用する MCP サーバーを選択する仕組みはまだ実装されていません。(現状は mcp.json に定義されたすべてのツールが利用されます。)
  • mcp.json には commandargsenv が設定できます。具体例は以下です。
  • 引用: https://github.com/aws-samples/generative-ai-use-cases/blob/main/docs/ja/DEPLOY_OPTION.md#mcp-チャットユースケースの有効化

GenUのMCPチャットを使ってみる

トレース内容
トレース
Amazon Q Developer と CLI エージェントについて調査します。まず、関連するドキュメントを検索してみましょう。

search_documentation: {'search_phrase': 'Amazon Q Developer CLI agent', 'limit': 10}
{
  "rank_order": 1,
  "url": "https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line.html",
  "title": "Using Amazon Q Developer on the command line - Amazon Q Developer",
  "context":...
最も関連性の高い情報を取得するために、コマンドライン向けの Amazon Q Developer に関するドキュメントを読んでみましょう。

read_documentation: {'url': 'https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line.html', 'max_length': 10000}
AWS Documentation from https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line.html:
# Using Amazon Q Developer on the command line
You can use Amazon Q Developer to enable completions...
CLI エージェント(agent)についてさらに詳しく調べるために、Amazon Q Developer for GitHub に関する情報やMCP(Model Context Protocol)の情報も読んでみましょう。

read_documentation: {'url': 'https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/amazon-q-for-github.html', 'max_length': 10000}
AWS Documentation from https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/amazon-q-for-github.html:
# Amazon Q Developer for GitHub (Preview)
###### Note
Amazon Q Developer for GitHub is in p...
続きを読んでみましょう:

read_documentation: {'url': 'https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/amazon-q-for-github.html', 'max_length': 10000, 'start_index': 10000}
AWS Documentation from https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/amazon-q-for-github.html:
ccount to get started. You're provided with limited invocations per month for feature develop...
次に、MCPについても確認しましょう:

read_documentation: {'url': 'https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/qdev-mcp.html', 'max_length': 10000}
AWS Documentation from https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/qdev-mcp.html:
# Using MCP with Amazon Q Developer
The Model Context Protocol (MCP) is an open standard that enables A...
最後に、CLI コマンドリファレンスを確認して、より詳しい情報を得ましょう:

read_documentation: {'url': 'https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-reference.html', 'max_length': 8000}
AWS Documentation from https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-reference.html:
# Amazon Q CLI command reference
This section provides a comprehensive reference for all ...
続きを読みましょう:

read_documentation: {'url': 'https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-reference.html', 'start_index': 8000, 'max_length': 8000}
AWS Documentation from https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-reference.html:
 option |
### q diagnostic
Run diagnostic tests to troubleshoot Amazon Q installation an...
それでは、Amazon Q Developer CLI エージェントに関する詳細情報を検索するために、もう少し調査しましょう:

search_documentation: {'limit': 5, 'search_phrase': 'Amazon Q Developer CLI agent commands'}
{
  "rank_order": 1,
  "url": "https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line.html",
  "title": "Using Amazon Q Developer on the command line - Amazon Q Developer",
  "context":...
チャットコマンドに関する情報を確認してみましょう:

read_documentation: {'url': 'https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-chat-commands.html', 'max_length': 10000}
AWS Documentation from https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-chat-commands.html:
# Chat commands
Amazon Q supports several commands that you can use during a chat ses...

回答結果
これで十分な情報が集まったので、Amazon Q Developer と CLI エージェントについて回答できます:

# Amazon Q Developer と CLI エージェントについて

## Amazon Q Developer の概要

Amazon Q Developer は AWS が提供する AI アシスタントで、ソフトウェア開発者向けに様々な支援機能を提供します。これは開発者の生産性を向上させるために設計されており、コードの生成、質問応答、CLIコマンドの自動補完などの機能があります。

## Amazon Q Developer の CLI 機能

Amazon Q Developer の CLI(コマンドラインインターフェイス)は以下の主要機能を提供します:

1. **コマンド自動補完**:`git`、`npm`、`docker`、`aws` などの数百の一般的な CLI に対して、コンテキストに応じた適切なコマンド、オプション、引数を自動的に提案します。

2. **自然言語チャット**:ターミナル内で直接 AI とチャットでき、開発関連の質問に対する回答を得ることができます。

3. **コマンド変換**:自然言語の指示を実行可能なシェルコードに変換します。例えば「現在のディレクトリのファイルをリスト表示して」のような指示を実行可能なコードに変換します。

4. **インライン補完**:コマンドを入力している最中にリアルタイムでサジェスチョンを表示します。

## Amazon Q Developer の CLI エージェント

Amazon Q Developer における「エージェント」という概念は、特に GitHub 連携の文脈で登場します。これらのエージェントは特定の開発タスクを自動的に実行するための専用 AI コンポーネントです:

1. **開発エージェント(Amazon Q development agent)**:新機能やバグ修正を自動的に実装し、プルリクエストを作成します。

2. **コードレビューエージェント(Amazon Q code review agent)**:プルリクエストが作成されると自動的にコードレビューを行い、品質、潜在的な問題、セキュリティ上の懸念についてフィードバックを提供します。

3. **変換エージェント(Amazon Q transform agent)**:Javaコードのバージョンアップグレードなど、コード変換タスクを自動的に実行します。

## MCP(Model Context Protocol)との統合

Amazon Q Developer CLI は MCP をサポートしており、これによって機能を拡張できます:

1. **カスタムツールとの連携**:MCP は AI アシスタントが外部ツールやサービスと対話できるようにするオープンスタンダードです。

2. **ツールの発見と使用**:`/tools` コマンドで利用可能なツールを確認できます。

3. **プロンプト管理**:MCP サーバーは事前定義されたプロンプトを提供し、特定のタスクに対するガイダンスを提供します。

## CLI コマンドの主な例

Amazon Q Developer CLI では以下のようなコマンドが利用できます:

- `q chat` - インタラクティブなチャットセッションを開始
- `q translate "ファイル一覧を表示"` - 自然言語をシェルコマンドに変換
- `q inline enable` - インラインサジェスチョン機能を有効化
- `q mcp list` - 設定された MCP サーバーの一覧表示

## チャットコマンド

チャットセッション中には、以下のようなスラッシュコマンドが利用できます:

- `/tools` - Amazon Q が使用できるツールと権限を管理
- `/help` - 利用可能なコマンドの一覧を表示
- `/context` - Amazon Q が利用できるコンテキスト情報を管理
- `/model` - 使用可能なモデルを表示し、現在のチャットセッション用のモデルを選択

## サポートされている環境

Amazon Q Developer の CLI 機能は macOS および特定の Linux 環境(AppImage や Ubuntu パッケージ)で利用可能です。

## まとめ

Amazon Q Developer CLI エージェントは、AI を活用してターミナル体験を向上させる強力なツールです。コマンド補完、自然言語チャット、コード生成などの機能を通じて、開発者の生産性を大幅に向上させることができます。また、MCP を介した拡張性により、カスタムツールやサービスとの連携も可能になります。

通常のチャット

回答結果

# Amazon Q Developer CLI エージェントについて

Amazon Q Developer CLI エージェントは、コマンドラインインターフェース(CLI)上で開発者をサポートするAIアシスタントです。以下がその主な特徴と機能です:

## 主な機能

- **コマンドラインでの対話型アシスタント**: ターミナル内で直接質問や開発タスクの支援を受けられます
- **コード生成と説明**: コードスニペットの生成、既存コードの説明、バグの修正などをサポート
- **ローカル環境の理解**: 現在の作業ディレクトリやプロジェクト構造を理解した上でアドバイスを提供
- **シェルコマンドの提案と実行**: 適切なコマンドを提案し、承認後に実行することも可能

## 利用方法

Amazon Q Developer CLI エージェントは通常、AWS CLIの拡張機能として提供され、適切な認証情報と権限があれば利用できます。一般的な使用方法は:

```bash
# インストール(例)
pip install amazon-q-cli

# 起動
amazon-q

# または特定の質問をする
amazon-q "Dockerfileの作成方法を教えて"


## 利点

- 開発ワークフローを中断せずに支援を受けられる
- コマンドラインから離れることなく質問や作業ができる
- AWS サービスとの統合により、クラウドリソースの操作もサポート
- コンテキストを理解した回答が得られる

Amazon Q Developer は、AWS のAI支援ツールスイートの一部であり、CLI エージェントはその機能をコマンドライン環境に拡張したものです。

最後に

GenUを使ったMCPチャットの確認ができました。ファイルを数行変更・追加するだけで、ユーザーがWebアプリ上で手軽に MCPを使ったチャットができることが利点だと思います。

Fusic 技術ブログ

Discussion