Skip to main content
Glama
tetmin

Beeper Texts MCP Server

by tetmin

Beeper Texts MCP Server

A local-only MCP (Model Context Protocol) server tested on macOS that exposes Beeper Texts data (messages, contacts, chats) for use with AI assistants and automation tools. Local-only means the MCP accesses your local Beeper SQLite database only, and does not make or trigger any network requests.

Features

  • Chat Management: List and browse conversations across platforms

  • Message Access: Retrieve messages from specific chats

  • Search: Search messages by content, chat name, or by sender

  • Media Access: Fetch attachment bytes/paths via a URI returned in messages

  • Multi-Platform Support: Tested with WhatsApp, Telegram, Signal, Instagram, Twitter/X and LinkedIn. Should work with any Beeper-supported platform.

Related MCP server: imessage-mcp

Requirements

  • macOS only: This server relies on Beeper Desktop's local database structure only

  • Beeper Desktop: Must be installed, configured with at least one connected account and running to receive new messages

  • Python 3.10+: Required for running the server

Installation

Install from PyPI using pip or uvx:

pip install mcp-beeper-texts

Or use uvx for isolated execution:

uvx mcp-beeper-texts

Configuration

Claude Desktop

Add the following to your Claude Desktop configuration file (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "beeper": {
      "command": "uvx",
      "args": ["mcp-beeper-texts"]
    }
  }
}

Other MCP Clients

For other MCP clients, use the command:

uvx mcp-beeper-texts

The server communicates over stdio transport.

TODO

Add support for:

  • Creating, Editing, and Deleting drafts

  • Sending messages

  • Sending media attachments

Available Tools

list_chats

List group and DM chats with metadata.

  • label (optional): Filter set: inbox, archive, favourite, all, unread (default: inbox)

  • sort_by (optional): latest_message, last_active, or name (default: latest_message)

  • limit (optional): Max chats to return (default: 25)

  • recent_messages_limit (optional): Include last N messages per chat (default: 3, set 0 to disable)

  • max_participants (optional): Max participant names for groups (default: 5)

  • include_low_priority (optional): Include low priority in non-inbox views (default: false)

get_messages

Get chronologically ordered messages from a specific chat.

  • chat_id (required)

  • limit (optional): Default 50

  • before/after (optional): ISO-8601 timestamps to page

search_message_contents

Search message contents across chats with optional context.

  • query (required)

  • chat_id (optional): Limit to one chat

  • limit (optional): Default 25

  • include_context (optional): Include surrounding messages (default: true)

search_chat_names

Search chats by name/title with label filtering.

  • query (required)

  • label (optional): Default all

  • limit (optional): Default 25

get_person_messages

Get messages sent by a specific person across chats.

  • person_name (required)

  • limit (optional): Max per chat (default: 50)

  • platform (optional): Platform filter

  • chat_type (optional): dm, group, or all

  • days_back (optional): Only include messages from the last N days

  • include_context (optional): Include surrounding messages

get_media_attachment

Retrieve media attachment bytes/path by URI returned in Message.attachments.

  • attachment_uri (required): e.g., beeper://attachment/{message_id}/{attachment_index}

  • optimize_for_context (optional): For images, resize to ≤1568px for efficiency (default: true)

Development

Setup

  1. Clone the repository

  2. Install dependencies: uv sync

  3. Run tests: uv run pytest

  4. Format code: uv run ruff format .

  5. Lint code: uv run ruff check . --fix

Testing

Run the test suite:

uv run pytest tests/ -v

MCP Inspector

Use the MCP Inspector for development and testing:

uv run mcp dev src/mcp_beeper_texts/server.py

Claude Desktop

For Claude Desktop testing (or other local MCP clients), use this configuration in ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "Beeper": {
      "command": "/opt/homebrew/bin/uv",
      "args": [
        "run",
        "--dev",
        "--project",
        "/path/to/your/mcp-beeper-texts",
        "mcp-beeper-texts"
      ]
    }
  }
}

Replace /path/to/your/mcp-beeper-texts with the actual path to your local repository.

Hot-Reload Development

For faster development with automatic reloading when files change, you can use MCP Reloader:

# Install MCP Reloader (one-time setup)
git clone https://github.com/mizchi/mcp-reloader.git
cd mcp-reloader
npm install
npm run build

# Run with hot-reload (from your project directory)
npx mcp-reloader --command "uv run src/mcp_beeper_texts/server.py"

This automatically restarts the server when you modify any Python files, providing a faster development workflow.

Database Access

The server reads from Beeper's local SQLite databases located at:

~/Library/Application Support/BeeperTexts/

  • index.db: Beeper UI-optimized message and chat index and metadata

  • local-{platform}/megabridge.db: Platform-specific data and contacts

The server only requires read access for most operations, with write access eventually needed for draft management and message sending.

Troubleshooting

"Beeper directory not found"

Ensure Beeper Desktop is installed and has been run at least once. The application creates its data directory on first launch.

"Database not found"

Make sure Beeper Desktop is properly configured with at least one connected account. The databases are created when platforms are connected.

Permission errors

Ensure the server has read access to ~/Library/Application Support/BeeperTexts/. This should be automatic on macOS.

License

MIT License - see LICENSE file for details.

Contributing

Contributions are welcome. Please follow these steps:

  1. Fork the repository

  2. Create a feature branch (git checkout -b feat/new-feature)

  3. Add functionality and tests if applicable

  4. Run the test suite (uv run pytest)

  5. Format and lint your code (uv run ruff format . && uv run ruff check . --fix)

  6. Commit, Push, and create a Pull Request

Changelog

0.0.1

  • Initial release

  • Basic chat, message, and contact management

  • Search functionality across all platforms

  • Basic test suite

Available Tools

6 tools
get_media_attachmentA

Retrieve media attachment content by URI from message attachments.

Args:
    attachment_uri: URI from Message.attachments (e.g., "beeper://attachment/{message_id}/{attachment_index}")
    optimize_for_context: For images, resize to ≤1568px max dimension for cost efficiency (default True)

Returns:
    For images: {"type": "image", "mime_type": "image/jpeg", "base64": "..."}
    For audio: {"type": "audio", "mime_type": "audio/mpeg", "base64": "..."}
    For files/videos: {"type": "file"|"video", "mime_type": "...", "filepath": "/path/to/file"}
    For errors: {"error": "description", "uri": "original_uri"}
ParametersJSON Schema
NameRequiredDescriptionDefault
attachment_uriYes
optimize_for_contextNo

TDQS

A4.4/5.0
Behavior4/5

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

No annotations; description fully covers behavioral traits: resize behavior for images, return types for different media, and error format. Does not mention auth or permissions, but return type details are thorough.

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?

Well-structured with Args and Returns sections. Slightly lengthy but each sentence provides necessary detail. Could be tightened slightly but remains clear.

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

Completeness5/5

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

No output schema; description provides exact return formats for all media types and handles errors. No annotations; description covers behavioral and parameter details completely for a 2-param tool.

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

Parameters4/5

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

Schema has 0% description coverage; description adds meaning with URI format example and purpose of optimize_for_context. Fully compensates for missing schema descriptions.

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

Purpose5/5

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

The description clearly states the tool retrieves media attachment content by URI from Message.attachments, with a specific URI format. This differentiates it from sibling tools like search_message_contents or get_messages.

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

Usage Guidelines4/5

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

Provides clear context for using attachment_uri from Message.attachments and explains the optimize_for_context parameter. Lacks explicit guidance on when not to use it relative to siblings, but the purpose is distinct enough.

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

get_messagesA

Get chronologically orderedmessages from a specific chat with metadata and optional filtering.

Args:
    chat_id: ID of the chat/conversation
    limit: Maximum number of messages to return (default 50)
    before: Optional ISO-8601 timestamp to get messages before this date
    after: Optional ISO-8601 timestamp to get messages after this date

Returns:
    List of Message objects with metadata including platform, sender names, timestamps, reactions etc.
ParametersJSON Schema
NameRequiredDescriptionDefault
afterNo
limitNo
beforeNo
chat_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/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 discloses that messages are chronologically ordered, include metadata, and support filtering. However, it does not mention authentication requirements, rate limits, or any side effects. The description adds context but lacks depth for a read operation.

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 description is well-structured with a summary line followed by Args and Returns sections. It is concise but not overly brief; every sentence adds value. A minor improvement could be removing the blank line after the summary, but overall it's effective.

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?

Given the presence of an output schema (context signals indicate true), the description need not detail returns, but it still summarizes the return type (list of Message objects with metadata). All parameters are documented. The tool has moderate complexity with 4 params, and the description covers filtering, ordering, and return structure adequately.

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

Parameters5/5

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

Schema description coverage is 0%, meaning the schema defines no descriptions. The description fully compensates by explaining each parameter: chat_id, limit, before, after, including defaults and expected formats (ISO-8601 timestamps). This adds significant meaning beyond the schema's bare types.

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

Purpose5/5

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

The description clearly states it retrieves chronologically ordered messages from a specific chat with metadata and filtering. The verb 'get' and resource 'messages from a specific chat' are precise. It distinguishes from siblings like search_message_contents and list_chats by focusing on a specific chat's message history.

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?

The description implies usage for fetching messages from a chat with optional filters, but it does not explicitly state when to use this tool versus alternatives like search_message_contents or get_person_messages. No exclusions or when-not scenarios are provided.

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

get_person_messagesA

Get all messages sent by a specific person across all chats.

Args:
    person_name: Name of the person to search for
    limit: Maximum number of messages per chat (default 50)
    platform: Filter by platform ("WhatsApp", "Telegram", etc.)
    chat_type: Filter by chat type ("dm", "group", or "all")
    days_back: Only include messages from the last N days
    include_context: Include surrounding messages for context

Returns:
    List of ChatSearchResult objects, each containing a chat and the person's messages in that chat
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
platformNo
chat_typeNo
days_backNo
person_nameYes
include_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.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 bears full responsibility for disclosing behavioral traits. It does not state whether the tool is read-only, if it accesses external APIs, or if there are rate limits or pagination. The description only lists parameters and return type, omitting critical behavioral context.

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 description is reasonably concise, using a clear docstring format with Args and Returns sections. It does not contain extraneous information, though the parameter explanations could be slightly more terse without losing clarity.

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?

Given the tool has 6 parameters and an output schema, the description covers the necessary input semantics and return type. However, it lacks context about expected behavior (e.g., whether results are sorted, if empty results are possible) and does not address edge cases or limitations.

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

Parameters5/5

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

The input schema has 0% description coverage, meaning no parameter descriptions within the JSON schema. However, the description includes a full docstring explaining each parameter's purpose, type, and default values. This fully compensates for the schema's lack of descriptions, adding significant semantic value.

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

Purpose5/5

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

The description clearly states the tool retrieves messages sent by a specific person across all chats, using a specific verb and resource. This differentiates it from sibling tools like search_message_contents (which searches message content) and get_messages (which retrieves messages by other criteria).

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 does not provide any guidance on when to use this tool versus alternatives. It does not mention when not to use it, nor does it reference sibling tools. The agent receives no contextual direction for tool selection.

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

list_chatsA

List group and DM chats with metadata, filtering and sorting options.

Args:
    label: chat label/folder - "inbox", "archive", "all","favourite", "unread" (default "inbox")
    sort_by: Sort order - "latest_message", "last_active" or "name" (default "latest_message")
    limit: Maximum number of chats to return (default 25)
    recent_messages_limit: Number of recent messages to include per chat (default 3, set to 0 to disable)
    max_participants: Maximum number of participant names to list for group chats (default 5)
    include_low_priority: Whether to include low priority chats in archive/all views (default False)

Returns:
    List of Chat objects with metadata including platform, truncated recent
    messages for context, participants, timestamps etc.
ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoinbox
limitNo
sort_byNolatest_message
max_participantsNo
include_low_priorityNo
recent_messages_limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It explains the return format (Chat objects with metadata, truncated messages, participants) and discloses no destructive actions, which is appropriate for a read/list tool. It could mention rate limits or authentication, but given the tool's simplicity, transparency is good.

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 description is well-structured with a clear summary followed by parameter details. It is slightly verbose but each sentence adds value. The front-loaded purpose is effective.

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

Completeness5/5

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

Given the output schema exists, the description still provides a clear explanation of return values. All 6 parameters are documented, and the tool's behavior is fully described. The description is complete for this tool's complexity.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully compensates by explaining each parameter's meaning, possible values (including enum options for label), and defaults. This adds significant value beyond the schema.

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

Purpose5/5

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

The description clearly states the tool lists group and DM chats with metadata, filtering, and sorting. It distinguishes from siblings like search_message_contents and get_messages by focusing on chat listing rather than message search.

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

Usage Guidelines4/5

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

The description lists filtering and sorting options but does not explicitly state when to use this tool versus alternatives. However, the sibling tool names imply different scopes (e.g., search_message_contents), providing implicit guidance.

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

search_chat_namesA

Search for chats by name/title with filtering by label.

Args:
    query: Chat name or partial name to search for
    label: Filter results by chat type: 'inbox', 'archive', 'favourite', 'all' (default 'all')
    limit: Maximum number of results to return (default 25)

Returns:
    List of Chat objects matching the search criteria
ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoall
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/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 full burden. It explains that the tool returns a list of Chat objects and describes parameters, but lacks details on search behavior (e.g., fuzzy matching, case sensitivity), error handling, or rate limits. Some behavioral information is present but not comprehensive.

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 description is structured with Args and Returns sections, making it easy to scan. It is concise without extraneous words, but could be slightly more front-loaded with the core action. Overall efficient.

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?

Given the tool has 3 parameters, no annotations, and an output schema exists, the description covers the main purpose and parameters but lacks behavioral details like search semantics, edge cases, or guidance on when to use this versus list_chats or search_message_contents. It is adequate but not complete.

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

Parameters4/5

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

The description adds meaning beyond the input schema for all three parameters, clarifying that query is a partial name match, label filters by chat type with enumerated options, and limit caps results. Since schema coverage is 0%, this provides essential context.

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

Purpose5/5

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

The description clearly states the tool searches for chats by name/title with label filtering, using a specific verb and resource. It distinguishes from sibling tools like search_message_contents (searches messages) and list_chats (lists all chats).

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?

The description does not explicitly state when to use this tool over alternatives or provide when-not-to-use guidance. The context is implied by the tool name and sibling names, but no explicit exclusions or comparisons are given.

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

search_message_contentsA

Search message contents across all chats with optional context and filtering.

Args:
    query: Text to search for across message contents
    chat_id: Optional chat ID to limit search to specific chat
    limit: Maximum number of results to return (default 25)
    include_context: Whether to include messages before and after matches (default True)

Returns:
    List of ChatSearchResult objects with message, chat info, and context
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
chat_idNo
include_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/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 describes the return structure and the include_context parameter but does not explicitly state that this is a read-only operation or discuss any behavioral traits like rate limits, authentication, or idempotency. The search semantics are implied as safe.

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 concise and well-structured, using a clear docstring format with Args and Returns sections. Every sentence adds value with no redundancy. The key information (verb, resource, parameters, return) is front-loaded.

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

Completeness5/5

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

Given the tool's moderate complexity (4 parameters, 1 required, simple types) and the presence of an output schema defining return objects, the description is complete. It explains all parameters, the return value, and the scope of the search. No gaps are apparent.

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

Parameters4/5

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

The schema description coverage is 0%, meaning the parameters lack descriptions in the schema. The description compensates by explaining each parameter (query, chat_id, limit, include_context) with their purpose and default values, adding significant meaning beyond the schema's type and default fields.

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

Purpose5/5

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

The description clearly states the verb 'Search' and the resource 'message contents across all chats', distinguishing it from siblings like search_chat_names (searches chat names) and get_messages (retrieves messages without search). The scope and filtering are explicitly mentioned.

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?

The description implies usage for searching message content with optional filtering, but does not explicitly state when to use this tool versus alternatives like search_chat_names. No exclusivity or when-not conditions are provided, so guidance is implied rather than explicit.

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. Dates show when Glama detected each change.

  1. 6 tool updatesv0.0.2
    • First observedget_media_attachment
    • First observedget_messages
    • First observedget_person_messages
    • First observedlist_chats
    • First observedsearch_chat_names
    • First observedsearch_message_contents

TDQS

A3.9/5.0
Disambiguation4/5

Tools are mostly distinct with clear purposes. Some overlap exists between search_message_contents and get_person_messages (both return messages), but their descriptions clarify different use cases (text query vs person name). Similarly, list_chats and search_chat_names have overlapping functionality but are distinguished by filtering vs name search.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., search_message_contents, list_chats, get_messages). The verbs are appropriately varied (search, list, get) and predictably used across the set.

Tool Count5/5

Six tools is well-scoped for a messaging server. Each tool fulfills a clear role: searching messages, listing chats, retrieving messages, searching chats, getting person messages, and fetching media attachments. No tool feels redundant or missing.

Completeness2/5

The tool set is entirely read-only, lacking any write operations like sending messages, creating chats, or muting conversations. This is a significant gap for a messaging server, as agents cannot perform basic actions beyond retrieval.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables full-text search of macOS iMessages including link preview metadata. Works as an MCP server for Claude Desktop to search your messages locally.
    1
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    A read-only MCP server that exposes your iMessage data to Claude Code and Claude Desktop, with automatic contact name resolution.
    3
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Read-only MCP server for local macOS Messages database, enabling querying of chats, messages, attachments, and metadata.
    975
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tetmin/mcp-beeper-texts'

If you have feedback or need assistance with the MCP directory API, please join our Discord server