com.local-mcp/local-mcp
REMOTE · LOCAL-MCP.COM · 2 COMPONENTS · SCANNED SEP 20
Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.
Available components
Recent critical change
Authorization (16 Sept 2026). See the changelog before you install this server.
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security97
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- The endpoint enforces authorisation, advertised via RFC 9728 protected-resource metadata. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability0
- Transport blocked by authentication: the endpoint requires auth we don't have to verify streamable-http. See how to fix → View diagnostics → Unverified
Schema Quality & AI Usability0
- Schema blocked by authentication: the endpoint requires auth we don't have to read it. See how to fix → Unverified
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
- Tool coverage blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Tool Safety0
- Tool safety blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Capabilities0
- Capabilities blocked by authentication: the endpoint requires auth we don't have to read them. See how to fix → Unverified
Unverified: 6 categories
Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm. Claim this server and supply a read-only token to verify it and lift the score.
How do I install the com.local-mcp/local-mcp server?
com.local-mcp/local-mcp is a hosted endpoint at https://local-mcp.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · local-mcp.com
claude mcp add --transport http com-local-mcp-local-mcp 'https://local-mcp.com/mcp'
{
"mcpServers": {
"com-local-mcp-local-mcp": {
"url": "https://local-mcp.com/mcp"
}
}
} {
"servers": {
"com-local-mcp-local-mcp": {
"type": "http",
"url": "https://local-mcp.com/mcp"
}
}
} [mcp_servers.com-local-mcp-local-mcp] url = "https://local-mcp.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-local-mcp-local-mcp": {
"type": "remote",
"url": "https://local-mcp.com/mcp",
"enabled": true
}
}
} openclaw mcp add com-local-mcp-local-mcp --url 'https://local-mcp.com/mcp' --transport streamable-http
mcp_servers:
com-local-mcp-local-mcp:
url: "https://local-mcp.com/mcp" {
"McpServers": {
"com-local-mcp-local-mcp": {
"Transport": "http",
"Url": "https://local-mcp.com/mcp"
}
}
} assistant mcp add com-local-mcp-local-mcp -t streamable-http -u 'https://local-mcp.com/mcp'
{
"mcpServers": {
"com-local-mcp-local-mcp": {
"type": "http",
"url": "https://local-mcp.com/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 17 Sept 26 −41
- Endpoint reachability: reachable → behind authorisation ▼ security
- Stability: fail → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Transport: pass → unverified ▼ security
- Authorization: fail → pass ▲ security
- First check of Authorization: partial security
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 75 → unverified ▼ functional
- Capabilities: pass → unverified ▼ functional
- 16 Sept 26 0
- Authorization: unverified → fail ▼ critical
- 15 Sept 26 0
- Authorization: fail → unverified ▼ security
- 13 Sept 26 0
- Authorization: unverified → fail ▼ critical
- 12 Sept 26 0
- Authorization: fail → unverified ▼ security
- Tool “run_diagnostics” rewrote its description, which is the text the model reads security
- Tool “configure_clients” rewrote its description, which is the text the model reads security
- New tool “lmcp_doctor” functional
- “configure_clients” reworded the description of “client” cosmetic
- “run_diagnostics” reworded the description of “focus” cosmetic
- 11 Sept 26 0
- Tool “finder_list” rewrote its description, which is the text the model reads security
- Tool “file_write” rewrote its description, which is the text the model reads security
- Tool “file_read” rewrote its description, which is the text the model reads security
- Tool “finder_search” rewrote its description, which is the text the model reads security
- 8 Sept 26 +29
- Authorization: unverified → fail ▼ critical
- Injection markers: unverified → pass ▲ security
- Tool “excel_write_cell” rewrote its description, which is the text the model reads security
- Tool “excel_create” rewrote its description, which is the text the model reads security
- Tool “reply_email” rewrote its description, which is the text the model reads security
- Schema quality: unverified → fail ▼ functional
- Schema quality: 223 → 127 ▲ functional
- Schema quality: 223 → 125 ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- Schema quality: good → excellent functional
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- “excel_read” added an optional parameter “force_download” cosmetic
- “pdf_read” added an optional parameter “force_download” cosmetic
- “ppt_read” added an optional parameter “force_download” cosmetic
- “reply_email” added an optional parameter “save_as_draft” cosmetic
- “word_read” added an optional parameter “force_download” cosmetic
- “reply_email” reworded the description of “confirm” cosmetic
- 7 Sept 26 −27
- Tool safety: pass → unverified ▼ security
- Authorization: fail → unverified ▼ security
- Schema quality: 125 → 223 ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: fail → unverified ▼ functional
- MCP protocol: fail → pass ▲ functional
- Schema quality: excellent → good functional
- Server version: e57f9d66-d10 → c2609ba9-0f4 functional
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Probed https://local-mcp.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=local-mcp.com | CN=YE1,O=Let's Encrypt,C=US | 16 Sept 2026 | 15 Dec 2026 | ECDSA 256 | ECDSA-SHA384 | 611e3e1599b7d3d83dea72ee1855d00484e |
| SANs: *.local-mcp.com, local-mcp.com | ||||||
| CN=YE1,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 5ddd70dd31f801c85c186a7a04b80afe |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of local-mcp.com. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| local-mcp.com. | present | 2371 | 13 | Verified |
| local-mcp.com. | Verified address RRset verified with the apex keys |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On connection |
| HTTP status | 401 |
WWW-Authenticate challenge Bearer realm="OAuth", resource_metadata="https://local-mcp.com/.well-known/oauth-protected-resource/mcp", error="invalid_token", error_description="Missing or invalid access token"
Bearer realm="OAuth", resource_metadata="https://local-mcp.com/.well-known/oauth-protected-resource/mcp", error="invalid_token", error_description="Missing or invalid access token" | Header | Value |
|---|---|
| strict-transport-security | max-age=15552000 |
| content-security-policy | default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' static.cloudflareinsights.com plausible.io https://*.clarity.ms https://www.googletagmanager.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https: blob:; font-src 'self' data:; connect-src 'self' https://www.local-mcp.com https://office-mcp-production.up.railway.app https://plausible.io https://static.cloudflareinsights.com https://cloudflareinsights.com https://api.npmjs.org https://*.clarity.ms https://*.google-analytics.com https://*.analytics.google.com https://www.googletagmanager.com https://cdn.growthbook.io; frame-ancestors 'none'; base-uri 'self'; form-action 'self' https://www.local-mcp.com https://chatgpt.com https://claude.ai |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=(), payment=() |
| www-authenticate | Bearer realm="OAuth", resource_metadata="https://local-mcp.com/.well-known/oauth-protected-resource/mcp", error="invalid_token", error_description="Missing or invalid access token" |
Protected resource metadata
| Document | https://local-mcp.com/.well-known/oauth-protected-resource/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://local-mcp.com/mcp |
| Authorisation server | https://www.local-mcp.com |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://local-mcp.com/mcp | Auth required | 401 | |
| http (plaintext) | http://local-mcp.com/mcp | HTTPS enforced | 301 | https://local-mcp.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
list_emails List Emails ~254
Use this when the user wants to see or triage their inbox on this Mac (Apple Mail — any account added to Mail.app: iCloud, Gmail, IMAP, Exchange). Lists email headers (subject, sender, date, unread); call read_email(message_id) for the full body. For a Microsoft 365 mailbox NOT added to Mail.app, use m365_list_emails. IMPORTANT: on machines with 2+ accounts, call with account=<name> (from list_email_accounts). Without it, and when the fast index can't answer, list_emails returns the account list instead of scanning all of them — scanning every account in one call has no time limit and can block Mail for other requests too (#2268). Exactly 1 account is unaffected. Supports pagination: use offset to page through results (e.g. offset=20 for page 2 with limit=20). The limit parameter is capped at 50 per call (default 20); to read more, page with offset rather than requesting a larger limit.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | – |
| limit | integer | – | – |
| mailbox | string | – | – |
| offset | integer | – | – |
| unread_only | boolean | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | – |
| messages | array | – | – |
| next_actions | array | – | – |
| offset | integer | – | – |
No examples provided.
list_m365_people_insights List Microsoft 365 People Insights ~65
List the people most relevant to you in Microsoft 365 — based on your communication patterns, collaboration history, and org chart. Useful for meeting prep and contact enrichment.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Number of people to return (default 20, max 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | – |
| people | array | – | – |
No examples provided.
list_message_chats List Message Chats ~61
Lists recent iMessage / Messages.app conversations (chat id, name, service). Start here for Messages — the chat id it returns is what read_messages / search_messages / send_message need.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max conversations (default 30) |
| Name | Type | Req | Description |
|---|---|---|---|
| chats | array | – | – |
| count | integer | – | – |
| note | string | – | – |
No examples provided.
list_missing_permissions List Missing Permissions ~116
Returns the macOS privacy (TCC) permissions Local MCP needs that are NOT granted yet, each with a one-click `open_url` that opens the exact System Settings → Privacy & Security pane. Read-only and passive (never prompts). Use it during setup or before a workflow to tell the user precisely which "Allow" clicks remain (Calendar, Contacts, Reminders, Mail Automation, Full Disk Access, Screen Recording, Accessibility) instead of failing mid-task. `all_granted: true` means nothing is left to do.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| all_granted | boolean | – | – |
| granted | array | – | – |
| missing | array | – | – |
| summary | string | – | – |
No examples provided.
list_notes List Notes ~410
Lists notes from Apple Notes app. Optionally filter by folder. Paginated: `limit` is capped at 500 per call, so page with `offset` (offset=500 returns notes 501-1000) instead of asking for a bigger limit. The response carries `total` (how many notes match in all) and `has_more` (whether anything is left past this page), so you never have to guess whether you got everything — page until `has_more` is false, which is exact even when `total_is_estimated` says the count is only a lower bound. To read a WHOLE library, pass order="id" — see the order parameter.
| Name | Type | Req | Description |
|---|---|---|---|
| folder | string | – | – |
| limit | integer | – | Notes per page (default 50, capped at 500). To get more, page with offset. |
| offset | integer | – | How many notes to skip (default 0). offset=500 with limit=500 returns notes 501-1000. An offset past the end returns an empty page with has_more=false, not an error. |
| order | string | – | order: "modified" (default) sorts newest-modified first — what you want to SHOW someone, but NOT safe for paging: modification date changes, so a note edited between two calls jumps to the front and… |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Notes in THIS page |
| has_more | boolean | – | True when notes remain past this page — call again with offset = offset + count |
| next_actions | array | – | – |
| notes | array | – | – |
| offset | integer | – | Where this page started |
| order | string | – | The ordering actually applied (modified | id) |
| total | integer | – | Notes matching in total, ignoring limit/offset. A LOWER BOUND, not the exact figure, when total_is_estimated is true |
| total_is_estimated | boolean | – | True when the exact count could not be taken (the unbounded COUNT failed, or the JXA fallback answered) — total is then only a lower bound. has_more stays exact either way: page until it is false, ne… |
No examples provided.
list_omnifocus_folders List OmniFocus Folders ~63
Lists folders in OmniFocus. Folders group related projects (e.g. "Work", "Personal"). Use list_omnifocus_projects to see the projects inside them.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max folders to return (default 100). |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | – |
| folders | array | – | – |
No examples provided.
list_omnifocus_projects List OmniFocus Projects ~94
Lists projects in OmniFocus. Start here for OmniFocus (alongside list_omnifocus_folders) — the project name it returns feeds list_omnifocus_tasks / create_omnifocus_task / search_omnifocus_tasks.
| Name | Type | Req | Description |
|---|---|---|---|
| include_completed | boolean | – | Include completed/dropped projects (default excludes them). |
| limit | integer | – | Max projects to return (default 100). |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | – |
| projects | array | – | – |
No examples provided.
list_omnifocus_tags List OmniFocus Tags ~20
Lists all tags defined in OmniFocus.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | – |
| tags | array | – | – |
No examples provided.
list_omnifocus_tasks List OmniFocus Tasks ~130
Lists tasks from OmniFocus. Filter by project, tag, inbox, due today, or flagged status.
| Name | Type | Req | Description |
|---|---|---|---|
| due_today | boolean | – | Only tasks due today or overdue. |
| flagged | boolean | – | Only flagged tasks. |
| inbox | boolean | – | Only unfiled inbox tasks. |
| include_completed | boolean | – | Include completed tasks (default excludes them). |
| limit | integer | – | Max tasks to return (default 50). |
| project | string | – | Only tasks in this project (name, case-insensitive). |
| tag | string | – | Only tasks carrying this tag. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | – |
| tasks | array | – | – |
No examples provided.
list_referral_candidates List Referral Candidates ~83
Returns the user's emailable contacts plus an invite template, for recommending LMCP to a colleague. A user would invoke this when they want to invite or recommend someone. Returns a list of candidate contacts and a message template; create_referral_invites then generates each chosen person's unique invite link.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max contacts to return (default 60) |
| Name | Type | Req | Description |
|---|---|---|---|
| candidates | array | – | – |
| count | integer | – | – |
| lang | string | – | – |
| notes | string | – | – |
| template_body | string | – | – |
| template_subject | string | – | – |
No examples provided.
list_reminders List Reminders ~115
Lists reminders from Apple Reminders (Reminders.app) on this Mac. Optionally filter by completion status or list name. For Microsoft To Do use todo_list_tasks instead.
| Name | Type | Req | Description |
|---|---|---|---|
| completed | boolean | – | false or omitted = incomplete (the default). true = completed. There is no 'both': ask twice if you need them. |
| limit | integer | – | Max number of reminders to return (earliest due first). Optional; defaults to all. |
| list_name | string | – | Filter by reminder list name (optional) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Number returned in this response. |
| reminders | array | – | – |
| total | integer | – | Total matching before the limit. |
No examples provided.
list_windows List Windows ~237
Lists on-screen windows of any app with window_id, owning app bundle id + name, title, bounds (global space, top-left, points), display_id (the CGDirectDisplayID — matches list_displays, so you can look up which display a window is on), and is_focused. Window TITLES require Screen Recording permission — without it this returns an explicit permission_required error rather than a title-less result. Optional app_bundle_id filter — note that Electron-style apps often own their windows from a HELPER process with a different bundle id, so a filter can come back empty while the app is plainly on screen. on_screen_only DEFAULTS TO TRUE and excludes minimized, hidden and other-Space windows; pass false to see them. When the result is empty this tool returns a `note` explaining which filter emptied it and what to pass instead — read it instead of concluding the app has no windows. window_id is stable within the session for later targeting.
| Name | Type | Req | Description |
|---|---|---|---|
| app_bundle_id | string | – | Only return windows owned by this app bundle id. |
| on_screen_only | boolean | – | Only on-screen windows (default true). |
No output schema declared.
No examples provided.
lmcp_doctor LMCP Doctor ~156
Checks everything LMCP depends on on this Mac — the AI apps connected to it, macOS permissions, each integration, and whether an LMCP update is waiting — and fixes what it safely can: it adds LMCP to installed AI apps that are missing it and repairs entries whose command no longer exists. Read-only PREVIEW unless confirm:true. Anything it can't fix (a permission, restarting an app, a config it can't edit safely, installing an update) comes back in `needs_you` with the exact step. Use it when LMCP "doesn't work" in some app.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Must be true to apply the fixes. Without it, returns what would be fixed and what needs the user. |
| Name | Type | Req | Description |
|---|---|---|---|
| failed | array | yes | – |
| fixed | array | yes | – |
| mode | string | yes | preview | applied |
| needs_you | array | yes | – |
| ok_count | integer | – | – |
| summary | string | yes | – |
| would_fix | array | yes | – |
No examples provided.
lmcp_install_upgrade LMCP Install Upgrade ~134
Checks for and installs a newer LMCP version — a self-upgrade of the LMCP app itself (not editing any of your data). Installing downloads the new version and RESTARTS LMCP (the AI client briefly reconnects), so it requires confirm=true. Pass check_only=true to only report whether a newer version is available, with no download or restart.
| Name | Type | Req | Description |
|---|---|---|---|
| check_only | boolean | – | If true, only report availability — no download, no install, no restart. |
| confirm | boolean | – | Must be true to actually install (which restarts LMCP). Without it, returns availability + a preview. |
Structured output declared, but exposes no named fields.
No examples provided.
lmcp_state LMCP State ~301
Returns a structured snapshot of the LMCP environment: server/tray/teams-proxy versions, detected AI client, cloud relay state, TCC permission states (Calendar/Reminders/Contacts), and a compact summary of which services (Mail/Calendar/Contacts/Teams/OneDrive/Reminders/Notes) are reachable. Fast (<500ms), passive — never prompts the user, never opens app windows, never touches the network. Call this when you need to verify the environment is healthy before attempting a tool, or to understand what's installed and accessible. If `services.scan_pending` is true, the background service scan hasn't finished yet (just after startup) and the per-service running/accounts values are placeholders — do NOT treat them as a real outage; just call the tool you need. Otherwise `services.scanned_seconds_ago` tells you how many seconds ago that scan ran (cadence ~60s): the per-service values are a snapshot, NOT a live probe. A `false`/`0`/`not available` for a service is advisory only — it can be stale (e.g. the user connected WhatsApp or opened Mail seconds ago) — so never use this tool as a preflight gate to skip or cancel a task; the actual tool call is the source of truth, just attempt it. For reporting failures, use `report_problem` instead — it captures this same snapshot plus logs and submits to the team.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_client | string | – | – |
| arch | string | – | – |
| build_sha | string | – | Git short SHA of the build (F-041). 'unknown' if unstamped. |
| built_at | string | – | UTC build timestamp (F-041). 'unknown' if unstamped. |
| cloud_data_enabled | boolean | – | – |
| cloud_token_set | boolean | – | – |
| last_activity | object | – | – |
| license_status | string | – | trial | active | expired |
| machine_id | string | – | – |
| os_version | string | – | – |
| services | object | – | Per-domain reachability summary (mail, calendar, contacts, teams, onedrive, slack, …); shape varies by domain. May include `scan_pending: true` right after startup, meaning the per-service running/ac… |
| skill_capture | object | – | Dark-launch counters for repeated-workflow detection (user-generated skills, PR-1). would_fire_signatures = how many times a save-this-workflow nudge WOULD have fired; ring_size = entries in the rece… |
| tcc | object | – | TCC permission states, e.g. granted | denied | authorized. |
| tray_version | string | – | – |
| tunnel_connected | boolean | – | – |
| update | object | – | – |
| version | string | – | Serving (running) server version. |
No examples provided.
lmcp_upgrade_diagnostics LMCP Upgrade Diagnostics ~104
Returns LMCP's self-upgrade health (the LMCP app upgrading itself, not editing your data): current version, the last N app-version upgrade attempts with any errors, whether the upgrade cache dir is writable, and any stale LMCP binaries at alternate paths. Call this when the app's auto-upgrade seems stuck, or to explain why a user is on an old version.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max recent attempts to return (default 10) |
| Name | Type | Req | Description |
|---|---|---|---|
| binaries_found | array | yes | LMCP binaries found at known alternate paths. |
| cache_dir | string | yes | – |
| cache_writable | boolean | yes | Whether the update cache dir is writable (#1 silent-failure cause). |
| consecutive_failures | integer | yes | – |
| current_version | string | yes | – |
| last_success_at | string | yes | ISO 8601 timestamp of last successful update, empty if none. |
| recent_attempts | array | yes | Recent update attempts, newest first. |
| recent_attempts_count | integer | yes | – |
| running_from | string | yes | Real path of the currently running binary. |
No examples provided.
m365_create_event Microsoft 365 Create Event ~186
Create a calendar event in your Microsoft 365 / Outlook calendar.
| Name | Type | Req | Description |
|---|---|---|---|
| attendees | string | – | Comma-separated email addresses to invite (optional) |
| body | string | – | Event description (optional) |
| calendar | string | – | Calendar name to create the event in — partial, case-insensitive match (optional). Omit to use the primary calendar. |
| end | string | yes | End time in ISO 8601, e.g. '2026-05-20T11:00:00' |
| location | string | – | Location (optional) |
| start | string | yes | Start time in ISO 8601, e.g. '2026-05-20T10:00:00' |
| subject | string | yes | Event title |
| timezone | string | – | IANA timezone, e.g. 'America/New_York' (default: UTC) |
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | – |
| message | string | – | – |
| ok | boolean | – | – |
No examples provided.
m365_delete_event Microsoft 365 Delete Event ~55
Delete a calendar event from your Microsoft 365 / Outlook calendar by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | yes | Set to true to confirm deletion (required) |
| id | string | yes | Event ID from m365_list_events |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | – | – |
| ok | boolean | – | – |
No examples provided.
m365_get_contact Microsoft 365 Get Contact ~56
Get full details of a specific Microsoft 365 contact by ID. Get the ID from m365_list_contacts or m365_search_contacts.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Contact ID from m365_list_contacts or m365_search_contacts |
| Name | Type | Req | Description |
|---|---|---|---|
| business_address | string | – | – |
| company | string | – | – |
| emails | array | – | – |
| given_name | string | – | – |
| home_address | string | – | – |
| id | string | – | – |
| mobile | string | – | – |
| name | string | – | – |
| notes | string | – | – |
| phones | array | – | – |
| surname | string | – | – |
| title | string | – | – |
No examples provided.
m365_list_contacts Microsoft 365 List Contacts ~41
List contacts from your Microsoft 365 / Outlook address book.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max contacts to return (default 50, max 100) |
| Name | Type | Req | Description |
|---|---|---|---|
| contacts | array | – | – |
| count | integer | – | – |
| query | string | – | – |
No examples provided.
m365_list_emails Microsoft 365 List Emails ~130
Use this when the user wants their Microsoft 365 / Outlook / Exchange inbox via the cloud — requires a connected M365 account (connect_m365_account). Returns subject, sender, date, and preview. For mail already in the Mac's Mail.app (including an Exchange account added there), use list_emails.
| Name | Type | Req | Description |
|---|---|---|---|
| folder | string | – | Folder name: inbox (default), sentitems, drafts, deleteditems |
| limit | integer | – | Number of emails to return (default 20, max 50) |
| unread_only | boolean | – | If true, return only unread emails |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | – |
| emails | array | – | – |
No examples provided.
m365_list_events Microsoft 365 List Events ~92
List upcoming calendar events from your Microsoft 365 / Outlook calendar.
| Name | Type | Req | Description |
|---|---|---|---|
| calendar | string | – | Calendar name to filter by — partial, case-insensitive match (optional). Omit to use the primary calendar. |
| days | integer | – | Number of days ahead to look (default 7, max 30) |
| limit | integer | – | Max events to return (default 20, max 50) |
| Name | Type | Req | Description |
|---|---|---|---|
| calendar | string | – | – |
| count | integer | – | – |
| days | integer | – | – |
| events | array | – | – |
No examples provided.
m365_read_email Microsoft 365 Read Email ~89
Use this when the user wants the full content of a Microsoft 365 email (message ID from m365_list_emails/m365_search_emails). Requires a connected M365 account. For a message found via list_emails/search_emails (Apple Mail), use read_email.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The email message ID from m365_list_emails or m365_search_emails |
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | – |
| cc | array | – | – |
| date | string | – | – |
| from | string | – | – |
| from_address | string | – | – |
| id | string | – | – |
| is_read | boolean | – | – |
| subject | string | – | – |
| to | array | – | – |
No examples provided.
m365_reply_email Microsoft 365 Reply Email ~139
Use this when the user wants to reply to a Microsoft 365 email (message ID from m365_list_emails). Requires a connected M365 account. Shows a preview first — set confirm=true to actually send. For replying to a message found in Apple Mail, use reply_email.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Set to true to actually send (default: shows preview only) |
| id | string | yes | Message ID to reply to (from m365_list_emails or m365_read_email) |
| message | string | yes | Your reply text |
| reply_all | boolean | – | If true, reply to all recipients (default: false) |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | – | – |
| ok | boolean | – | – |
No examples provided.
m365_search_contacts Microsoft 365 Search Contacts ~43
Search contacts in your Microsoft 365 address book by name, email, or company.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Search term — name, email, or company |
| Name | Type | Req | Description |
|---|---|---|---|
| contacts | array | – | – |
| count | integer | – | – |
| query | string | – | – |
No examples provided.
m365_search_emails Microsoft 365 Search Emails ~189
Use this when the user wants to find emails in their Microsoft 365 / Outlook mailbox via the cloud — requires a connected M365 account. By default searches sender, subject, AND body (Microsoft Graph's own $search default). Pass scope="metadata" to search only sender/subject (faster, no body scan), or scope="body" to search only the message body. For accounts added to the Mac's Mail.app, use search_emails.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max results (default 20, max 50) |
| query | string | yes | Search query, e.g. 'budget Q2', 'from:alice@contoso.com', 'subject:invoice' |
| scope | string | – | "all" (default — sender+subject+body, today's behavior), "metadata" (sender+subject only), or "body" (body only). |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | – |
| emails | array | – | – |
| query | string | – | – |
| search_backend | string | – | – |
| search_coverage | string | – | – |
| search_scope | string | – | – |
No examples provided.
m365_send_email Microsoft 365 Send Email ~137
Use this when the user wants to send from their Microsoft 365 / Outlook account via the cloud — requires a connected M365 account. Shows a preview first — set confirm=true to actually send. For sending from an account configured in the Mac's Mail.app, use send_email.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | Email body (plain text) |
| cc | string | – | CC recipients (optional, comma-separated) |
| confirm | boolean | – | Set to true to actually send (default: shows preview only) |
| subject | string | yes | Email subject |
| to | string | yes | Recipient email address. For multiple, separate with commas. |
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | – | – |
| ok | boolean | – | – |
No examples provided.
media_probe Media Probe ~68
Reports duration_ms, width, height, fps, whether it has audio, and file size for a video/audio file. Call it before editing to reason about the footage (compute trim ranges, pick a reframe crop). No permission required.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | Path to the media file. |
No output schema declared.
No examples provided.
move_email Move Email ~136
Moves an email to another mailbox (nested target folders are found by name). Pass account= (returned by list_emails/search_emails) so the message lookup targets one account instead of scanning all of them — without it, multi-account Macs are slow and can time out on bulk moves. If you know the folder the message is in, also pass mailbox= (the `mailbox` field from the listing) so the lookup searches it first.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | – |
| confirm | boolean | – | – |
| mailbox | string | – | – |
| message_id | string | yes | – |
| target_mailbox | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| message_id | string | – | – |
| moved | boolean | – | – |
| to | string | – | – |
| warning | string | – | – |
No examples provided.
nordvpn_diagnose NordVPN Diagnose ~38
Run a diagnostic check on NordVPN: installation, login state, connection status, kill switch, and supported protocols. Useful for troubleshooting.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | – |
| auto_connect | boolean | – | True if auto-connect / connect on demand is on |
| connected | boolean | – | True if the VPN is connected |
| installed | boolean | yes | True if NordVPN is installed |
| kill_switch | boolean | – | True if the kill switch is enabled |
| last_location | string | – | – |
| logged_in | boolean | – | True if a NordVPN account is logged in |
| protocols | array | – | Supported VPN protocols |
| report | string | – | Full formatted text report |
| running | boolean | – | True if the NordVPN app is running |
| subscription | string | – | – |
| version | string | – | – |
No examples provided.
nordvpn_servers NordVPN Servers ~137
Get recommended NordVPN servers by country or specialty. Uses NordVPN public API (no account needed). Returns server name, hostname, country, city, load %, and supported technologies.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | Country name or 2-letter code (e.g. 'US', 'United States', 'JP'). Omit for auto-recommendation. |
| limit | integer | – | Number of servers to return (1-10). Default: 5. |
| type | string | – | Server type filter: 'standard', 'p2p', 'double_vpn', 'onion', 'dedicated_ip'. Default: standard. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | – |
| note | string | – | – |
| servers | array | – | – |
No examples provided.
nordvpn_status NordVPN Status ~36
Check NordVPN connection status: connected/disconnected, auto-connect, snooze, and last known location. Does NOT open NordVPN.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| app_running | boolean | – | – |
| auto_connect | boolean | – | – |
| connected | boolean | – | – |
| installed | boolean | – | – |
| last_location | string | – | – |
| snoozed_until | string | – | – |
| version | string | – | – |
No examples provided.
notion_list_databases Notion List Databases ~36
Lists Notion databases cached on this Mac with their schema (column names and types). Use notion_read_database to get the rows.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | – |
| databases | array | – | – |
| note | string | – | – |
No examples provided.
notion_list_pages Notion List Pages ~81
Lists Notion pages cached on this Mac (titles, last edited, hierarchy), newest first. Reads the Notion desktop app's local cache — no Notion API, no integration token. Note: only pages visited in Notion (or marked Available offline) are cached.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max pages (default 50, max 500) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | – |
| note | string | – | – |
| pages | array | – | – |
No examples provided.
notion_list_workspaces Notion List Workspaces ~63
Lists the Notion workspaces cached on this Mac. Start here for Notion — its output feeds notion_list_databases / notion_list_pages / notion_search. Does not return workspace members: the names and emails of third parties are not part of listing workspaces.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | – |
| note | string | – | – |
| workspaces | array | – | – |
No examples provided.
notion_open_page Notion Open Page ~73
Opens a Notion page in the desktop app (deep link). Accepts a page id or title. Useful to let the user view or edit a page, or to pull an uncached page into the local cache.
| Name | Type | Req | Description |
|---|---|---|---|
| page | string | yes | Page id (UUID) or title (partial, case-insensitive) |
| Name | Type | Req | Description |
|---|---|---|---|
| opened | boolean | – | – |
| page_id | string | – | – |
| title | string | – | – |
No examples provided.
notion_read_database Notion Read Database ~82
Reads the cached rows of a Notion database with their properties mapped through the schema. Accepts the database id or name (partial match). Only locally-cached rows are returned.
| Name | Type | Req | Description |
|---|---|---|---|
| database | string | yes | Database id (UUID) or name (partial, case-insensitive) |
| limit | integer | – | Max rows (default 50, max 500) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | – |
| note | string | – | – |
| rows | array | – | – |
No examples provided.
notion_read_page Notion Read Page ~122
Reads a Notion page from the local cache and returns its content as markdown (headings, lists, to-dos, code, files, subpage links). Accepts a page id or a title (partial match). If parts of the page aren't cached yet, says so — open the page in Notion or mark it Available offline for full content.
| Name | Type | Req | Description |
|---|---|---|---|
| max_blocks | integer | – | Max blocks to render (default 300, max 1000) |
| page | string | yes | Page id (UUID) or title (partial, case-insensitive) |
| Name | Type | Req | Description |
|---|---|---|---|
| blocks_rendered | integer | – | – |
| content_markdown | string | – | – |
| id | string | – | – |
| last_edited | string | – | – |
| note | string | – | – |
| title | string | – | – |
| uncached_blocks | integer | – | – |
No examples provided.
notion_search Notion Search ~83
Searches cached Notion content (page titles and block text) for a phrase, case-insensitive. Returns matching blocks with the page they belong to. Only locally-cached content is searched — pages never opened in Notion won't match.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max results (default 20, max 100) |
| query | string | yes | Text to search for |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | – |
| note | string | – | – |
| query | string | – | – |
| results | array | – | – |
No examples provided.
onedrive_delete_file OneDrive Delete File ~47
Deletes a file or empty folder from OneDrive.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Must be true to delete |
| path | string | yes | Absolute path to the file or folder |
| Name | Type | Req | Description |
|---|---|---|---|
| deleted | boolean | yes | – |
| path | string | yes | – |
No examples provided.
onedrive_file_info OneDrive File Info ~58
Returns metadata for a file or folder: size, modification date, type, and extension. Faster than listing the parent directory when you only need info about one item.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | Absolute path to the file or folder |
| Name | Type | Req | Description |
|---|---|---|---|
| created | string | – | – |
| extension | string | – | – |
| modified | string | – | – |
| name | string | – | – |
| path | string | – | – |
| size | integer | – | – |
| size_human | string | – | – |
| type | string | – | file | directory |
No examples provided.
onedrive_list_files OneDrive List Files ~118
Lists files and folders in a OneDrive path. Use onedrive_root to find valid paths. Returns up to `limit` entries (default 1000, max 5000); large folders are truncated with a note — narrow the path for more specific results.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max entries to return (default 1000, max 5000). Folders with more entries are truncated; the response sets truncated=true and reports the total. |
| path | string | yes | Absolute path to the OneDrive folder |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | Entries returned in this response. |
| items | array | – | – |
| note | string | – | – |
| total | integer | – | Total entries in the folder. |
| truncated | boolean | – | True when total exceeds the limit. |
No examples provided.
onedrive_move_file OneDrive Move File ~53
Moves or renames a file/folder within OneDrive.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Must be true to move |
| destination | string | yes | Destination path |
| source | string | yes | Source path |
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | yes | – |
| moved | boolean | yes | – |
| to | string | yes | – |
No examples provided.
onedrive_read_file OneDrive Read File ~188
Reads a text file from your OneDrive synced folder. Supports .txt, .md, .csv, .json, .xml, .log and several code file types. Auto-detects UTF-8, falls back to Latin-1/Windows-1252 for legacy files (common in Latin American banking .TXT padrones). For files elsewhere on this Mac, use file_read.
| Name | Type | Req | Description |
|---|---|---|---|
| encoding | string | – | Force a specific encoding: 'auto' (default), 'utf8', 'latin1', 'cp1252', 'ascii', 'utf16' |
| max_bytes | integer | – | Maximum bytes to read (default 1048576 = 1 MB, capped at 10485760 = 10 MB) |
| offset | integer | – | Start reading at byte offset (default 0) |
| path | string | yes | Absolute path to the file |
| Name | Type | Req | Description |
|---|---|---|---|
| bytes | integer | yes | Total file size in bytes |
| bytes_read | integer | – | Number of bytes read in this slice |
| content | string | yes | Decoded file text content |
| encoding | string | – | Encoding used to decode (utf8 | cp1252 | latin1 | ascii | utf16) |
| offset | integer | – | Byte offset the read started at |
| path | string | yes | Absolute path of the file |
| truncated | boolean | – | True if more content remains beyond what was returned |
No examples provided.
onedrive_root OneDrive Root ~60
Lists all mounted OneDrive directories on this Mac. Start here for OneDrive — the mount paths it returns are what the other onedrive_* tools (onedrive_list_files, onedrive_read_file, onedrive_search_files) need.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| roots | array | – | – |
No examples provided.
onedrive_search_files OneDrive Search Files ~87
Searches for files by name in a OneDrive directory (recursive). Returns up to max_results matches (default 50); raise max_results or narrow the root for more.
| Name | Type | Req | Description |
|---|---|---|---|
| max_results | integer | – | Maximum results (default 50) |
| query | string | yes | Filename pattern to search for |
| root | string | – | Root OneDrive path to search in (optional) |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | – |
| query | string | – | – |
| results | array | – | – |
No examples provided.
onedrive_set_scope OneDrive Set Scope ~134
Restricts LMCP's OneDrive access to a specific folder. Once set, all OneDrive tools (read, write, list, search, delete, move) only work inside the allowed folder. Pass an empty folder to remove the restriction. Changes take effect immediately.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Must be true to apply |
| folder | string | – | Allowed folder path relative to the root (e.g. '/000-Claude Personal Agent'). Empty string removes the scope. |
| root_name | string | yes | OneDrive root name (from onedrive_root, e.g. 'OneDrive-WPPCloud') |
| Name | Type | Req | Description |
|---|---|---|---|
| access | string | – | – |
| allowed_folder | string | – | – |
| effect | string | – | – |
| root | string | – | – |
| scope_removed | boolean | – | – |
| scope_set | boolean | – | – |
No examples provided.
onedrive_write_file OneDrive Write File ~59
Writes text content to a file in OneDrive.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm | boolean | – | Must be true to write |
| content | string | yes | Text content to write |
| path | string | yes | Absolute path to the file in OneDrive |
| Name | Type | Req | Description |
|---|---|---|---|
| bytes | integer | yes | – |
| path | string | yes | – |
| written | boolean | yes | – |
No examples provided.
outlook_diagnose Outlook Diagnose ~48
Checks which email accounts are configured in Microsoft Outlook and compares them with Mail.app. If Outlook has accounts not in Mail.app, guides the user to add them so all email tools work seamlessly.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| installed | boolean | yes | True if Microsoft Outlook is installed |
| mail_app_accounts | array | – | – |
| missing_from_mail_app | array | – | Outlook account emails not present in Mail.app |
| note | string | – | Plain-language guidance |
| outlook_accounts | array | – | – |
| report | string | – | Full formatted text report |
No examples provided.
pdf_read PDF Read ~109
Reads and extracts text from a PDF document (.pdf file).
| Name | Type | Req | Description |
|---|---|---|---|
| force_download | boolean | – | If the file is stored in the cloud and evicted from this Mac (dataless), request the download and wait for it instead of failing. Off by default: a download can take minutes and use metered data, so… |
| max_pages | integer | – | Max pages to extract (default: all) |
| path | string | yes | Absolute path to the PDF file |
| Name | Type | Req | Description |
|---|---|---|---|
| chars | integer | yes | Number of characters in the extracted text |
| pages | integer | – | Total number of pages in the PDF |
| text | string | yes | Extracted text content |
No examples provided.
What is the com.local-mcp/local-mcp server?
com.local-mcp/local-mcp is listed in the public MCP registry as com.local-mcp/local-mcp. Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free. This page covers its hosted endpoint (https://local-mcp.com/mcp).
Is the com.local-mcp/local-mcp server safe to use?
com.local-mcp/local-mcp scores 39 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the com.local-mcp/local-mcp server expose?
com.local-mcp/local-mcp exposes 204 tools: setup_install, complete_omnifocus_task, complete_reminder, configure_clients, connect_m365_account, and 199 more. Their descriptions and schemas cost roughly 25,946 tokens of context every time the server is loaded.
Does the com.local-mcp/local-mcp server require authentication?
Yes. com.local-mcp/local-mcp asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the com.local-mcp/local-mcp server still maintained?
com.local-mcp/local-mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.