MCP Sampleは、AndroidスマートフォンでAI(人工知能)のFunction Calling(関数呼び出し)機能を体験できるサンプルアプリです。
通常のAIチャットは「質問に答える」だけですが、Function Callingを使うとAIが実際に行動を起こすことができます。
例:
- 「今日の天気を教えて」→ AIが実際に天気APIから最新データを取得
- 「Notionにメモして」→ AIが実際にNotionにページを作成
- 「現在時刻は?」→ AIがスマホの時計から正確な時刻を取得
「横浜の天気を教えて」
→ AIが気象APIから最新の天気データを取得してお答えします
「今日の学習記録というタイトルでNotionページを作成して」
→ AIが実際にNotionワークスペースに新しいページを作成します
「test_keyで『重要な情報』をメモリに保存して」
→ AIがアプリ内にデータを保存し、後で呼び出せます
「現在の時刻を教えて」
→ AIがスマホから正確な日時情報を取得します
あなたの質問
↓
┌─────────────────┐
│ Androidアプリ │
├─────────────────┤
│ 1. AIサービス │ ← プロバイダー選択(OpenAI/Gemini等)
│ 2. Function呼び出し │ ← AIが必要な機能を判断
│ 3. 実際のAPI実行 │ ← 天気/Notion/メモリ等
└─────────────────┘
↓
実際の結果をお返し
- Mock AI 🤖 - テスト用(インターネット不要)
- OpenAI 🧠 - ChatGPTのAPI
- Gemini 💎 - GoogleのAI(基本版)
- Gemini + Tools 🛠️ - Function Calling対応(推奨)
- Weather Service: Open-Meteo API(無料天気予報)
- Notion Service: Notion API(メモ・ドキュメント作成)
- Memory Service: アプリ内データ保存
- System Service: デバイス情報取得
- サーバー:ツール(機能)を提供
- クライアント:AIからツールを呼び出し
- 通信層:リクエスト・レスポンスの管理
- Google AI Studio にアクセス
- 「Create API Key」をクリック
- 生成されたキーをコピー
- Notion Developers にアクセス
- 「New integration」で新しい統合を作成
- 生成されたトークンをコピー
- 使用したいNotionページで統合を追加
プロジェクトルートに gradle.properties ファイルを作成:
# API Keys
GEMINI_API_KEY=your_gemini_api_key_here
OPENAI_API_KEY=your_openai_api_key_here1. Android Studioでプロジェクトを開く
2. Build > Rebuild Project
3. Run > Run 'app'- アプリを起動
- AIプロバイダーを選択
- 「Gemini + Tools」を推奨(Function Calling対応)
- 質問を入力
- 下のクイックテストボタンも使えます
- 結果を確認
- ログエリアで詳細な実行過程を確認
今日の東京の天気を教えて
横浜の天気をNotionの「今日の記録」ページに保存して
現在の時刻と天気を確認して、適切なコメントと一緒にNotionにまとめて
アプリ下部のログエリアで実行状況を確認できます:
[14:30:15] 🤖 Sending to Gemini + Tools: 今日の横浜の天気を教えて
[14:30:16] ⏳ Waiting for response...
[14:30:18] 🔧 Function get_weather executed: {"success":true,"location":"横浜"}
[14:30:18] ✅ Response received: 横浜の天気は晴れ、気温22°C...
[14:30:15] ❌ Error: API key not found
原因: APIキーが設定されていない
解決: gradle.properties ファイルにAPIキーを正しく設定
原因: AIプロバイダーが「Gemini + Tools」以外に設定されている 解決: 画面右上のプロバイダー切り替えボタンで「Gemini + Tools」を選択
原因: NotionのIntegration設定が不完全 解決:
- Notion Integration Tokenが正しいか確認
- 対象ページでIntegrationが追加されているか確認
解決:
./gradlew clean
rm -rf .gradle
rm -rf app/build-
段階的テスト
- まずMock AIで基本動作確認
- 次にGemini基本版でAPI接続確認
- 最後にFunction Calling機能をテスト
-
ログの活用
- エラーメッセージを注意深く読む
- Function Call実行の各ステップを確認
-
Android Studio Logcat
フィルター: tag:MCPSample OR tag:System.out
- まずはMock AIで基本操作に慣れましょう
- ログを見ながらAIがどう動いているか観察してみてください
- 簡単なプロンプトから始めて、徐々に複雑にしていきましょう
FunctionRegistry.ktでFunction定義を確認GeminiClientWithFunctions.ktでAPI呼び出し実装を確認tools/ToolServices.ktで実際のサービス連携を確認
- 新しいサービスクラスを作成 (
tools/ToolServices.kt) - Function定義を追加 (
tools/FunctionRegistry.kt) - 実行ロジックを実装 (
FunctionRegistry.executeFunction)
app/src/main/java/com/example/mcpsample/
├── MainActivity.kt # UI画面
├── AIService.kt # AIプロバイダー管理
├── GeminiClientWithFunctions.kt # Function Calling実装
├── McpServer.kt # MCPサーバー
├── McpClient.kt # MCPクライアント
└── tools/
├── FunctionRegistry.kt # Function定義・実行
└── ToolServices.kt # 実際のAPI呼び出し
- MCP (Model Context Protocol): 公式ドキュメント
- Gemini API: Google AI Studio
- Function Calling: OpenAI Documentation
- Android Jetpack Compose: 公式ガイド
このサンプルアプリを通じて、AI Function Callingの基本から実践的な活用まで学んでいただけます。質問やフィードバックがあれば、お気軽にお知らせください!