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
설치
종속성 설치:
지엑스피1
서버를 빌드하세요:
npm run buildClaude Desktop을 구성하여 서버를 사용합니다.
MacOS의 경우: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"imessage": {
"command": "node",
"args": ["/path/to/imessage-server/build/server.js"]
}
}
}Claude Desktop을 다시 시작하세요
메시지가 표시되면 권한을 부여하세요.
연락처 접근
메시지 접근
용법
설치가 완료되면 Claude Desktop과 자연스럽게 대화할 수 있습니다.
"내 연락처 보여줘"
"Marissa라는 이름의 연락처 검색"
"555-0123으로 메시지를 보내서 10분 후에 도착한다고 전해주세요."
앨리스에게 점심 먹을 시간인지 물어보는 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