Skip to main content
Glama

Member Berries

'Member when AI assistants felt like friends?
Member Berries 'members.

Your AI assistant (Claude, ChatGPT, Cursor or any MCP client) gets local memory of Calendar, Notes and Reminders — so it actually 'members your day.

Licence: MIT TypeScript Stars M-Pineapple/member-berries-apple-mcp MCP server

A fun macOS MCP that makes your assistant feel like a helpful friend who actually remembers your day. Named in homage to South Park’s Member Berries — those nostalgic little berries that go “'Member …?” — this server brings that same playful “remember when…” energy to your calendar, notes, and reminders.

Not affiliated with South Park or Comedy Central. Just a wink, a berry cluster, and a local memory file.

v2.1.4 · MCP · MIT · Bun or npm · data stays on your Mac


macOS only. Member Berries drives Apple Calendar, Reminders and Notes through macOS automation, so its tools only work on a Mac. It installs on Linux or Windows, but the tools there will fail.

Quick start

Three steps. Then ask “What's on today?” Bun runs a clone of the source. npm runs the published package.

  1. Install the server

    Bun

    brew install bun
    git clone https://github.com/M-Pineapple/member-berries-apple-mcp.git
    cd member-berries-apple-mcp/member-berries
    bun install

    npm

    Node.js 18 or later is enough. The package on npm is member-berries-apple-mcp (current release 2.1.4). The bin is member-berries-mcp.

    npm install -g member-berries-apple-mcp

    npx can fetch and run that same bin. It starts the stdio server, which is what an MCP host does:

    npx -y member-berries-apple-mcp
  2. Point your MCP client at it

    Bun

    Claude Desktop example (same bun run …/index.ts command works in ChatGPT, Cursor, Claude Code or any other MCP host):

    {
      "mcpServers": {
        "member-berries": {
          "command": "bun",
          "args": ["run", "/ABSOLUTE/PATH/member-berries-apple-mcp/member-berries/index.ts"]
        }
      }
    }

    Restart the host after saving.

    npm

    Claude Desktop example (same npx command works in ChatGPT, Cursor, Claude Code or any other MCP host):

    {
      "mcpServers": {
        "member-berries": {
          "command": "npx",
          "args": ["-y", "member-berries-apple-mcp"]
        }
      }
    }

    npx -y member-berries-apple-mcp runs the member-berries-mcp bin. Restart the host after saving. When member-berries-mcp is on your PATH, set command to member-berries-mcp and args to [].

  3. Talk to it

    Grant macOS automation / Calendar / Reminders / Notes access when prompted. Keep Reminders open for reminder tools. Then ask “What's on today?”

Optional but tasty: paste member-berries/CLAUDE_PROMPT_SETUP.md into custom instructions for the full Member Berries personality. Built-in starters still work without it.


Related MCP server: Apple EventKit MCP Server

What is Member Berries?

A personality-first fork of apple-mcp, stripped to Calendar / Notes / Reminders and wrapped in a local day-memory layer:

  • "How did your dentist appointment go?" — remembers completed events

  • "Don't forget about that presentation at 2pm!" — proactive reminders

  • "I see you created that project outline" — tracks your notes

  • "What's on today?" — one-shot briefing tool

Same tools, friendlier vibe. The assistant stops sounding like a robot reading a database and starts sounding like someone who 'members your day.


Who is this for?

You are…

Start here

A macOS user who wants an assistant with personality

Install above, paste the optional prompt, ask “What's on today?”

On Cursor, ChatGPT, Claude Code or another MCP host

Bun or npm. See Quick start

Privacy-first

Local ~/.member-berries-memory.json (mode 600). No cloud sync from this server

Already using Memory Service / other Apple MCPs

This is fun day-memory + Apple surfaces, not general conversation memory


Features

  • Briefing — one briefing / today call for calendar, due reminders, note titles, starters

  • Calendar memory — search, list, open, create

  • Notes — title + snippet by default; full body on demand

  • Reminders — list, search, create, complete, delete, listById

  • Member Berries memory — built-in conversation starters ('member energy included)

  • Focused scope — Calendar, Notes, Reminders only (no Messages / Mail / Contacts)


Usage

Once the host has the server running, talk to it in natural language:

  • "What's on today?"

  • "How did the dentist appointment go?"

  • "Don't forget about that presentation at 2pm"

  • "Search my notes for the project outline"

  • "Create a reminder to buy milk"

The briefing tool is the one-shot day summary. Calendar, Notes and Reminders cover the rest. See MCP tools and member-berries/README.md for operation names.


MCP tools

Tool

Operations

briefing

today — day summary with a side of 'member

calendar

search, list, open, create

notes

search, list, get, create (includeBody, folderName)

reminders

list, search, open, create, listById, complete, delete

memberberries

get_starters, get_memories, check_events

More detail: member-berries/README.md.


More MCP servers by M-Pineapple

Other MCP servers in this portfolio:


Support this project

If Member Berries has made your assistant feel more like a helpful friend who remembers your day, consider buying me a coffee:

Your support helps keep the berries fresh: Apple integrations, personality polish, and compatibility with host updates.

Thank you for helping it 'member!

If this saves you time, a star helps others find it.


License

MIT. See LICENSE. Fork lineage: apple-mcp; its copyright notice is kept in THIRD_PARTY_NOTICES.md.

Member Berries is an independent project. The name pays homage to South Park’s Member Berries; no affiliation or endorsement is implied.


'Member when AI assistants felt like friends? Member Berries 'members.

Available Tools

5 tools
briefingA

One-shot day briefing: today's calendar, due reminders, recent note titles, and conversation starters

NameRequiredDescriptionDefault
operationNoOperation: 'today' (default)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose the composition of returned data (calendar, reminders, note titles, conversation starters), which is genuinely useful behavioral context, but it says nothing about permission requirements, freshness/recency windows (how recent is 'recent'?), or whether the call has any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence-fragment that enumerates outputs in priority order with zero filler. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description must convey what comes back, and it does so by listing the four content sections. It's adequate for a zero-required-parameter read tool, though the absence of any indication of return shape or data freshness leaves a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single optional enum parameter ('operation': 'today') fully documented in the schema. The description adds nothing about the parameter, but the schema already does the work, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete composited output: today's calendar, due reminders, recent note titles, and conversation starters. It's clear what the tool produces, and the enumerated sections implicitly map to the calendar/notes/reminders siblings, but it never explicitly states that this is a composite that replaces calling those siblings separately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'One-shot day briefing' hints that this is the single-call alternative to hitting calendar, reminders, and notes individually, but no explicit when-to-use or when-not-to-use guidance is given. An agent must infer the routing decision from the word 'one-shot' and the content list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calendarC

Search, create, and open calendar events in Apple Calendar (Member Berries)

NameRequiredDescriptionDefault
limitNoMax events to retrieve (optional, default 10)
notesNoNotes (optional for create)
titleNoEvent title (required for create)
toDateNoEnd date ISO (optional)
endDateNoEnd ISO (required for create)
eventIdNoEvent ID (required for open)
fromDateNoStart date ISO (optional)
isAllDayNoAll-day flag (optional for create)
locationNoLocation (optional for create)
operationYesOperation: 'search', 'open', 'list', or 'create'
startDateNoStart ISO (required for create)
searchTextNoSearch text (required for search)
calendarNameNoCalendar name (optional for create)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about permissions, mutation effects, reversibility, return format, or what `open` does. The word `create` implies a write operation, but no meaningful behavioral context is supplied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is a single front-loaded sentence with no filler. It is efficient, though for a four-operation, 13-parameter tool it is arguably too sparse to be fully structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a complex multi-operation tool with no annotations and no output schema, so the description should explain operation routing and behavioral expectations. Instead, it provides only a one-line summary, leaving major gaps around list behavior, create side effects, open semantics, and return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 13 parameters are already documented in the schema, establishing a baseline of 3. The description adds no parameter-level meaning and even omits the `list` operation that the schema exposes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states specific verbs and a clear resource: searching, creating, and opening calendar events in Apple Calendar. It is distinguishable from sibling tools such as notes and reminders by resource, but it omits the supported `list` operation and does not explicitly route against alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists some actions but gives no when-to-use guidance, no operation-selection advice, and no exclusions or prerequisites. An agent must inspect the schema enum to discover the full operation set, including `list`.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memberberriesC

Access Member Berries memories — conversation starters and recent activities. Built-in starters work without a custom host prompt.

NameRequiredDescriptionDefault
operationYes'get_starters', 'get_memories', or 'check_events'

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description carries the full disclosure burden. It implies read-style retrieval but never states whether it is read-only, whether calls have side effects, or what shape the response takes (e.g., whether check_events triggers anything server-side).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler, and the functional claim comes first. It is efficient, though the second sentence spends its words on an implementation detail rather than clarifying the operations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations and no output schema, the description leaves too much unsaid: what a "memory" or "starter" is, what check_events does, and what the return values look like. An agent would have to guess before invoking it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one required parameter, but the description never explains what get_starters, get_memories, or check_events actually return or how they differ. Although schema coverage is 100%, the enum labels are not self-explanatory, so the description is the only place that could disambiguate and it does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description says it "Access[es] Member Berries memories — conversation starters and recent activities," but "Member Berries" is unexplained jargon and "Access" is not a specific verb. It never tells the agent what distinguishes this from siblings like briefing, notes, or reminders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage hint is "Built-in starters work without a custom host prompt," which is a configuration note rather than guidance on when to call the tool. There is no mention of when to use this versus the sibling memory/briefing tools, and no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

notesB

Search, retrieve and create notes in Apple Notes (Member Berries). List/search return title + snippet by default; set includeBody=true or use get for full text.

NameRequiredDescriptionDefault
bodyNoContent of the note to create (required for create)
titleNoTitle of the note to create (required for create)
noteIdNoNote id (required for get)
operationYesOperation: 'search', 'list', 'get', or 'create'
folderNameNoFolder name: scope list/search, or target for create (default 'Member Berries')
searchTextNoText to search for (required for search)
includeBodyNoInclude full note body (default false — returns title + snippet only)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses the default return shape for list/search, but it does not mention that create is a mutation, whether it requires permissions or confirmation, or what side effects or output create has.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tight sentences with the main purpose front-loaded and no wasted text. The retrieval behavior caveat is stated efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description needs to explain returns; it does so for list/search and full-text retrieval. It omits the return behavior for create and does not cover mutation side effects, leaving meaningful gaps for a four-operation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all seven parameters, including operation enum values and required fields. The description reinforces the includeBody default and the get alternative, but it does not add meaningful syntax or format details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states specific verbs (search, retrieve, create) and the resource (notes in Apple Notes / Member Berries), so the core purpose is clear. It does not explicitly differentiate the tool from siblings such as briefing or reminders, but those siblings do not cover notes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives one useful usage rule: list/search return title and snippet by default, while includeBody=true or get retrieves full text. However, it does not explain when to choose search versus list versus create, so operation selection guidance is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remindersC

Search, create, complete, delete, and open reminders in Apple Reminders (Member Berries)

NameRequiredDescriptionDefault
nameNoName of the reminder to create (required for create)
notesNoAdditional notes for create (optional)
propsNoProperties to include (optional for listById)
listIdNoList ID for listById (required)
dueDateNoDue date ISO for create (optional)
listNameNoList name for create (optional)
operationYesOperation: 'list', 'search', 'open', 'create', 'listById', 'complete', or 'delete'
reminderIdNoReminder ID for complete/delete (required)
searchTextNoText to search (required for search and open)

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does not disclose that 'create', 'complete', and 'delete' are mutations, whether deletion is reversible, what permissions or Reminders.app state are required, or what 'open' actually does (UI launch vs. data read). None of this is recoverable from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler and no redundancy. Its brevity is appropriate in form, though it is brevity at the cost of substance given the seven-operation surface.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a seven-operation, nine-parameter dispatcher with no annotations and no output schema, the description is far too thin. It never explains the relationship between 'list' and 'listById', distinguishes 'search' from 'open', or warns that create/complete/delete modify user data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including per-parameter notes on which operation each field serves, so the baseline is 3. The description adds no parameter meaning beyond the schema, which is acceptable here since the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (Apple Reminders / Member Berries) and lists five verbs, so the general purpose is clear. But it is a multiplexed dispatcher with seven operations and omits 'list' and 'listById' entirely, leaving the agent with an incomplete map of what the tool can do.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus the sibling tools (briefing, calendar, notes, memberberries), and no guidance on how to choose among the seven operations. The operation enum in the schema is the only routing signal, and the description adds nothing about sequencing or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observedbriefing
    • First observedcalendar
    • First observedmemberberries
    • First observednotes
    • First observedreminders

TDQS

B3.1/5.0

Scored across 5 tools

Disambiguation4/5

Calendar, notes, and reminders map cleanly to distinct Apple apps, and briefing is a distinct one-shot aggregate. The only mild overlap is conversation starters/recent activity appearing in both briefing and memberberries, plus briefing surfacing note/calendar/reminder data without managing it; descriptions mostly resolve this.

Naming Consistency5/5

All tool names are lowercase single nouns (briefing, calendar, notes, reminders, memberberries), which is a consistent convention even though it is noun-based rather than verb_noun. There is no mixed casing or inconsistent verb style.

Tool Count5/5

Five tools is well within the 3-15 ideal range for a personal-assistant MCP. Each tool represents a distinct domain area, and multi-action capabilities are consolidated rather than split into many narrow tools.

Completeness3/5

Core create/search/open/complete operations exist, but calendar events and notes lack explicit update/delete operations, and reminders lacks update, leaving common lifecycle operations as dead ends. Briefing and memberberries are read-oriented, so coverage is functional but not complete.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides Claude with full access to Apple Calendar on macOS for event management, smart scheduling, and schedule analytics. It enables natural language event creation, conflict detection, and template-based scheduling through AppleScript integration.
    24 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    F
    maintenance
    Provides Claude Desktop with access to Apple Calendar and Reminders on macOS for managing schedules and tasks through natural language. It supports comprehensive operations like creating, editing, and searching events and reminders, along with a custom hashtag-based tagging system.
    3
    -
  • A
    license
    B
    quality
    C
    maintenance
    Enables Claude to interact with Apple apps on macOS including Mail, Calendar, Contacts, Reminders, Notes, and iCloud Drive for personal productivity tasks like triaging email, managing calendar, and cross-app context.
    76
    8
    MIT