Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
제작자가 쓴 설명(영어 원문)
MCP server for macOS printing — wraps CUPS (lp/lpstat/lpoptions) for printer discovery and printing
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"printmcp": {
"command": "npx",
"args": [
"-y",
"@aernoud/printmcp"
]
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add printmcp -- npx -y @aernoud/printmcp프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"printmcp": {
"command": "npx",
"args": [
"-y",
"@aernoud/printmcp"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"printmcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@aernoud/printmcp"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검
레지스트리 이름이 GitHub 계정 aernouddekker 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.1.2)은 6개월 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, Agent Data Tools: Utilities
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
103 tools: JSON repair, CSV, hashes, cron, dates, units, validators. 25 free calls.
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
MCP servers for macOS native apps — gives Claude Code, Claude Desktop, and any MCP client native access to Mail, Numbers, Contacts, Calendar, Reminders, and FaceTime / phone calls.
No API keys, no OAuth, no cloud services. Talks directly to macOS apps via AppleScript and URL schemes (tel://, facetime://). Runs locally on your Mac.
CUPS printing (
printmcp) used to live here; it moved to office-mcp since it's a shell wrapper, not an AppleScript bridge.
mailappmcp) — 21 toolsWorks with every email account configured in Mail.app — iCloud, Gmail, Outlook, Fastmail, you name it.
| Tool | Description |
|---|---|
list-mailboxes | List all mailboxes across all accounts with unread counts |
list-accounts | List configured mail accounts with email addresses and type |
list-signatures | List available email signatures |
search-messages | Search messages by subject or sender (empty query lists all) |
read-message | Read the full content of a specific email |
get-message-source | Get raw RFC822 source of a message |
list-attachments | List attachments on a message with name, MIME type, size |
save-attachment | Save email attachments to disk |
compose-message | Create a draft in Mail.app (does not send) — supports plain or HTML body via htmlBody, plus attachments |
send-message | Send an email immediately (supports from, attachments, plain or HTML body via htmlBody) |
reply-to-message | Reply or reply-all to a message — threads correctly and supports a branded htmlBody or attachments |
forward-message | Forward a message to new recipients |
redirect-message | Redirect a message (preserves original sender) |
move-messages | Move messages between mailboxes |
delete-messages | Delete messages by Message-ID |
mark-as-read | Mark messages as read |
mark-as-junk | Mark/unmark messages as junk |
flag-message | Flag/unflag messages with color support |
set-message-color | Set background color of messages in the message list |
check-for-new-mail | Trigger a mail fetch for one or all accounts |
extract-email-address | Parse "John Doe \ " into name and address |
numbersmcp) — 29 toolsWorks with any open Numbers spreadsheet.
| Tool | Description |
|---|---|
list-spreadsheets | List all open Numbers documents |
create-document | Create a new Numbers document |
list-sheets | List sheets and tables in a document |
get-active-sheet | Get the currently active sheet |
read-range | Read cell values from a range (e.g. "A1:C10") |
read-table | Read an entire table as structured data |
write-cell | Write a value to a specific cell |
write-range | Write multiple values to a range |
clear-range | Clear contents and formatting of a cell range |
get-formula | Get the formula from a cell |
set-formula | Set a formula on a cell |
add-row | Append a row to a table |
delete-row | Delete a row from a table |
add-column | Add a column to a table |
delete-column | Delete a column from a table |
resize-row-column | Set row height or column width |
add-sheet | Add a new sheet to a document |
delete-sheet | Delete a sheet from a document |
rename-sheet | Rename a sheet |
add-table | Add a new table to a sheet |
delete-table | Delete a table from a sheet |
rename-table | Rename a table |
sort-table | Sort a table by a column |
transpose-table | Swap rows and columns of a table |
merge-cells | Merge a range of cells |
unmerge-cells | Unmerge previously merged cells |
set-cell-format | Set cell format (number, currency, date, percentage, etc.) |
set-cell-style | Set font, color, background, bold, italic, alignment |
export-document | Export to PDF, Excel, or CSV |
@aernoud/contactsmcp) — 15 toolsWorks with the system address book — all accounts synced to Contacts.app.
| Tool | Description |
|---|---|
search-contacts | Search contacts by name, email, or phone |
search-by-modification-date | Find contacts modified after a given date |
read-contact | Get full contact details |
get-my-card | Get the user's own contact card |
get-vcard | Export a contact as vCard 3.0 text |
create-contact | Create a new contact |
update-contact | Update contact fields |
delete-contact | Delete a contact |
list-groups | List all contact groups |
create-group | Create a new contact group |
rename-group | Rename a contact group |
delete-group | Delete a contact group |
add-to-group | Add a contact to a group |
remove-from-group | Remove a contact from a group |
list-group-members | List all contacts in a group |
calendarmcp) — 25 toolsWorks with every calendar configured in Calendar.app — iCloud, Google, Exchange, local, you name it.
| Tool | Description |
|---|---|
list-calendars | List all calendars with name, writable flag, description |
get-calendar | Get properties of a single calendar by name (incl. event count) |
create-calendar | Create a new calendar |
update-calendar | Rename a calendar or set its description |
delete-calendar | Not supported by Calendar.app — returns a descriptive error; calendars must be removed from the Calendar.app UI |
switch-view | Switch Calendar.app to day/week/month view, optionally jumping to a date |
reload-calendars | Force Calendar.app to refresh from accounts |
list-events | List events in a calendar between two ISO dates |
search-events | Search events by summary substring within a date window (defaults: −30d to +365d). Scope to a single calendar for speed |
get-event | Get full event details by uid |
create-event | Create an event with summary, start, end, optional location/description/url |
update-event | Patch any event field by uid |
delete-event | Delete an event by uid |
move-event | Move an event to another calendar (delete + recreate; new uid) |
duplicate-event | Duplicate an event into the same or another calendar |
today-events | List today's events in one calendar or across all |
upcoming-events | List events in the next N days |
list-attendees | List attendees on an event |
add-attendee | Add an attendee with email and optional display name |
remove-attendee | Remove an attendee by email |
list-alarms | List display, mail, and sound alarms on an event |
add-display-alarm | Add a display alarm N minutes before event start |
add-sound-alarm | Add a sound alarm N minutes before event start |
add-mail-alarm | Add a mail alarm N minutes before event start |
remove-alarm | Remove an alarm by 1-based index from list-alarms output |
@aernoud/remindersmcp) — 22 toolsWorks with every reminder list configured in Reminders.app — iCloud, Exchange, local, you name it.
| Tool | Description |
|---|---|
list-accounts | List all accounts in Reminders.app with name and id |
list-lists | List every reminder list, optionally scoped to one account |
get-list | Get properties of a single list (id, account, color, emblem, open + completed counts) |
create-list | Create a new list, optionally in a specific account |
update-list | Rename a list |
delete-list | Delete a list (Reminders.app supports this directly via AppleScript, unlike Calendar.app) |
show-list | Bring a list to the front in Reminders.app |
list-reminders | List reminders in a named list (excludes completed by default) |
search-reminders | Search reminders by name substring; scope to one list for speed |
get-reminder | Get full reminder details by id |
today-reminders | List reminders due today, scoped to one list or all |
upcoming-reminders | List reminders due in the next N days |
overdue-reminders | List reminders past their due date and not yet completed |
create-reminder | Create a reminder with body, due date or all-day due date, remind-me date, priority, flagged |
update-reminder | Patch any reminder field by id |
delete-reminder | Delete a reminder by id |
complete-reminder | Mark a reminder as completed (Reminders auto-stamps completion date) |
uncomplete-reminder | Mark a previously completed reminder as not completed |
move-reminder | Move a reminder to a different list (uses the native move verb — id is preserved) |
flag-reminder | Set or clear the flagged state |
set-priority | Set priority to none / high / medium / low (mapped to Reminders' 0/1/5/9 enum) |
show-reminder | Bring Reminders.app to the front and focus a specific reminder |
facetimemcp) — 3 toolsInitiates calls by handing URL schemes to open. Phone calls require an iPhone paired via Continuity (so macOS can route them through your phone).
| Tool | Description |
|---|---|
call-phone | Place a cellular call via paired iPhone (tel://) |
call-facetime-audio | Start a FaceTime audio call to a phone number or Apple ID email |
call-facetime-video | Start a FaceTime video call to a phone number or Apple ID email |
Phone numbers are normalized + validated as E.164 (+15551234567); spaces, dashes, and parens are tolerated. macOS may show a confirmation prompt before dialing — there is no fully silent dial path, by design.
npm install -g mailappmcp # Mail server
npm install -g numbersmcp # Numbers server npm install -g @aernoud/contactsmcp # Contacts server npm install -g @aernoud/calendarmcp # Calendar server npm install -g @aernoud/remindersmcp # Reminders server npm install -g @aernoud/facetimemcp # FaceTime / phone calls
git clone https://github.com/aernouddekker/macos-mcp.git
cd macos-mcp npm install npm run build
Add to ~/.claude/settings.json or your project's .mcp.json:
{
"mcpServers": { "mailappmcp": { "command": "npx", "args": ["-y", "mailappmcp"] }, "numbersmcp": { "command": "npx", "args": ["-y", "numbersmcp"] }, "contactsmcp": { "command": "npx", "args": ["-y", "@aernoud/contactsmcp"] }, "calendarmcp": { "command": "npx", "args": ["-y", "@aernoud/calendarmcp"] }, "remindersmcp": { "command": "npx", "args": ["-y", "@aernoud/remindersmcp"] }, "facetimemcp": { "command": "npx", "args": ["-y", "@aernoud/facetimemcp"] } } }
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": { "mailappmcp": { "command": "npx", "args": ["-y", "mailappmcp"] }, "numbersmcp": { "command": "npx", "args": ["-y", "numbersmcp"] }, "contactsmcp": { "command": "npx", "args": ["-y", "@aernoud/contactsmcp"] }, "calendarmcp": { "command": "npx", "args": ["-y", "@aernoud/calendarmcp"] }, "remindersmcp": { "command": "npx", "args": ["-y", "@aernoud/remindersmcp"] }, "facetimemcp": { "command": "npx", "args": ["-y", "@aernoud/facetimemcp"] } } }
Each server runs locally over stdio. The Mail, Numbers, and Contacts servers build AppleScript strings, execute them via osascript, and parse the structured output back into JSON. The Print server shells out to CUPS (lp, lpstat, lpoptions, cancel); the FaceTime server hands tel:// / facetime:// URLs to open. A shared package (@mailappmcp/shared) provides the AppleScript runner, the generic command runner (runCommand), string escaping, and delimiter-based parsing.
Mail, Calendar, Contacts, and Reminders nee
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요