※ 本サービス(コンテンツ・作品等)はJPYC株式会社による公式コンテンツではありません。
※ 「JPYC」はJPYC株式会社の提供するステーブルコインです。
※ JPYC及びJPYCロゴは、JPYC株式会社の登録商標です。自然言語でJPYCトークンを操作できるAIチャットアプリケーション
JPYC AI Agentは、チャットで指示を送るだけでJPYC(日本円ステーブルコイン)の送信や残高照会ができるAIアシスタントです。ブロックチェーンの複雑な操作を自然言語で実行できます。
- 💬 「0x123...に100JPYC送って」のような会話で送信可能
- 🔄 「Polygon Amoyに切り替えて」でチェーン変更
- 💰 「残高教えて」で即座に残高確認
- 📊 「流通量は?」で総供給量を照会
- ✅ Ethereum Sepolia (推奨・動作確認済み)
⚠️ Polygon Amoy (未確認)⚠️ Avalanche Fuji (未確認)
- 送信後、自動的にエクスプローラーリンクを生成
- ワンクリックでトランザクション詳細を確認可能
- OpenAI gpt-4o-mini による自然言語解釈
- Mastra フレームワークでツール統合
- MCP (Model Context Protocol) でブロックチェーン操作
cp .env.local.example .env.localセットアップが必要な環境変数は以下の通り:
# JPYC SDK Configuration
# ⚠️ 本番環境では絶対に使用しないでください!テストネット専用です
PRIVATE_KEY=0x... # テストネット用の秘密鍵
# AI API Keys(自分の使いたいモデルに必要なAPIキーをセットしてください。 ※ Claudeを推奨)
OPENAI_API_KEY=sk-proj-... # OpenAI APIキー
GOOGLE_GENERATIVE_AI_API_KEY= # Gemini APIキー
ANTHROPIC_API_KEY= # Claude APIキー
# JPYC MCPサーバーURL
JPYC_MCP_SERVER_URL="http://localhost:3001/sse"OpenAI Platform にアクセスしてAPIキーを発行してください。
-
OpenAI Platform にアクセス
-
アカウントを作成またはログイン
- 新規の場合はサインアップ
-
API Keysセクションで新しいキーを作成
- ダッシュボード → API Keys → Create new secret key
-
生成されたAPIキーを取得する
sk-proj-...の形式のキーをコピー
-
APIキーを環境変数に設定
OPENAI_API_KEY=sk-proj-...
-
テストネット専用のウォレットを作成
- MetaMaskなどで新しいウォレットを作成
-
秘密鍵をエクスポート
- MetaMask → アカウント詳細 → 秘密鍵のエクスポート
-
秘密鍵を環境変数に設定
PRIVATE_KEY=0x...
- Sepolia Faucet でSepoliaETHを取得
- ガス代として使用されます
- JPYC FaucetでJPYC テストトークンを取得
こちらはJPYC Prepaid版のFaucetです。資金移動業版リリースまでは今しばらくお待ちください。
git clone --recurse-submodules https://github.com/YOUR_USERNAME/jpyc-ai-agent.git
cd jpyc-ai-agentgit submodule update --init --recursivepnpm installJPYC SDKはGit submoduleとしてexternal/jpyc-sdkに配置されています。
pnpm build必ずビルドした後に実行してください!
まずJPYC MCP サーバーを起動させます。
pnpm run mcp:devこれで、 http://localhost:3001 でJPYC MCPサーバーが立ち上がります。
この状態でWebアプリを起動させます。
pnpm run devアプリケーションが http://localhost:3000 で起動します。
もしAIチャットの出力がオブジェクト形式になっている場合は src/lib/mastra/agent.tsで使用しているモデルを別のもの(geminiなど)に切り替えてみてください。
アプリケーションを起動すると、チャット画面が表示されます。 自然言語で指示を入力するだけで、JPYC操作が可能です。
ユーザー: 残高教えて
アシスタント: Ethereum Sepoliaチェーンの残高は 1,000 JPYC です
ユーザー: 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEbの残高を教えて
アシスタント: Ethereum Sepoliaチェーンの残高は 500 JPYC です
ユーザー: 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEbに100JPYC送って
アシスタント: 0x742d35Cc...に 100 JPYC送りました!
トランザクションは[こちらで確認](https://sepolia.etherscan.io/tx/0x...)できます(Ethereum Sepolia)
ユーザー: 流通量教えて
アシスタント: 現在のEthereum Sepoliaでの総供給量は 100,000,000 JPYC です
ユーザー: Polygon Amoyに切り替えて
アシスタント: Polygon Amoy に切り替えました
ユーザー: Avalancheで実行して
アシスタント: Avalanche Fuji に切り替えました
ユーザー: Sepoliaに切り替えて、0x742d35Cc...に50JPYC送って
アシスタント: Ethereum Sepolia に切り替えました
0x742d35Cc...に 50 JPYC送りました!
トランザクションは[こちらで確認](https://sepolia.etherscan.io/tx/0x...)できます
jpyc-ai-agent/
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── api/
│ │ │ ├── chat/route.ts # チャットAPIエンドポイント
│ │ │ └── chain/route.ts # チェーン情報取得API
│ │ ├── layout.tsx # ルートレイアウト
│ │ ├── page.tsx # トップページ
│ │ └── globals.css # グローバルスタイル
│ │
│ ├── components/
│ │ └── ChatInterface.tsx # チャットUIコンポーネント
│ │
│ ├── lib/
│ │ ├── mastra/
│ │ │ └── agent.ts # ★ Mastra AIエージェント定義
│ │ └── jpyc/
│ │ └── sdk.ts # ★ JPYC SDK ラッパー(viem統合)
│ │
│ └── mcp-server/ # ★★ MCP サーバー実装
│ ├── index.ts # MCPサーバーエントリーポイント
│ ├── types.ts # スキーマ定義
│ └── tools/ # ★★★ MCPツール定義
│ ├── balance.ts # 残高照会ツール
│ ├── totalSupply.ts # 総供給量照会ツール
│ ├── transfer.ts # 送信ツール
│ ├── switchChain.ts # チェーン切り替えツール
│ └── getCurrentChain.ts # 現在のチェーン取得ツール
│
├── external/
│ └── jpyc-sdk/ # JPYC SDK(git submodule)
│
├── public/
│ └── demo_image.png # デモ画像
│
├── .env.local # 環境変数(Gitに含めない)
├── .env.example # 環境変数テンプレート
├── package.json
├── PROJECT_ARCHITECTURE.md # 詳細なアーキテクチャドキュメント
├── KNOWN_ISSUES.md # 既知の問題
└── README.md
Mastraは、AIエージェントを構築するためのフレームワークです。
このプロジェクトでは、Mastraを使って:
- ユーザーの自然言語を解釈
- 適切なMCPツールを選択
- ツールを実行して結果を返す
MCPは、AIモデルが外部ツールを呼び出すための標準化されたプロトコルです。
このプロジェクトでは、5つのMCPツールを実装:
| ツール名 | 機能 | 説明 |
|---|---|---|
jpyc_transfer |
トークン送信 | 指定したアドレスにJPYCを送信 |
jpyc_balance |
残高照会 | アドレスのJPYC残高を確認 |
jpyc_total_supply |
総供給量照会 | JPYCの総供給量を確認 |
jpyc_switch_chain |
チェーン切り替え | テストネットを変更 |
jpyc_get_current_chain |
現在のチェーン取得 | 現在選択中のチェーンを取得 |
ユーザー入力: "0x123...に100JPYC送って"
↓
ChatInterface (フロントエンド)
↓
API(/api/chat) にPOSTリクエスト
↓
Mastra Agent が自然言語を解釈
↓
OpenAI gpt-4o-mini が適切なツールを選択
↓
MCPツール実行 (transferTool)
↓
JPYC SDK (viem) でブロックチェーン操作
↓
トランザクション送信 → 結果をユーザーに返す
詳細なアーキテクチャは PROJECT_ARCHITECTURE.md を参照してください。
このプロジェクトでは、JPYC SDK Coreをsubmoduleとして統合しています:
- リポジトリ: https://github.com/jcam1/sdks (develop branch)
- 配置場所:
external/jpyc-sdk/packages/core - ビルドスクリプト:
pnpm build実行時に自動でコンパイル - 利点:
- 公式SDKの全機能が利用可能
- ソースコードから直接ビルドするため最新の機能に対応
- カスタマイズが容易
| チェーン | RPC URL | Explorer |
|---|---|---|
| Ethereum Sepolia | https://ethereum-sepolia-rpc.publicnode.com |
Etherscan |
| Polygon Amoy | https://rpc-amoy.polygon.technology |
PolygonScan |
| Avalanche Fuji | https://api.avax-test.network/ext/bc/C/rpc |
SnowTrace |
JPYCコントラクトアドレス(全チェーン共通): 0x431D5dfF03120AFA4bDf332c61A6e1766eF37BDB
- 秘密鍵は
.env.localに保存されます(Gitにコミットされません) - テストネット専用のウォレットを使用してください
- 本番環境の秘密鍵を絶対に使用しないでください
.env.localはリポジトリにコミットしないでください(.gitignoreに追加済み)
- プロジェクトアーキテクチャ - 詳細な技術ドキュメント
- 既知の問題 - 既知の問題と解決策
- Mastra Documentation
- OpenAI API Documentation
- viem Documentation
- Next.js 15 Documentation
- Model Context Protocol (MCP)
このプロジェクトは現在、JPYC Prepaid (0x431D5dfF03120AFA4bDf332c61A6e1766eF37BDB) に対応しています。
対応チェーン:
- ✅ Ethereum Sepolia
- ✅ Avalanche Fuji
⚠️ Polygon Amoy(コントラクト未デプロイのため未対応)
間もなく公開予定の JPYC(資金移動業版)では、以下のアドレスが使用されます:
- 新アドレス:
0xE7C3D8C9a439feDe00D2600032D5dB0Be71C3c29 - コントラクトの変更: なし(ABIは同じ)
- 移行方法: アドレスを変更するだけで対応可能
JPYCでの対応チェーン:
- ✅ Ethereum Sepolia
- ✅ Polygon Amoy(Faucet公開後に対応)
- ✅ Avalanche Fuji
現在、資金移動業版のSDKが公開準備中のため、このプロジェクトでは JPYC SDK を git submodule として組み込んでいます。
JPYC(資金移動業版)が公開されたら、以下の手順で移行してください:
-
コントラクトアドレスを変更 (
src/lib/jpyc/sdk.ts)const JPYC_CONTRACT_ADDRESS: Hex = '0xE7C3D8C9a439feDe00D2600032D5dB0Be71C3c29';
-
(Polygon Amoy対応時)AIエージェントの説明を更新 (
src/lib/mastra/agent.ts)- 対応テストネットにPolygon Amoyが利用可能であることを明記
-
動作確認
- 各テストネットで残高照会・送信をテスト
