注意事項
私の本業はネットワークエンジニアです。プログラミングは趣味として取り組んでおり、「動けばそれで良し」という精神で開発しています。
そのため、コードの品質や設計に稚拙な部分があるかもしれませんが、ご理解いただけますと幸いです。
Streamlit MCP Agentは、Model Context Protocol (MCP) を活用したAIエージェントとのチャットインターフェースを提供するStreamlitアプリケーションです。AWSのstrands agentsフレームワークを利用しています。MCPクライアント経由でさまざまなツールを統合し、対話的なAIアシスタントを実現します。
このアプリケーションは、以下の主要な機能を提供します:
- MCP統合: 複数のMCPクライアントをサポートし、AIエージェントが外部ツールを活用可能
- ストリーミング応答: リアルタイムでAIの応答をストリーミング表示
- チャットインターフェース: ユーザーフレンドリーなStreamlitベースのチャットUI
- セッション管理: チャット履歴の保持とセッション状態のリセット機能
- ツール実行: MCP経由でツールの実行と結果の表示
昨今MCP対応クライアントは多数リリースされていますが、基本的に個人利用目的が多く、社内でwebアプリとして公開できるようなものがなったため作成しました。
- Python 3.13以上
- uv (Pythonパッケージマネージャー)
ollama>=0.5.4: Ollamaモデルとの連携(このままの設定でOllamaを使用する場合のみ必要)strands-agents>=1.9.1: AIエージェントフレームワークstreamlit>=1.49.1: WebアプリケーションUI
- Ollamaサーバー: デフォルトで
http://localhost:11434を使用 - MCP設定ファイル:
param/mcp.jsonにMCPクライアントの設定を定義
git clone https://github.com/applemk2-git/streamlit-mcp-agent.git
cd streamlit-mcp-agentuv syncuv run streamlit run agent.pyアプリケーションが起動したら、ブラウザで http://localhost:8501 にアクセスしてください。
このままの設定で実行する場合、Ollamaサーバーが必要です。実行されていない場合は起動してください:
ollama serveデフォルトモデルとして gpt-oss:20b を使用します。必要に応じて agent.py 内の DEFAULT_MODEL_ID を変更してください。
- アプリケーション起動後、サイドバーから使用するMCPを選択
- チャット入力欄にメッセージを入力
- AIエージェントがMCPツールを活用して応答を生成
ユーザー: 現在の天気を教えてください
アシスタント: [MCPツールを使用して天気情報を取得し、結果を表示]
param/mcp.json では、以下の3種類のトランスポートタイプをサポートしています:
記載方法の例です。実際の利用するmcpに合わせて書き換えてください。
{
"aws-documentation-mcp": {
"transport": "stdio",
"command": "uvx",
"args": ["awslabs.aws-documentation-mcp-server@latest"]
}
}記載方法の例です。実際の利用するmcpに合わせて書き換えてください。localhostではなくリモートホストでもOK。
{
"api-server": {
"transport": "streamable-http",
"url": "http://localhost:3000/mcp"
}
}記載方法の例です。実際の利用するmcpに合わせて書き換えてください。localhostではなくリモートホストでもOK。
{
"sse-server": {
"transport": "sse",
"url": "http://localhost:3000/sse-mcp"
}
}カンマ区切りで複数のmcpサーバを定義可能です。
param/mcp.json には、以下の設定がデフォルトで含まれています:
- aws-documentation-mcp: AWSが提供する公式のMCPサーバー(実際に動作します)
- AWSドキュメント検索機能を提供
注意: streamable-httpとsseの設定例は書き方の参考として記載していますが、実際には動作しないダミー設定です。実際のMCPサーバーを使用する際は、適切なURLやコマンドに変更してください。
- stdio: 標準入出力ベースのMCPクライアント
- streamable-http: HTTPストリーミングベースのMCPクライアント
- sse: Server-Sent EventsベースのMCPクライアント
- MCPクライアントの初期化失敗時の警告表示
- ツール実行エラーの適切な処理
- セッション状態の安全な管理
- システムプロンプトの変更(
DEFAULT_SYSTEM_PROMPT) - モデル設定の変更(
DEFAULT_MODEL_HOST,DEFAULT_MODEL_ID) - MCP設定ファイルのパス変更(
MCP_CONFIG_PATH)
このプロジェクトはApache License 2.0の下でライセンスされています。詳細はLICENSEファイルをご参照ください。
- 初回実行時はMCPクライアントの初期化に時間がかかる場合があります
- 外部APIを使用するMCPツールの場合、適切な認証情報が必要です
- 開発環境ではOllamaサーバーが実行されていることを確認してください
このプロジェクトではOllamaを使用した例を示していますが、これはあくまで一例です。利用可能なモデルや、それぞれのモデルの使い方については、Strands AgentsドキュメントのModel Providersセクションを参照して、各々で適切な設定を行ってください。
agent.py 内の以下の部分を変更することで、異なるモデルプロバイダーを使用できます:
DEFAULT_MODEL_HOST: モデルサーバーのホストURLDEFAULT_MODEL_ID: 使用するモデルIDDEFAULT_SYSTEM_PROMPT: システムプロンプトMODEL: モデル
上記の定数を変更しただけでは不十分です。create_agent 関数内のモデルオブジェクトも適切なモデルプロバイダーに変更する必要があります:
# 現在のOllamaModelの例
model=OllamaModel(
host=DEFAULT_MODEL_HOST,
model_id=DEFAULT_MODEL_ID,
system_prompt=DEFAULT_SYSTEM_PROMPT,
)他のモデルプロバイダー(例: OpenAI, Anthropicなど)を使用する場合は、対応するモデルクラスに変更し、必要なパラメータを設定してください。詳細な設定方法はStrands Agentsドキュメントを参照してください。