a2me-mcp-server について
a2me-mcp-serverは、プライバシーに配慮して情報を限定したA2Meの家族情報を、読み取り専用でAIアシスタントに提供します。ユーザー自身の家族に範囲を限定し、親族や日付、活動の確認、家族へのメッセージ作成を支援します。
主な機能
- 01読み取り専用の家族情報ツール
- 02家族メンバーと続柄の検索
- 03今後の日付とイベント情報
- 04最近の活動とメモリー検索
- 05カードやメッセージ用プロンプト
- 06ChatGPTの家族情報インラインウィジェット
活用シーン
- 01親族の誕生日を調べる
- 02家族の近況を把握する
- 03誕生日カードやメッセージを作成する
- 04旅行の詳細や未回答のストーリー質問を確認する
MCP 対応
このMCPサーバーは、ローカルではstdio、リモートではStreamable HTTPを介して家族情報ツールとプロンプトを提供します。OAuthでサインインしたクライアントは、ホストされたエンドポイントから読み取り専用データにアクセスできます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.a2me.app/mcpclaude mcp add --transport http kinnectd-a2me https://mcp.a2me.app/mcp{"mcpServers":{"kinnectd-a2me":{"type":"http","url":"https://mcp.a2me.app/mcp"}}}Cursor で開く{"servers":{"kinnectd-a2me":{"type":"http","url":"https://mcp.a2me.app/mcp"}}}VS Code で開く{"mcpServers":{"kinnectd-a2me":{"type":"http","url":"https://mcp.a2me.app/mcp"}}}{"mcpServers":{"kinnectd-a2me":{"serverUrl":"https://mcp.a2me.app/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
A2Me MCP Server
v1 · 読み取り専用。 A2Me ファミリーソーシャルプラットフォームの読み取り専用・プライバシーに配慮した形で匿名化された家族コンテキストツールを公開する Model Context Protocol サーバーです。Claude、ChatGPT、KAI などのアシスタントが、「お母さんの誕生日はいつ?」といった質問に答えたり、おばあちゃんへのメッセージ作成を手伝ったりできます。利用できる情報は、ご自身の家族に限定されます。
https://mcp.a2me.app/mcp でホストされており、A2Me のConnect a2me機能で本番利用されています。
AI アシスタントから接続する
Claude または ChatGPT で、次の URL を使ってカスタムコネクターを追加します。
https://mcp.a2me.app/mcp
OAuth を通じて A2Me にサインインし、読み取り専用アクセスを許可します。その後、アシスタントはアカウントに限定された、家族に関するコンテキストを利用できるようになります。
ローカルで実行する
npm install
npm run dev # stdio transport, mock data by default
デフォルトでは stdio(ローカル MCP クライアント用)で実行され、ホスト環境へのデプロイ向けにリモート HTTP トランスポート(MCP_TRANSPORT=http)もサポートしています。デフォルトではモックデータ(A2ME_USE_MOCK=true)を使用します。実際の API を呼び出すには、A2ME_API_URL と A2ME_USE_MOCK=false を設定してください。.env.example を参照してください。
利用可能なツール
| ツール | 説明 |
|---|---|
get_family_members | 関係性のラベルとともに、ユーザーの家族メンバーを返します |
get_upcoming_family_dates | 今後 N 日間の誕生日、記念日、イベントを返します |
get_recent_family_activity | 最近の投稿、写真、動画、バースデーカードを返します |
get_person_profile | 家族メンバーのプロフィール、興味・関心、活動の概要を返します |
get_relationship_between_people | 2 人の家族メンバーの関係性を返します |
get_birthday_card_context | バースデーカードの作成に役立つコンテキスト(思い出、興味・関心、トーン)を返します |
find_family_member | 名前または関係性(「母」「祖母」など)であいまい検索します |
answer_family_date_question | 日付に関する自然言語の質問(「お母さんの誕生日はいつ?」など)に答えます |
get_message_context_for_person | 提案を含む、メッセージ作成に役立つコンテキストを返します |
get_upcoming_events | ユーザーの出欠回答状況と回答数を含む、今後のイベントを返します |
get_trip_overview | 旅行の日程、参加者一覧、移動の詳細(フライト/宿泊先)、旅程を返します |
get_life_story | 家族メンバーの人生の物語の章(または最近の物語への回答)を返します |
get_unanswered_story_questions | 未回答の物語に関する質問を返します。訪問時のインタビュー準備に役立ちます |
get_person_wishlist | ギフト選びに役立つ、家族メンバーのウィッシュリストを返します |
search_family_memories | 最近の家族の投稿や思い出をキーワード検索します |
whats_new | 最近の投稿と今後の予定をまとめた近況情報を返します |
プロンプト
サーバーはプロンプトも公開しています。これは、Claude ではコネクターコマンドとして、ChatGPT では候補として表示されるワンクリックで開始できる入口です。ツール名を知らなくても、ユーザーはすぐに活用できます。各プロンプトは、上記の読み取り専用ツールを使用するようアシスタントを導きます。
| プロンプト | 機能 |
|---|---|
write_birthday_card | その人の背景に基づいた誕生日カードの文案を作成します |
write_family_message | あらゆる場面や口調に合わせたメッセージの文案を作成します |
family_catch_up | 家族の最近の出来事を要約します |
upcoming_family_dates | 近日中の誕生日や記念日を提案とともに一覧表示します |
about_person | 家族の一員について、関係性を含めて温かみのある要約を作成します |
これらのプロンプトの person 引数は、入力中に家族名簿から自動補完されます(名前と続柄)。MCP の引数補完機能を家族向けに限定して使用します。詳しくは、src/prompts/index.ts と src/completions.ts を参照してください。
シナリオ例
-
「妹の誕生日カードを書くのを手伝って」
find_family_member→ 「妹」に該当する Sarah Walker を特定しますget_birthday_card_context→ 趣味(絵画、ハイキング、コーヒー)と口調の提案を返します
-
「おばあちゃんの誕生日はいつ?」
answer_family_date_question→ Margaret Walker の誕生日(11月8日)を返します
-
「家族に最近何があった?」
get_recent_family_activity→ 最近の投稿、写真、イベントを返します
-
「父へのお礼のメッセージを書くのを手伝って」
get_message_context_for_person→ Robert Walker の背景、趣味、提案を返します
-
「家族には誰がいる?」
get_family_members→ 続柄とともに家族全員を返します
-
「今後、どんなイベントがある?」
get_upcoming_family_dates→ 近日中の誕生日、記念日、イベントを返します
アーキテクチャ
┌─────────────────────────────────────────────────────────┐
│ MCP Client (LLM) │
│ (Claude, ChatGPT, KAI, etc.) │
└───────────────────────┬─────────────────────────────────┘
│ stdio (MCP Protocol)
┌───────────────────────▼─────────────────────────────────┐
│ A2Me MCP Server │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Tool Registry (16 tools) │ │
│ └──────────────────────┬──────────────────────────┘ │
│ │ │
│ ┌──────────────────────▼──────────────────────────┐ │
│ │ Family Context Resolver │ │
│ │ (fuzzy matching, relationship resolution) │ │
│ └──────────────────────┬──────────────────────────┘ │
│ │ │
│ ┌──────────────────────▼──────────────────────────┐ │
│ │ A2Me API Client │ │
│ │ (currently mock, future: real HTTP calls) │ │
│ └──────────────────────┬──────────────────────────┘ │
│ │ │
│ ┌──────────────────────▼──────────────────────────┐ │
│ │ Auth Context │ │
│ │ (currently mock, future: OAuth/Firebase) │ │
│ └─────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
│ (future)
┌───────────────────────▼─────────────────────────────────┐
│ A2Me REST API │
│ (kinnectd-api service) │
└─────────────────────────────────────────────────────────┘
認証
現在はモック認証を使用しており、ローカル開発では常に認証済みユーザー(「Alex Walker」)を返します。
今後の本番環境との連携:
- A2Me API を介した OAuth2/Firebase トークンの検証
- MCP セッションコンテキストまたは環境変数を介したトークンの受け渡し
- ユーザーごとのデータ分離(ユーザーには自分の家族の情報のみが表示されます)
今後必要となる A2Me API エンドポイント
| メソッド | エンドポイント | 説明 |
|---|---|---|
| GET | /family/members | ユーザーの家族の一覧を取得します |
| GET | /family/dates/upcoming | フィルターを指定して近日中の日付を取得します |
| GET | /family/activity/recent | 家族の最近のアクティビティフィードを取得します |
| GET | /people/{personId}/context | 安全なコンテキストを含む人物プロフィールを取得します |
| GET | /relationships/path | 2人の間の続柄の経路を取得します |
| GET | /birthday-cards/context/{personId} | 誕生日カードの文案作成に必要な背景情報を取得します |
ChatGPT アプリのウィジェット
ChatGPT(Apps SDK)では、4 つのツールが通常の JSON の代わりに、インタラクティブなインラインウィジェットを表示します。
get_upcoming_family_dates→ Upcoming family dates カードget_family_members→ Your family メンバー一覧get_person_profile→ Family member プロフィールカードget_recent_family_activity→ Recent family activity フィード
各ウィジェットは widgets/src/ にある小さな React バンドルで、npm run build:widgets によって dist-widgets/<name>.js|.css にビルドされます。サーバーはこれらを静的アセット(/widgets/...)として提供し、それぞれを ui://widget/<name>.html リソース(MIME text/html+skybridge)として公開します。対応するツールには、該当リソースを指す _meta["openai/outputTemplate"] が含まれます。ウィジェットは window.openai.toolOutput からツールの structuredContent を読み取り、表示します。他の MCP クライアント(Claude、KAI)はウィジェットを無視し、同じツールのテキスト出力を使用します。詳しくは src/widgets/registry.ts を参照してください。
開発
npm run dev # Run the server with tsx (hot reload)
npm run build # Compile server (tsc) + build widget bundles
npm run build:server # Server only
npm run build:widgets # Widget bundles only (-> dist-widgets/)
npm run test # Run tests (incl. widget render tests)
npm run test:watch # Watch mode
npm run lint # ESLint
npm run format # Prettier
npm run check # Type check only
プライバシー設計
このサーバーは、プライバシーを最優先するように設計されています。
- メールアドレス、電話番号、住所は一切返しません
- 誕生日は月日だけを表示します(出生年は表示しません)
- 財務情報や健康情報は扱いません
- すべてのデータは、認証済みユーザー自身の家族に限定されます
- 管理対象アカウント(子ども)には、追加の保護措置が適用されます
プライバシーポリシー
プライバシーポリシー: https://a2me.app/privacy
このコネクターは、OAuth 2.0 の「Connect A2Me」フローを通じて認証済みユーザーに代わり A2Me のデータにアクセスし、上記の A2Me プライバシーポリシーに従います。
- 収集/アクセスする情報: 認証済みユーザー自身の家族に関する、読み取り専用の家族情報です。メンバーの名前、続柄、誕生日とイベントの月日、最近のアクティビティの概要が含まれます。メールアドレス、電話番号、住所、出生年、財務情報や健康情報は一切返しません。
- 利用方法: 接続先の AI アシスタントに返され、セッション中にユーザーのリクエストに回答する目的にのみ使用されます。このコネクターは、このデータを使ってモデルをトレーニングせず、A2Me への書き込みも行いません。
- 保存と保持: コネクターは家族データを保存しません。透明性の確保と不正利用の防止のため、アクセスメタデータ(タイムスタンプ、ツール名、呼び出したアシスタント、スコープ)を追記専用の監査ログに記録します。ユーザーは A2Me の Settings → Connected apps でこれを確認できます。
- 第三者との共有: OAuth トークンは認証プロバイダー(Scalekit)を通じて発行・検証されます。ユーザーが明示的に接続した AI アシスタント以外の第三者と家族データを共有することはありません。
- お問い合わせ先: [email protected] · セキュリティに関する報告は SECURITY.md をご覧ください。
技術スタック
- ランタイム: Node.js 20+
- 言語: TypeScript(厳格モード)
- MCP SDK:
@modelcontextprotocol/sdk - バリデーション: Zod
- テスト: Vitest
- トランスポート: Streamable HTTP(リモート/本番環境)および stdio(ローカル開発)
ライセンス
非公開 — Kinnectd / A2Me
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。