Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

LMCP

REMOTE · LOCAL-MCP.COM · 2 COMPONENTS

Mac & Windows: let ChatGPT, Claude & Cursor use your email, calendar, iMessage, Teams, files.

0 this week 39 Trust /100

Last scanned (1 hour ago)

Scores higher than 35% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Communication

Recent critical change

Authorization (16 Sept 2026). See the changelog before you install this server.

Trust breakdown (7 categories)

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
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.

Changelog

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.

  • 30 Sept 26 0
    • Authorization: pass → fail ▼ security
  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 17 Sept 26 0
    • Endpoint reachability: reachable → behind authorisation ▼ security
    • Transport: pass → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Stability: fail → unverified ▼ security
    • Authorization: fail → pass ▲ security
    • First check of Authorization: partial security
    • Schema quality: 75 → unverified ▼ functional
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → 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
    • “run_diagnostics” reworded the description of “focus” cosmetic
    • “configure_clients” reworded the description of “client” cosmetic
Diagnostics

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 5 Nov 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
MCP tools · 204 exposed · ~25,946 tokens

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 →

Tool Tokens
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.

NameTypeReqDescription
accountstring––
limitinteger––
mailboxstring––
offsetinteger––
unread_onlyboolean––
NameTypeReqDescription
countinteger––
messagesarray––
next_actionsarray––
offsetinteger––

No examples provided.

list_m365_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.

NameTypeReqDescription
limitinteger–Number of people to return (default 20, max 50)
NameTypeReqDescription
countinteger––
peoplearray––

No examples provided.

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.

NameTypeReqDescription
limitinteger–Max conversations (default 30)
NameTypeReqDescription
chatsarray––
countinteger––
notestring––

No examples provided.

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.

NameTypeReqDescription
all_grantedboolean––
grantedarray––
missingarray––
summarystring––

No examples provided.

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.

NameTypeReqDescription
folderstring––
limitinteger–Notes per page (default 50, capped at 500). To get more, page with offset.
offsetinteger–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.
orderstring–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…
NameTypeReqDescription
countinteger–Notes in THIS page
has_moreboolean–True when notes remain past this page — call again with offset = offset + count
next_actionsarray––
notesarray––
offsetinteger–Where this page started
orderstring–The ordering actually applied (modified | id)
totalinteger–Notes matching in total, ignoring limit/offset. A LOWER BOUND, not the exact figure, when total_is_estimated is true
total_is_estimatedboolean–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 ~63

Lists folders in OmniFocus. Folders group related projects (e.g. "Work", "Personal"). Use list_omnifocus_projects to see the projects inside them.

NameTypeReqDescription
limitinteger–Max folders to return (default 100).
NameTypeReqDescription
countinteger––
foldersarray––

No examples provided.

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.

NameTypeReqDescription
include_completedboolean–Include completed/dropped projects (default excludes them).
limitinteger–Max projects to return (default 100).
NameTypeReqDescription
countinteger––
projectsarray––

No examples provided.

list_omnifocus_tags ~20

Lists all tags defined in OmniFocus.

Input schema present but exposes no named parameters.

NameTypeReqDescription
countinteger––
tagsarray––

No examples provided.

list_omnifocus_tasks ~130

Lists tasks from OmniFocus. Filter by project, tag, inbox, due today, or flagged status.

NameTypeReqDescription
due_todayboolean–Only tasks due today or overdue.
flaggedboolean–Only flagged tasks.
inboxboolean–Only unfiled inbox tasks.
include_completedboolean–Include completed tasks (default excludes them).
limitinteger–Max tasks to return (default 50).
projectstring–Only tasks in this project (name, case-insensitive).
tagstring–Only tasks carrying this tag.
NameTypeReqDescription
countinteger––
tasksarray––

No examples provided.

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.

NameTypeReqDescription
limitinteger–Max contacts to return (default 60)
NameTypeReqDescription
candidatesarray––
countinteger––
langstring––
notesstring––
template_bodystring––
template_subjectstring––

No examples provided.

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.

NameTypeReqDescription
completedboolean–false or omitted = incomplete (the default). true = completed. There is no 'both': ask twice if you need them.
limitinteger–Max number of reminders to return (earliest due first). Optional; defaults to all.
list_namestring–Filter by reminder list name (optional)
NameTypeReqDescription
countinteger–Number returned in this response.
remindersarray––
totalinteger–Total matching before the limit.

No examples provided.

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.

NameTypeReqDescription
app_bundle_idstring–Only return windows owned by this app bundle id.
on_screen_onlyboolean–Only on-screen windows (default true).

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
confirmboolean–Must be true to apply the fixes. Without it, returns what would be fixed and what needs the user.
NameTypeReqDescription
failedarrayyes–
fixedarrayyes–
modestringyespreview | applied
needs_youarrayyes–
ok_countinteger––
summarystringyes–
would_fixarrayyes–

No examples provided.

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.

NameTypeReqDescription
check_onlyboolean–If true, only report availability — no download, no install, no restart.
confirmboolean–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 ~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.

NameTypeReqDescription
ai_clientstring––
archstring––
build_shastring–Git short SHA of the build (F-041). 'unknown' if unstamped.
built_atstring–UTC build timestamp (F-041). 'unknown' if unstamped.
cloud_data_enabledboolean––
cloud_token_setboolean––
last_activityobject––
license_statusstring–trial | active | expired
machine_idstring––
os_versionstring––
servicesobject–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_captureobject–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…
tccobject–TCC permission states, e.g. granted | denied | authorized.
tray_versionstring––
tunnel_connectedboolean––
updateobject––
versionstring–Serving (running) server version.

No examples provided.

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.

NameTypeReqDescription
limitinteger–Max recent attempts to return (default 10)
NameTypeReqDescription
binaries_foundarrayyesLMCP binaries found at known alternate paths.
cache_dirstringyes–
cache_writablebooleanyesWhether the update cache dir is writable (#1 silent-failure cause).
consecutive_failuresintegeryes–
current_versionstringyes–
last_success_atstringyesISO 8601 timestamp of last successful update, empty if none.
recent_attemptsarrayyesRecent update attempts, newest first.
recent_attempts_countintegeryes–
running_fromstringyesReal path of the currently running binary.

No examples provided.

m365_create_event ~186

Create a calendar event in your Microsoft 365 / Outlook calendar.

NameTypeReqDescription
attendeesstring–Comma-separated email addresses to invite (optional)
bodystring–Event description (optional)
calendarstring–Calendar name to create the event in — partial, case-insensitive match (optional). Omit to use the primary calendar.
endstringyesEnd time in ISO 8601, e.g. '2026-05-20T11:00:00'
locationstring–Location (optional)
startstringyesStart time in ISO 8601, e.g. '2026-05-20T10:00:00'
subjectstringyesEvent title
timezonestring–IANA timezone, e.g. 'America/New_York' (default: UTC)
NameTypeReqDescription
idstring––
messagestring––
okboolean––

No examples provided.

m365_delete_event ~55

Delete a calendar event from your Microsoft 365 / Outlook calendar by its ID.

NameTypeReqDescription
confirmbooleanyesSet to true to confirm deletion (required)
idstringyesEvent ID from m365_list_events
NameTypeReqDescription
messagestring––
okboolean––

No examples provided.

m365_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.

NameTypeReqDescription
idstringyesContact ID from m365_list_contacts or m365_search_contacts
NameTypeReqDescription
business_addressstring––
companystring––
emailsarray––
given_namestring––
home_addressstring––
idstring––
mobilestring––
namestring––
notesstring––
phonesarray––
surnamestring––
titlestring––

No examples provided.

m365_list_contacts ~41

List contacts from your Microsoft 365 / Outlook address book.

NameTypeReqDescription
limitinteger–Max contacts to return (default 50, max 100)
NameTypeReqDescription
contactsarray––
countinteger––
querystring––

No examples provided.

m365_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.

NameTypeReqDescription
folderstring–Folder name: inbox (default), sentitems, drafts, deleteditems
limitinteger–Number of emails to return (default 20, max 50)
unread_onlyboolean–If true, return only unread emails
NameTypeReqDescription
countinteger––
emailsarray––

No examples provided.

m365_list_events ~92

List upcoming calendar events from your Microsoft 365 / Outlook calendar.

NameTypeReqDescription
calendarstring–Calendar name to filter by — partial, case-insensitive match (optional). Omit to use the primary calendar.
daysinteger–Number of days ahead to look (default 7, max 30)
limitinteger–Max events to return (default 20, max 50)
NameTypeReqDescription
calendarstring––
countinteger––
daysinteger––
eventsarray––

No examples provided.

m365_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.

NameTypeReqDescription
idstringyesThe email message ID from m365_list_emails or m365_search_emails
NameTypeReqDescription
bodystring––
ccarray––
datestring––
fromstring––
from_addressstring––
idstring––
is_readboolean––
subjectstring––
toarray––

No examples provided.

m365_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.

NameTypeReqDescription
confirmboolean–Set to true to actually send (default: shows preview only)
idstringyesMessage ID to reply to (from m365_list_emails or m365_read_email)
messagestringyesYour reply text
reply_allboolean–If true, reply to all recipients (default: false)
NameTypeReqDescription
messagestring––
okboolean––

No examples provided.

m365_search_contacts ~43

Search contacts in your Microsoft 365 address book by name, email, or company.

NameTypeReqDescription
querystringyesSearch term — name, email, or company
NameTypeReqDescription
contactsarray––
countinteger––
querystring––

No examples provided.

m365_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.

NameTypeReqDescription
limitinteger–Max results (default 20, max 50)
querystringyesSearch query, e.g. 'budget Q2', 'from:alice@contoso.com', 'subject:invoice'
scopestring–"all" (default — sender+subject+body, today's behavior), "metadata" (sender+subject only), or "body" (body only).
NameTypeReqDescription
countinteger––
emailsarray––
querystring––
search_backendstring––
search_coveragestring––
search_scopestring––

No examples provided.

m365_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.

NameTypeReqDescription
bodystringyesEmail body (plain text)
ccstring–CC recipients (optional, comma-separated)
confirmboolean–Set to true to actually send (default: shows preview only)
subjectstringyesEmail subject
tostringyesRecipient email address. For multiple, separate with commas.
NameTypeReqDescription
messagestring––
okboolean––

No examples provided.

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.

NameTypeReqDescription
pathstringyesPath to the media file.

No output schema declared.

No examples provided.

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.

NameTypeReqDescription
accountstring––
confirmboolean––
mailboxstring––
message_idstringyes–
target_mailboxstringyes–
NameTypeReqDescription
message_idstring––
movedboolean––
tostring––
warningstring––

No examples provided.

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.

NameTypeReqDescription
accountstring––
auto_connectboolean–True if auto-connect / connect on demand is on
connectedboolean–True if the VPN is connected
installedbooleanyesTrue if NordVPN is installed
kill_switchboolean–True if the kill switch is enabled
last_locationstring––
logged_inboolean–True if a NordVPN account is logged in
protocolsarray–Supported VPN protocols
reportstring–Full formatted text report
runningboolean–True if the NordVPN app is running
subscriptionstring––
versionstring––

No examples provided.

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.

NameTypeReqDescription
countrystring–Country name or 2-letter code (e.g. 'US', 'United States', 'JP'). Omit for auto-recommendation.
limitinteger–Number of servers to return (1-10). Default: 5.
typestring–Server type filter: 'standard', 'p2p', 'double_vpn', 'onion', 'dedicated_ip'. Default: standard.
NameTypeReqDescription
countinteger––
notestring––
serversarray––

No examples provided.

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.

NameTypeReqDescription
app_runningboolean––
auto_connectboolean––
connectedboolean––
installedboolean––
last_locationstring––
snoozed_untilstring––
versionstring––

No examples provided.

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.

NameTypeReqDescription
countinteger––
databasesarray––
notestring––

No examples provided.

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.

NameTypeReqDescription
limitinteger–Max pages (default 50, max 500)
NameTypeReqDescription
countinteger––
notestring––
pagesarray––

No examples provided.

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.

NameTypeReqDescription
countinteger––
notestring––
workspacesarray––

No examples provided.

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.

NameTypeReqDescription
pagestringyesPage id (UUID) or title (partial, case-insensitive)
NameTypeReqDescription
openedboolean––
page_idstring––
titlestring––

No examples provided.

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.

NameTypeReqDescription
databasestringyesDatabase id (UUID) or name (partial, case-insensitive)
limitinteger–Max rows (default 50, max 500)
NameTypeReqDescription
countinteger––
notestring––
rowsarray––

No examples provided.

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.

NameTypeReqDescription
max_blocksinteger–Max blocks to render (default 300, max 1000)
pagestringyesPage id (UUID) or title (partial, case-insensitive)
NameTypeReqDescription
blocks_renderedinteger––
content_markdownstring––
idstring––
last_editedstring––
notestring––
titlestring––
uncached_blocksinteger––

No examples provided.

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.

NameTypeReqDescription
limitinteger–Max results (default 20, max 100)
querystringyesText to search for
NameTypeReqDescription
countinteger––
notestring––
querystring––
resultsarray––

No examples provided.

onedrive_delete_file ~47

Deletes a file or empty folder from OneDrive.

NameTypeReqDescription
confirmboolean–Must be true to delete
pathstringyesAbsolute path to the file or folder
NameTypeReqDescription
deletedbooleanyes–
pathstringyes–

No examples provided.

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.

NameTypeReqDescription
pathstringyesAbsolute path to the file or folder
NameTypeReqDescription
createdstring––
extensionstring––
modifiedstring––
namestring––
pathstring––
sizeinteger––
size_humanstring––
typestring–file | directory

No examples provided.

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.

NameTypeReqDescription
limitinteger–Max entries to return (default 1000, max 5000). Folders with more entries are truncated; the response sets truncated=true and reports the total.
pathstringyesAbsolute path to the OneDrive folder
NameTypeReqDescription
countinteger–Entries returned in this response.
itemsarray––
notestring––
totalinteger–Total entries in the folder.
truncatedboolean–True when total exceeds the limit.

No examples provided.

onedrive_move_file ~53

Moves or renames a file/folder within OneDrive.

NameTypeReqDescription
confirmboolean–Must be true to move
destinationstringyesDestination path
sourcestringyesSource path
NameTypeReqDescription
fromstringyes–
movedbooleanyes–
tostringyes–

No examples provided.

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.

NameTypeReqDescription
encodingstring–Force a specific encoding: 'auto' (default), 'utf8', 'latin1', 'cp1252', 'ascii', 'utf16'
max_bytesinteger–Maximum bytes to read (default 1048576 = 1 MB, capped at 10485760 = 10 MB)
offsetinteger–Start reading at byte offset (default 0)
pathstringyesAbsolute path to the file
NameTypeReqDescription
bytesintegeryesTotal file size in bytes
bytes_readinteger–Number of bytes read in this slice
contentstringyesDecoded file text content
encodingstring–Encoding used to decode (utf8 | cp1252 | latin1 | ascii | utf16)
offsetinteger–Byte offset the read started at
pathstringyesAbsolute path of the file
truncatedboolean–True if more content remains beyond what was returned

No examples provided.

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.

NameTypeReqDescription
rootsarray––

No examples provided.

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.

NameTypeReqDescription
max_resultsinteger–Maximum results (default 50)
querystringyesFilename pattern to search for
rootstring–Root OneDrive path to search in (optional)
NameTypeReqDescription
countinteger––
querystring––
resultsarray––

No examples provided.

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.

NameTypeReqDescription
confirmboolean–Must be true to apply
folderstring–Allowed folder path relative to the root (e.g. '/000-Claude Personal Agent'). Empty string removes the scope.
root_namestringyesOneDrive root name (from onedrive_root, e.g. 'OneDrive-WPPCloud')
NameTypeReqDescription
accessstring––
allowed_folderstring––
effectstring––
rootstring––
scope_removedboolean––
scope_setboolean––

No examples provided.

onedrive_write_file ~59

Writes text content to a file in OneDrive.

NameTypeReqDescription
confirmboolean–Must be true to write
contentstringyesText content to write
pathstringyesAbsolute path to the file in OneDrive
NameTypeReqDescription
bytesintegeryes–
pathstringyes–
writtenbooleanyes–

No examples provided.

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.

NameTypeReqDescription
installedbooleanyesTrue if Microsoft Outlook is installed
mail_app_accountsarray––
missing_from_mail_apparray–Outlook account emails not present in Mail.app
notestring–Plain-language guidance
outlook_accountsarray––
reportstring–Full formatted text report

No examples provided.

pdf_read ~109

Reads and extracts text from a PDF document (.pdf file).

NameTypeReqDescription
force_downloadboolean–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_pagesinteger–Max pages to extract (default: all)
pathstringyesAbsolute path to the PDF file
NameTypeReqDescription
charsintegeryesNumber of characters in the extracted text
pagesinteger–Total number of pages in the PDF
textstringyesExtracted text content

No examples provided.

Install

How do I install the LMCP MCP server?

LMCP 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

# add to Claude Code
claude mcp add --transport http com-local-mcp-local-mcp 'https://local-mcp.com/mcp'
Common questions

What is the LMCP MCP server?

LMCP is an MCP server listed in the public MCP registry as com.local-mcp/local-mcp. Mac & Windows: let ChatGPT, Claude & Cursor use your email, calendar, iMessage, Teams, files. This page covers its hosted endpoint (https://local-mcp.com/mcp).

Is the LMCP MCP server safe to use?

LMCP 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 LMCP MCP server expose?

LMCP 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 LMCP MCP server require authentication?

Yes. LMCP 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 LMCP MCP server still maintained?

LMCP is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.