mcpField
A
a2me-mcp-server

a2me-mcp-server

Remote
a2me.appSocial Media0Updated 9w ago

About a2me-mcp-server

a2me-mcp-server provides privacy-redacted, read-only family context from A2Me to AI assistants. It supports questions about relatives, dates, activities, and context for family messages, with data scoped to the user's family.

Key features

  1. 01Read-only family context tools
  2. 02Member and relationship lookup
  3. 03Upcoming dates and event details
  4. 04Recent activity and memory search
  5. 05Prompts for cards and messages
  6. 06ChatGPT inline family widgets

Use cases

  1. 01Find a relative's birthday
  2. 02Prepare a family catch-up
  3. 03Draft a birthday card or message
  4. 04Review trip details or unanswered story questions

MCP support

The MCP server offers family-context tools and prompts over stdio locally or Streamable HTTP remotely. Connected clients can access read-only data through the hosted endpoint after OAuth sign-in.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://mcp.a2me.app/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Tools

Details

From the project README

A2Me MCP Server

v1 · read-only. A Model Context Protocol server that exposes read-only, privacy-redacted family-context tools for the A2Me family social platform — so assistants like Claude, ChatGPT, or KAI can answer "when is mom's birthday?" or help write a message to grandma, scoped to your own family.

Hosted at https://mcp.a2me.app/mcp and used in production for A2Me's Connect a2me feature.

Connect from an AI assistant

In Claude or ChatGPT, add a custom connector using the URL:

https://mcp.a2me.app/mcp

You'll be sent through OAuth to sign in to A2Me and grant read-only access; the assistant then has family-aware context scoped to your account.

Run it locally

npm install
npm run dev        # stdio transport, mock data by default

It runs on stdio by default (for local MCP clients) and supports a remote HTTP transport (MCP_TRANSPORT=http) for the hosted deployment. By default it uses mock data (A2ME_USE_MOCK=true); set A2ME_API_URL + A2ME_USE_MOCK=false to call a real API. See .env.example.

Available Tools

ToolDescription
get_family_membersReturns the user's family members with relationship labels
get_upcoming_family_datesBirthdays, anniversaries, and events in the next N days
get_recent_family_activityRecent posts, photos, videos, birthday cards
get_person_profileA family member's profile, interests, and activity summary
get_relationship_between_peopleHow two family members are related
get_birthday_card_contextContext for writing a birthday card (memories, interests, tone)
find_family_memberFuzzy search by name or relationship ("mom", "my grandmother")
answer_family_date_questionNatural language date questions ("When is mom's birthday?")
get_message_context_for_personContext for writing a message with suggestions
get_upcoming_eventsUpcoming events with the user's RSVP status and RSVP counts
get_trip_overviewA trip's dates, roster, travel details (flights/lodging), itinerary
get_life_storyA family member's life story chapters (or recent story answers)
get_unanswered_story_questionsUnanswered story questions — interview prep for a visit
get_person_wishlistA family member's wishlist for gift ideas
search_family_memoriesKeyword search over recent family posts and memories
whats_newCatch-up bundle: recent posts + what's coming up

Prompts

The server also exposes prompts — one-click starting points that appear as connector commands in Claude (and suggestions in ChatGPT), so users get value without knowing tool names. Each steers the assistant to the read-only tools above:

PromptWhat it does
write_birthday_cardDraft a birthday card grounded in a person's context
write_family_messageDraft a message for any occasion/tone
family_catch_upSummarize what's new with the family
upcoming_family_datesList upcoming birthdays/anniversaries with suggestions
about_personWarm summary of a family member and how you're related

The person argument on these prompts autocompletes from your family roster (names + relationship labels) as you type — MCP argument completion, scoped to your family. See src/prompts/index.ts and src/completions.ts.

Example Scenarios

  1. "Help me write a birthday card for my sister"

    • find_family_member → resolves "my sister" to Sarah Walker
    • get_birthday_card_context → returns interests (painting, hiking, coffee), tone suggestions
  2. "When is grandma's birthday?"

    • answer_family_date_question → returns Margaret Walker's birthday (November 8)
  3. "What's been happening in the family?"

    • get_recent_family_activity → returns recent posts, photos, events
  4. "Help me write a thank you message to my dad"

    • get_message_context_for_person → returns Robert Walker's context, interests, suggestions
  5. "Who's in my family?"

    • get_family_members → returns all family members with relationships
  6. "What events are coming up?"

    • get_upcoming_family_dates → returns upcoming birthdays, anniversaries, events

Architecture

┌─────────────────────────────────────────────────────────┐
│                    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)                     │
└─────────────────────────────────────────────────────────┘

Authentication

Currently uses mock authentication — always returns an authenticated user ("Alex Walker") for local development.

Future production integration:

  • OAuth2/Firebase token validation via A2Me API
  • Token passed via MCP session context or environment
  • Per-user data isolation (users only see their own family)

Required A2Me API Endpoints (Future)

MethodEndpointDescription
GET/family/membersList user's family members
GET/family/dates/upcomingUpcoming dates with filters
GET/family/activity/recentRecent family activity feed
GET/people/{personId}/contextPerson profile with safe context
GET/relationships/pathRelationship path between two people
GET/birthday-cards/context/{personId}Birthday card writing context

ChatGPT app widgets

For ChatGPT (Apps SDK), four tools render an interactive inline widget instead of plain JSON:

  • get_upcoming_family_dates → an Upcoming family dates card
  • get_family_members → a Your family roster
  • get_person_profile → a Family member profile card
  • get_recent_family_activity → a Recent family activity feed

Each widget is a small React bundle in widgets/src/ built by npm run build:widgets into dist-widgets/<name>.js|.css. The server serves those as static assets (/widgets/...) and exposes each as a ui://widget/<name>.html resource (MIME text/html+skybridge); the paired tool carries _meta["openai/outputTemplate"] pointing at it. The widget reads the tool's structuredContent from window.openai.toolOutput and renders it. Other MCP clients (Claude, KAI) ignore the widgets and use the same tools' text output. See src/widgets/registry.ts.

Development

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

Privacy Design

This server is designed to be privacy-first:

  • No email addresses, phone numbers, or physical addresses are ever returned
  • Birthdays are shown as month-day only (no birth year)
  • No financial or health information
  • All data scoped to the authenticated user's family only
  • Managed accounts (children) have additional protections

Privacy Policy

Privacy policy: https://a2me.app/privacy

This connector accesses A2Me data on behalf of the authenticated user, over an OAuth 2.0 "Connect A2Me" flow, and is bound by the A2Me privacy policy above.

  • What we collect / access: read-only family-context data for the authenticated user's own family — member names, relationship labels, month–day of birthdays and events, and recent activity summaries. We never return email addresses, phone numbers, physical addresses, birth years, or financial/health data.
  • How it's used: returned to the connected AI assistant solely to answer the user's request in-session. The connector does not train models on this data and performs no writes back to A2Me.
  • Storage & retention: the connector holds no family data at rest. For transparency and abuse prevention we log access metadata (timestamp, tool name, calling assistant, scopes) in an append-only audit log; users can review this under Settings → Connected apps in A2Me.
  • Third-party sharing: OAuth tokens are issued and validated via our auth provider (Scalekit); no family data is shared with third parties beyond the AI assistant the user explicitly connected.
  • Contact: [email protected] · security disclosures per SECURITY.md.

Tech Stack

  • Runtime: Node.js 20+
  • Language: TypeScript (strict mode)
  • MCP SDK: @modelcontextprotocol/sdk
  • Validation: Zod
  • Testing: Vitest
  • Transport: Streamable HTTP (remote/production) and stdio (local dev)

License

Private — Kinnectd / A2Me

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.