iMessage MCP Server
iMessage MCP 服务器
⚠️ 免责声明 - 使用风险自负⚠️
该软件按原样提供,不提供任何担保或保证。
使用 AppleScript 发送 iMessage 和管理联系人的 MCP 服务器。
此服务器使用 AppleScript 通过模型上下文协议 (MCP) 与 macOS 的“信息”和“通讯录”应用交互。它将 AppleScript 命令封装在 TypeScript 服务器中,以便您执行以下操作:
查看和搜索您的联系人
向联系人或电话号码发送 iMessage
发送消息时获取确认
特征
资源
通过
contacts://all访问您的联系人查看联系方式,包括姓名、电话号码和电子邮件地址
所有数据都保留在您的本地机器上
工具
search_contacts- 通过姓名、电话或电子邮件查找联系人接受搜索查询并返回匹配的联系人
搜索姓名、电话号码和电子邮件地址
send_message- 发送 iMessage获取收件人(电话/电子邮件)和消息内容
通过本地信息应用发送
返回确认或错误详细信息
Related MCP server: imessage-rich-search
安装
安装依赖项:
npm install构建服务器:
npm run build配置 Claude Desktop 以使用服务器:
在 MacOS 上: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"imessage": {
"command": "node",
"args": ["/path/to/imessage-server/build/server.js"]
}
}
}重启Claude桌面
当系统提示时授予权限:
通讯录访问
消息访问
用法
安装完成后,您可以自然地与 Claude Desktop 对话:
“显示我的联系人”
“搜索名为 Marissa 的联系人”
“发送消息至 555-0123,说我 10 分钟后到”
“给 Alice 发一条 iMessage 询问我们是否还一起吃午饭”
安全说明
所有操作均在您的机器本地进行
没有联系人或消息数据发送到外部服务器
服务器需要 macOS 权限才能访问“通讯录”和“信息”
信息通过你的 iMessage 帐户发送
发展
对于开发和调试,请使用 MCP Inspector:
npx @modelcontextprotocol/inspector node build/server.js要求
macOS(用于消息和联系人集成)
Node.js 18 或更高版本
克劳德桌面
活跃的 iMessage 帐户
故障排除
如果邮件未发送:
检查“信息”应用是否已登录
验证是否授予权限
在 Claude Desktop 日志中查找错误:
tail -f ~/Library/Logs/Claude/mcp*.logAvailable Tools
2 toolssearch_contactsC
Search contacts by name, phone, or email
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query |
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 of behavioral disclosure. It mentions the search functionality but doesn't describe behavioral traits like whether it's read-only, how results are returned (e.g., pagination, format), error handling, or any limitations (e.g., rate limits, authentication needs). This leaves significant gaps for an agent to understand how to use it effectively.
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 a single, efficient sentence that directly states the tool's function without any wasted words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.
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 lack of annotations and output schema, the description is incomplete. It covers the basic purpose and parameters but fails to address behavioral aspects like result format, error conditions, or usage context. For a search tool with no structured behavioral data, more detail is needed to ensure the agent can invoke it correctly.
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 100% description coverage, with one parameter 'query' documented as 'Search query'. The description adds value by specifying what the query searches ('by name, phone, or email'), which provides context beyond the schema. However, it doesn't detail syntax, examples, or constraints, so it meets the baseline for high schema coverage.
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's purpose with a specific verb ('search') and resource ('contacts'), and specifies the searchable fields (name, phone, or email). However, it doesn't explicitly differentiate from the sibling tool 'send_imessage', which appears unrelated but context isn't provided for comparison.
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 provides no guidance on when to use this tool versus alternatives or in what context. It simply states what the tool does without mentioning any prerequisites, exclusions, or scenarios where it's preferred over other methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_imessageC
Send an iMessage using Messages app
| Name | Required | Description | Default |
|---|---|---|---|
| recipient | Yes | Phone number or email of the recipient | |
| message | Yes | Message content to send |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'Send an iMessage' implies a write/mutation operation, the description doesn't disclose important behavioral aspects: whether this requires specific permissions, if it's synchronous/asynchronous, error conditions, rate limits, or what happens if the recipient isn't in the user's contacts. It mentions 'using Messages app' which provides some implementation context, but lacks operational details.
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 extremely concise - a single sentence with zero wasted words. It's front-loaded with the core functionality and uses straightforward language. Every word earns its place, making it easy for an agent to parse quickly while understanding the essential purpose.
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?
For a mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what happens after sending (success/failure indicators, return values), doesn't mention authentication requirements, and provides no error handling context. While the purpose is clear, the operational context needed for reliable tool invocation is missing.
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 100% description coverage, with both parameters ('recipient' and 'message') clearly documented in the schema. The tool description adds no additional parameter information beyond what's in the schema. According to scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description.
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 action ('Send') and resource ('an iMessage using Messages app'), making the purpose immediately understandable. It doesn't differentiate from the sibling tool 'search_contacts', but that's reasonable since they perform completely different functions. The description is specific enough to understand what the tool does without being tautological.
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 provides no guidance about when to use this tool versus alternatives. There's no mention of prerequisites (like having the Messages app installed or configured), limitations (message length, supported recipients), or comparison with other messaging methods. The agent must infer usage context solely from the tool name and description.
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.
2 tool updates
- First observed
search_contacts - First observed
send_imessage
TDQS
Scored across 2 tools
The two tools have completely distinct purposes: one searches contacts and the other sends messages. There is no overlap in functionality, making it impossible to confuse them.
Both tools follow a consistent verb_noun pattern (search_contacts, send_imessage) with clear, descriptive names that align with their actions. No deviations or mixed conventions are present.
With only two tools, the server feels thin for an iMessage domain, lacking essential operations like reading messages, managing conversations, or handling attachments. The count is too low for comprehensive coverage.
The toolset is severely incomplete for an iMessage server. It misses core functionalities such as retrieving messages, listing conversations, replying to threads, or deleting messages, leaving significant gaps that will hinder agent workflows.
Maintenance
Related MCP Connectors
MCP connector for iMessage & Contacts via a local Mac agent + Vercel relay
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
Mac & Windows: let ChatGPT, Claude & Cursor use your email, calendar, iMessage, Teams, files.
Send and read iMessages from your own Mac and Apple ID — drafts, history and contacts.
1
Related MCP Servers
- AlicenseAqualityCmaintenanceA local MCP server that enables reading iMessage conversations and sending new messages through Claude Desktop. It provides secure, read-only access to your Mac's iMessage database and AppleScript-based message sending capabilities.6MIT
- 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-
- AlicenseAqualityDmaintenanceConnects Claude Desktop to iMessage on macOS, enabling reading conversations, searching messages, sending texts, and managing attachments.77 npmMIT