Mac-resident MCP server: securely proxies Mail / Calendar / Drive / Contacts to AI agents over stdio or Tailnet HTTP, with ACLs, secret redaction, prompt-injection tagging, and an audit log.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"deckard": {
"command": "<see-readme>",
"args": []
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Mac-resident MCP server: securely proxies Mail / Calendar / Drive / Contacts to AI agents over stdio or Tailnet HTTP, with ACLs, secret redaction, prompt-injection tagging, and an audit log.
No automated test available for this server. Check the GitHub README for setup instructions.
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
No package registry to scan.
This server is missing a description. Tools and install config are also missing.If you've used it, help the community.
Add informationBe the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in ai-ml / communication
Persistent memory using a knowledge graph
An MCP server that securely interfaces with your iMessage database via the Model Context Protocol (MCP), allowing LLMs to query and analyze iMessage conversations. It includes robust phone number validation, attachment processing, contact management, group chat handling, and full support for sending and receiving messages.
Privacy-first. MCP is the protocol for tool access. We're the virtualization layer for context.
An open-source AI agent that brings the power of Gemini directly into your terminal.
MCP Security Weekly
Get CVE alerts and security updates for Deckard and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
A Mac-resident MCP server that proxies Apple-native services — Mail, Calendar, iCloud Drive, Voice Memos, Reminders — to AI agents over stdio or HTTP. One trust boundary, one audit log, one place to enforce safety.
The bridge is built around a simple premise: an LLM agent talking to your iCloud should look more like a service account with scoped permissions than a fully-trusted user. Every call passes through the same policy pipeline (auth → ACL → redaction → injection-tagging → approval-gate → audit), and every layer is configurable per token.
Status: v1.0.0-beta.3 (public beta). 43 tools across 6 services, codesigned + notarized Developer ID build, 111 unit tests (incl. a schema validator that walks every registered tool), daemon + menubar UI with first-launch onboarding, auto-update via Sparkle (UI) and deckard self-update (CLI), CI on every push. Designed for personal homelab use; security model documented in docs/security-model.md. Known beta issues + roadmap in CHANGELOG.md.
Most "AppleScript MCP" projects expose Mail or Calendar as a thin RPC: tools fire, results come back as flat strings, the agent reads whatever the user reads. That's fine for trusted prompts and demo screenshots; it's wrong for any system where the agent might be compromised, the email content might be hostile, or the action chain might run unattended.
Deckard sits between the agent and macOS and adds:
mail.list_messages + mail.mark_read + nothing else. A "trusted" agent gets the full surface but mail.send still routes through an approval dialog. A "readonly" experiment can't write anything anywhere.[REDACTED:<rule>]. Cloud creds (AWS / GCP / Azure / DO), API keys (OpenAI / Anthropic / Stripe / Google / Twilio / npm), GitHub PATs, Slack/JWT tokens, RSA private blocks, SSN-like patterns — and one-time tokens: 2FA / OTP / verification / sign-in codes, magic-link URL params, inline password: / passwd= values, PIN: 1234. The OTP rule requires the matched value to contain at least one digit, so common words like "expired" or "invalid" don't trip it. New rules drop in via config.<untrusted>…</untrusted> so the agent treats it as data, not instructions. When known injection patterns ("ignore previous instructions", role-impersonation prefixes, etc.) are detected, the wrapper escalates to a strong warning banner.mail.send, drive.write, calendar.delete_event, reminders.delete_reminder — set their ACL to approve and every call pops a macOS dialog showing what's about to happen (recipients, body preview, file path, event title) before it executes. Per-token interactive_approval = "never" lets trusted remote tokens skip the dialog (audit logs as approved_by_policy for forensics).caller: "bearer:triage" instead of bearer:default.[tailscale] enabled = true the daemon also binds the tailnet IPv4. Peer ACLs are delegated to tailscaled — set them in the Tailscale admin console, not here. tailscale whois runs per request so audit rows for tailnet calls record transport=tailnet caller=ts:laptop:user@github. Bearer auth still applies on top.mail.move_message, mail.mark_read, mail.mark_unread accept a single id OR an ids: [string] array (up to 500). The batch path is one osascript invocation regardless of N — one Mail.app activation, one au