Beeper Texts MCP Server
Allows retrieving messages, chats, and contacts from Instagram via Beeper's local database, including search and media access.
Allows retrieving messages, chats, and contacts from Signal via Beeper's local database, including search and media access.
Allows retrieving messages, chats, and contacts from Telegram via Beeper's local database, including search and media access.
Allows retrieving messages, chats, and contacts from WhatsApp via Beeper's local database, including search and media access.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Beeper Texts MCP Serverlist my recent unread messages"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-textsOr use uvx for isolated execution:
uvx mcp-beeper-textsConfiguration
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-textsThe 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, orname(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 50before/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 chatlimit(optional): Default 25include_context(optional): Include surrounding messages (default: true)
search_chat_names
Search chats by name/title with label filtering.
query(required)label(optional): Defaultalllimit(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 filterchat_type(optional):dm,group, oralldays_back(optional): Only include messages from the last N daysinclude_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
Clone the repository
Install dependencies:
uv syncRun tests:
uv run pytestFormat code:
uv run ruff format .Lint code:
uv run ruff check . --fix
Testing
Run the test suite:
uv run pytest tests/ -vMCP Inspector
Use the MCP Inspector for development and testing:
uv run mcp dev src/mcp_beeper_texts/server.pyClaude 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 metadatalocal-{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:
Fork the repository
Create a feature branch (
git checkout -b feat/new-feature)Add functionality and tests if applicable
Run the test suite (
uv run pytest)Format and lint your code (
uv run ruff format . && uv run ruff check . --fix)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 toolsget_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"}
| Name | Required | Description | Default |
|---|---|---|---|
| attachment_uri | Yes | ||
| optimize_for_context | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No | ||
| chat_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| platform | No | ||
| chat_type | No | ||
| days_back | No | ||
| person_name | Yes | ||
| include_context | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | inbox | |
| limit | No | ||
| sort_by | No | latest_message | |
| max_participants | No | ||
| include_low_priority | No | ||
| recent_messages_limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | all | |
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| chat_id | No | ||
| include_context | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v0.0.2- First observed
get_media_attachment - First observed
get_messages - First observed
get_person_messages - First observed
list_chats - First observed
search_chat_names - First observed
search_message_contents
TDQS
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.
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.
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.
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
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
MCP connector for iMessage & Contacts via a local Mac agent + Vercel relay
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables full-text search of macOS iMessages including link preview metadata. Works as an MCP server for Claude Desktop to search your messages locally.1MIT
- FlicenseAqualityDmaintenanceA read-only MCP server that exposes your iMessage data to Claude Code and Claude Desktop, with automatic contact name resolution.3-
- AlicenseNot gradedqualityDmaintenanceRead-only MCP server for your iMessage DB. No hosted service.MIT
- AlicenseNot gradedqualityDmaintenanceRead-only MCP server for local macOS Messages database, enabling querying of chats, messages, attachments, and metadata.975MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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