Local MCP (LMCP)
@lanchuske
About Local MCP (LMCP)
143 local tools for Claude, Cursor & ChatGPT — Mail, iMessage, Microsoft Teams, Slack, WhatsApp, Calendar, OneDrive, Outlook, OmniFocus, Notes, Finder and Office docs. 100% local, no API keys. Reaches what cloud connectors can't. Mac + Windows.
Config
Add this server to your MCP-compatible client using the configuration below.
{
"mcpServers": {
"local-mcp": {
"command": "npx",
"args": [
"-y",
"local-mcp@latest"
]
}
}
}Tools
182Sends an email via Microsoft Outlook on Windows.
Checks for and installs LMCP updates.
Reply to a Microsoft 365 email by its message ID. Shows a preview first — set confirm=true to actually send.
Search your Microsoft 365 emails by keyword, sender, or subject.
Saves a reusable SKILL — a named recipe (an ordered sequence of LMCP tool calls with parameters) — to this machine so the user can re-run it anytime with recipe_run. A user would save one to turn a multi-step LMCP workflow they repeat (a morning brief, inbox triage, a weekly report, a data pull) into a single reusable command. The manifest must have a name and a non-empty steps array. An arg string may interpolate a declared param with ${name}; an arg that is exactly "${name}" keeps the param's type. A later step can consume an earlier step's output with "${steps[N].result.KEY}" (0-based; supports .key and [i]). Returns {name, step_count}.
Shows the history of past recipe runs and their results (recorded by recipe_run), so you can reuse, compare, or debug a recipe. Pass `name` for one recipe's runs, or omit for a compact history across all recipes. Pass `run_id` (with `name`) to get that run in full detail. Newest first.
Re-resolves a previously returned element_ref (its bounds/state may have changed). Returns role, label, bounds, enabled, focused, value. stale_element if the handle is unknown or the element no longer exists.
Gives a morning briefing: today's calendar events, recent emails, and pending tasks. Works on both macOS and Windows.
Report a problem, feature request, or integration request to the LMCP team.
Searches WhatsApp messages across chats.
List upcoming calendar events from your Microsoft 365 / Outlook calendar.
Lists contacts from Microsoft Outlook on Windows.
Searches contacts in Microsoft Outlook by name, email, or company.
Marks a task as complete in Microsoft To Do / Outlook Tasks.
List active (incomplete) Todoist tasks. Optionally scope to a project_id, or pass a Todoist filter (e.g. 'today', 'overdue', '#Work & p1').
Saves attachments from an Outlook email to a folder.
Send an email from your Microsoft 365 account. Shows a preview first — set confirm=true to actually send.
Update fields on a ServiceNow incident — change state, priority, assignment, or description. Use sys_id from servicenow_get_incident.
Searches for files by name recursively. Windows/Linux equivalent of finder_search.
Update the title or content of an existing Evernote note. (Coming soon — Evernote support is being rebuilt.)
Send a message to a Microsoft Teams channel via Graph API. Requires connect_m365_account with ChannelMessage.Send permission. team_id and channel_id from teams_list_teams / teams_list_channels. First call returns preview; set confirm=true to send.
Trims a video to one or more time ranges (milliseconds), concatenated in order into a NEW file — e.g. keep [{start_ms:0,end_ms:6000},{start_ms:126000,end_ms:223000}] to drop a dead segment. Audio is carried along. Returns the output path + duration. Never overwrites the input in place.
Captures a PNG screenshot of the current page of a web session (returned inline so web AIs can see it). Useful to ground what the page looks like before acting.
List contacts from your Microsoft 365 / Outlook address book.
Lists the user's reusable SKILLS — saved recipes (an ordered sequence of LMCP tool calls with parameters), each runnable with recipe_run. A user would list them to find an existing skill for a task rather than rebuilding it from scratch. Returns each recipe's name, description, and step count.
Exports a saved SKILL (recipe) as a single portable token the user can send to someone else — paste it in a message, email, or doc. The recipient installs it with recipe_import and runs it with recipe_run. A user would export a skill to share it with a teammate (a handy brief, a report, a workflow). Returns {name, skill_token} plus the readable manifest.
Writes or overwrites a text file in the synced Google Drive folder — it uploads automatically via the official client. First call returns a preview; pass confirm=true to write.
GUI automation — control a native Windows app's interface. Finds an element (button, field, menu…) in an app's UI Automation tree by role and/or label. Scope with `app` (process name like "notepad", or a window-title substring). Returns an opaque element_ref (usable by ui_click / ui_type / ui_get_element this session) plus role, label, bounds, enabled, focused. `role` is a UIA control type (Button, Edit, CheckBox, MenuItem, Hyperlink, Text…) — run ui_read_tree to see the exact names. found=false when the app is reachable but nothing matches; app_not_found is an explicit error.
Disconnect Todoist and remove the stored API token.
Create a Todoist task. Optionally set a project, a natural-language due date (due_string, e.g. 'tomorrow 5pm', 'every monday'), and priority (1=normal … 4=urgent).
Gets historical price data for a stock symbol.
Sets the active Google Drive root directory (when multiple accounts are synced).
Disconnect your Microsoft 365 account and remove stored tokens.
Reads data from an Excel (.xlsx) file. Returns sheets and cell values.
Lists all Teams (organizations/teams) visible in the local desktop app.
Send a message to a Microsoft Teams chat via Graph API. Requires connect_m365_account. chat_id must come from teams_list_chats. First call returns preview; set confirm=true to send.
Records referral invites for the colleagues a user chose to invite and returns a unique referral link per person, so the user can later see who installed or activated LMCP. It does not send anything itself — each returned link can be included in an email or message to that person. `lang` records the language the invite is written in (e.g. "es", "en").
Finds elements on the current page of a web session so you can decide what to click or type into. `query` is a CSS selector OR visible text to match. Returns up to 30 matches with tag/text/name/type/href — never a silent empty.
Read the full content of an Evernote note by its GUID. (Coming soon — Evernote support is being rebuilt.)
Create a new note in Evernote. (Coming soon — Evernote support is being rebuilt.)
List your Todoist projects (id + name). Use a project's id to scope todoist_list_tasks or todoist_create_task.
Gets real-time stock quote for a symbol (e.g., AAPL, MSFT, BTC-USD).
Replies to all recipients of an Outlook email.
Creates a PowerPoint (.pptx) file with title and bullet slides.
Lists recent WhatsApp chats from the local desktop app. No tokens needed — reads locally.
Searches for files and folders by name (case-insensitive, partial match) recursively from a root directory. Defaults to the home directory. Returns matching items with path, type and size. The root must be inside an allowed folder.
Lists files and folders in a OneDrive path.
Send a file via WhatsApp to a chat.
Navigates a web session to a URL (reusing its saved login if any) and returns the resulting URL + page title. Opens the session if it doesn't exist yet. Read the page afterwards with web_read.
Brings a web session's browser window to the FRONT so the USER can take over directly — solve a CAPTCHA, complete 2FA, or make a choice the AI shouldn't. Local MCP never solves CAPTCHAs itself; this hands control to the user. After they finish, tell the agent to continue — the session keeps its state.
Lists all mounted Google Drive directories on this machine.
Gets detailed info about a file in Google Drive.
Read the full content of a specific Microsoft 365 email by its ID.
Delete a calendar event from your Microsoft 365 / Outlook calendar by its ID.
Clicks an element (by element_ref, at its center) or a screen coordinate (by coords). button left|right, count 2 = double-click. Returns {clicked, at:{x,y}} — `clicked` means the click was POSTED at those coordinates, NOT that the app acted on it: SendInput carries no delivery confirmation, so a busy or modal app reports the same success. Confirm the effect with ui_wait_for_element or ui_read_tree rather than trusting `clicked`.
Reads a plain-text file from the local filesystem by its absolute path — the default tool for reading a local text file (use pdf_read/word_read/excel_read/ppt_read for those document types, onedrive_read_file / gdrive_read_file for cloud storage). The path must be inside an allowed folder (the home directory by default; extend via the config key fs_allowed_roots). Supports offset/max_bytes for chunked reads of large files.
Lists files and folders in a local directory. Defaults to the user's home directory. Returns name, path, type (file/directory), size and modification time for each item. The path must be inside an allowed folder (home directory by default).
Add a comment or work note to a ServiceNow incident. Comments are visible to the caller; work notes are internal only.
Reads the full content of an Outlook email by its EntryID.
Mark a Todoist task complete (closes it). Pass the task_id from todoist_list_tasks.
Submits a feature request to the LMCP team — a new capability, a tool that doesn't exist yet, or an app/integration the user wishes LMCP supported. Without confirm=true it returns a preview; with confirm=true it submits. The request includes the machine ID and (if set) the account email so the team can follow up — it is not anonymous.
Lists configured email accounts in Outlook.
Reads text content from a PowerPoint (.pptx) presentation.
List the people most relevant to you in Microsoft 365 — based on your communication patterns, collaboration history, and org chart.
Browses installable community SKILLS — ready-made LMCP workflows other people published (a morning brief, inbox triage, a weekly report). A user would browse them to find a ready-made workflow for a repeatable multi-app task instead of building it from scratch. Returns a list of {id, title, category, description, steps, votes}; install one with recipe_install(id).
Returns a COMPACT UI Automation tree of a running Windows app's labeled + interactive elements (buttons, links, edits, checkboxes, menus…) — the native equivalent of web_read's a11y mode. Use it to DISCOVER what to act on in an unfamiliar app when you don't already know an element's role/label (ui_find_element needs one up front). Each interactive node carries a `ref` you can pass straight to ui_click. Pass `app` (a running app's process name, e.g. notepad). The tree is pruned to signal-bearing nodes and bounded by max_depth (default 12) and a node budget, so very large windows return partial.
List all your Evernote notebooks. (Coming soon — Evernote support is being rebuilt.)
Moves an Outlook email to a different folder.
Send a WhatsApp message to a chat.
Adds Local MCP to the config of installed MCP-capable AI clients on this machine (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code) so they can use LMCP's tools — no manual JSON editing. Read-only PREVIEW unless confirm:true. Optionally pass a single `client` id or name to configure just that one. Returns which clients it set up, which already had Local MCP, and the restart step.
Create a calendar event in your Microsoft 365 / Outlook calendar.
Search your organization's Microsoft 365 directory for users by name or email.
Get full details of a specific Microsoft 365 contact by ID. Get the ID from m365_list_contacts or m365_search_contacts.
Creates a new Excel (.xlsx) file with headers and optional data rows.
Lists all mounted OneDrive directories on this machine.
Returns metadata for a file or folder: size, modification date, type, permissions.
Search your Evernote notes by keyword, tag, or notebook. (Coming soon — Evernote support is being rebuilt.)
Reads messages from a WhatsApp chat.
Clicks an element on the current page. `target` is a CSS selector or visible text (resolved fresh each call). Clicks that SUBMIT a form preview first — call again with confirm:true to execute; plain links/buttons click directly. Returns the resulting URL/title.
List incidents assigned to you or opened by you in ServiceNow.
Creates a new Word (.docx) document with the given content.
Creates a calendar event in Microsoft Outlook.
Creates a new mail folder in Outlook.
List emails from your Microsoft 365 / Outlook inbox. Returns subject, sender, date, and preview.
Returns the full manifest of a saved recipe by name. recipe_not_found if unknown.
Executes a saved recipe end to end: binds params, runs each step's tool in order, records the run (see recipe_runs), and returns each step's result. Confirm gate: without confirm:true it returns a DRY-RUN PREVIEW of the ordered steps with their bound args; call again with confirm:true to execute. A step that errors stops the run and is reported.
Reads a text file from OneDrive. Supports .txt, .md, .csv, .json, .xml, .html, .log.
Replies to an Outlook email by its EntryID.
Writes a value to a specific cell in an existing Excel file.
Reads and extracts text from a PDF file. Best-effort extraction — works well with text-based PDFs.
Crops a video to a target aspect ratio (e.g. "9:16" vertical, "1:1" square, "4:5") around a focus point — for social clips. Takes the LARGEST crop of that aspect that fits, centered on `focus` (x,y in source pixels, top-left origin; default = center) and clamped to the frame. Audio passes through. Returns the output path + new dimensions.
Lists the open windows on this machine: window id, owning app (exe name), pid, title, bounds {x,y,w,h} and display id. Windows-only (uses the Win32 windowing API). Filter by app with app_bundle_id (an exe-name substring match on Windows).
Remove stored ServiceNow credentials.
Search the ServiceNow Knowledge Base for articles.
Types text into the focused control (or focuses element_ref first, then types). Sends real key events so validation/handlers fire.
Writes text content to a file in OneDrive.
Searches for files by name in a OneDrive directory (recursive).
Gets detailed info for a specific Outlook contact by name.
Restricts LMCP's OneDrive access to a specific folder for security.
Get recommended NordVPN servers by country or specialty. Uses NordVPN public API (no account needed).
Run a diagnostic check on NordVPN: installation, connection status, and configuration.
Types text into a form field (input/textarea) on the current page. `target` is a CSS selector or the field's visible label/placeholder. Does NOT submit — use web_click on the submit button afterwards (that step is gated).
Moves or renames a file/folder within OneDrive.
Reads messages from a specific Teams channel.
Installs a SKILL someone shared with you — pass the skill_token from their recipe_export (or a raw recipe manifest JSON). Saves it to this machine so recipe_run can use it. Safe: importing only stores the skill; when it's later run, any state-changing step (send/write/delete) previews first and needs confirmation. If a skill with the same name already exists, the import is saved under a non-colliding name. Returns {name, imported}.
Send an ANONYMOUS, content-free signal when an LMCP tool fails, returns nothing useful, the user seems frustrated, or you could not accomplish what they asked. Helps the LMCP team find and fix the roughest spots. Send ONLY the category + the tool name — NEVER the user's request, message/email content, account names, or any personal data. No confirmation needed: this is anonymous (categories only).
Sends a key combination to the focused app, e.g. "ctrl+s", "ctrl+shift+n", "return", "alt+f4", "escape". Modifiers: ctrl, shift, alt, win (cmd is accepted as an alias for ctrl). The last token is the key. unknown_key if the key isn't recognized.
Deletes a calendar event from Outlook by EntryID.
Returns a QA test protocol listing every LMCP tool to test, with expected inputs and pass/fail criteria. Execute each test and report results via submit_qa_report.
Returns recent LMCP tool call history from the local audit log. Each entry shows the tool name and the UTC timestamp. Note: this store records only tool name + time — it does NOT record call source, success/failure or duration, so the `ok` filter has no effect.
Gets the current weather and a short daily forecast for a location. Pass a city name ('London', 'San Francisco', 'Tokyo,JP') or 'lat,lon' coordinates. Uses Open-Meteo — no API key required. Location must be provided (there is no device-location access).
Connect ServiceNow. For security your instance, username and password are entered directly in Local MCP's own settings page — never passed through the AI. Call this to get the instructions, or to check whether ServiceNow is already connected.
Removes one of the user's saved recipes. Destructive with a preview gate: the first call (without confirm) shows what would be deleted; call again with confirm:true to actually delete. recipe_not_found if unknown. To modify a recipe instead, recipe_save with the same name overwrites it.
Echoes the input text back. Use for testing the MCP connection.
Lists recent Microsoft Teams chat conversations from the local desktop app. No API tokens needed.
Reads a text file from Google Drive. Returns the content as text.
Clicks a Windows notification-area (system tray) icon by label — the analogue of a menu-bar extra. Best-effort via UI Automation over the taskbar tray; apps that render a fully custom tray icon may not expose a label (fall back to ui_click at known coords). Some icons live in the hidden overflow flyout, which this does not open.
Check NordVPN connection status: connected/disconnected, auto-connect, and last known location. Does NOT open NordVPN.
Runs a shell command on the user's computer. OFF by default — the user must turn on "Allow terminal commands" in Local MCP's settings; until then it reports it is off. Dangerous commands (sudo/privilege escalation, recursive deletes of system or home paths, disk formatting, shutdown/reboot, piping a downloaded script into a shell, fork bombs) are refused. Destructive: it previews the command first — pass confirm:true to actually run it. Output and runtime are capped. On Windows the command runs via `cmd /c`; elsewhere via `sh -c`.
Closes a web-automation session's live window and frees it. The saved login stays on disk, so web_login/web_navigate can reopen it later without signing in again.
Reads the current page of a web session so you can reason over it. mode='text' (visible text, default), 'a11y' (compact accessible tree of links/buttons/fields — best for deciding what to do next), or 'html' (raw DOM). Returns an explicit error if the session isn't open or hasn't navigated yet — never a silent empty. Output is capped; a note is added if truncated.
Searches for files in Google Drive by name or extension.
Searches Outlook emails by keyword in subject or body.
Returns the current LMCP configuration: version, OS, architecture, cache directory, detected apps.
Returns the self-update health state: current version, latest available, pending update status.
Checks which email accounts are configured in Microsoft Outlook and tests COM connectivity.
Create a new incident in ServiceNow.
Returns LMCP's self-upgrade health (the LMCP app upgrading itself, not editing your data): current version, the last N upgrade attempts with any errors, whether the upgrade cache dir is writable, and any staged or blocked update. Call this when the app's auto-upgrade seems stuck, or to explain why a user is on an old version.
Reads Microsoft Teams call & meeting history from the local Teams cache — no Graph API, no token, no admin consent (the same local store the Teams Calls tab renders). Each call includes direction (incoming/outgoing/missed), participants (names + ids), start / answered / end times, duration, call type (1:1/group/meeting) and a stable call id. Optional since/until (YYYY-MM-DD) narrow the range — e.g. a daily collector pulls the previous day's calls.
Exports a video (or a [start_ms,end_ms] slice of it) to an optimized looping GIF — for README/social. fps (default 12) and width (default 640, height auto) control size. Returns the output path, frame count, and size.
Pixelates/blurs one or more rectangles over the video — the tool for redacting PII (an email pane, a name) before publishing a screen recording. Rects are in source pixels, top-left origin: [{x,y,w,h, start_ms?, end_ms?}] — omit the times to cover the whole clip. Great with a marker timeline's `bounds`. Returns the output path.
Runs arbitrary JavaScript in a web session and returns the last expression's value. POWER-USER tool, OFF BY DEFAULT (a page could feed malicious code) — enable "Allow web_eval (advanced)" in Local MCP settings first. Prefer web_find / web_read / web_extract for normal use.
Waits (polls, not a fixed sleep) until an element appears (or a page condition holds), or times out. PREFER the `selector` param: a CSS selector waited on as data (e.g. selector "input[name=password]"). `condition` also accepts the documented form "document.querySelector('SEL')" for compatibility. Any other JavaScript in `condition` runs on the page and requires web_eval to be enabled. Returns met:true/false.
Lists recent emails from Microsoft Outlook on Windows. Reads directly from the local Outlook app via COM — no API tokens needed.
Reads text content from a Word (.docx) file.
Lists all calendar folder names in Outlook.
Forwards an Outlook email to another recipient.
Submits a QA run report. Each result must have status 'ok' or 'error' (not 'pass'/'fail').
Lists Microsoft To Do task lists / Outlook task folders. Same capability as todo_list_lists (this is the Mac's name for it).
Stitches multiple videos end-to-end, in order, into one NEW file (e.g. assemble separate acts). All inputs should share a resolution for a clean result. Returns the output path + duration.
Moves and resizes a window to the given rectangle. Pass window_id (HWND from list_windows) and bounds {x,y,w,h}. Returns the actual post-move bounds. Windows-only.
Reads messages from a specific Teams chat conversation.
Lists channels in a specific Team.
Lists channels in a Slack workspace.
Lists task folders/lists in Outlook Tasks.
Flags or unflags an Outlook email as important.
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.
Get detailed information about a specific person in your Microsoft 365 directory by their user ID or email address. Use 'me' to get the currently authenticated user's profile.
Searches messages across Slack channels.
Searches for stock/crypto symbols by name or ticker.
Lists files and folders in a Google Drive directory.
Search ServiceNow incidents by keyword or incident number (INC...).
Searches your Microsoft Teams chat and direct-message history (all conversations at once) by text, sender name, and/or date range. Use this to find where something was discussed in Teams without knowing which chat. Returns matching messages with the chat they came from. Provide at least one of query, from_sender, since, until.
Lists Slack workspaces from the local desktop app. No API token needed.
Lists Zoom meeting recordings saved locally on this machine (<home>/Documents/Zoom), newest first: meeting name, date, and which artifacts exist (transcript, captions, saved chat, audio, video). Local recordings only — no Zoom API. Use zoom_read_transcript to read the text of a meeting.
Reads the text artifacts of a local Zoom recording: the transcript/captions (.vtt or closed_caption.txt, cleaned to readable 'Speaker: text' lines) and the saved in-meeting chat. Pass the recording name or path from zoom_list_recordings. Great for 'summarize my last meeting'.
Scrapes structured data from the current page. Pass `selectors` = an object mapping field names to CSS selectors (e.g. {"title":"h1","price":".price"}); returns each field's first-match text/href, null when absent.
Deterministic synchronization — replaces all sleeps. Polls for an element until it reaches state (present|enabled|focused|absent) or times out. A timeout is an EXPLICIT error, never a false success. Returns {satisfied, waited_ms, element_ref?, bounds?}.
Lists files and folders in a directory. Windows/Linux equivalent of finder_list.
Disconnect your Evernote account and remove stored tokens. (Coming soon — Evernote support is being rebuilt.)
Writes text to a local file — create, overwrite, or append. The path must be inside an allowed folder (home directory by default; extend via config key fs_allowed_roots). Missing parent folders are created. Overwriting an existing file requires confirm=true (the first call returns a preview instead); creating a new file and append=true never need confirm.
Lists the displays (monitors) attached to this machine: display id, bounds {x,y,w,h}, scale_factor (DPI/96) and whether it is the main display. Windows-only.
Lists your web-automation login profiles: every SAVED login (a persisted browser profile on disk, so web_login/web_navigate can reopen it without signing in again) plus which are currently OPEN (a live window right now). Use it to check whether a login a task needs already exists before opening it.
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.
Brings a window to the front and gives it focus. Pass window_id (the HWND from list_windows). Windows-only.
Connect your Microsoft 365 / Outlook account. Call once to get a login code, then call again after authenticating at microsoft.com/devicelogin to confirm.
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, verifies its sha256, and stages it to apply on the NEXT restart of LMCP (this server does not restart itself mid-session), so it requires confirm=true. Pass check_only=true to only report whether a newer version is available, with no download or staging.
Deletes a file or empty folder from OneDrive.
Lists upcoming calendar events from Microsoft Outlook on Windows.
Runs a fast health check of all LMCP integrations on this machine. Tests Outlook, OneDrive, Teams, Slack connectivity.
Creates a task in Microsoft To Do / Outlook Tasks.
Reads messages from a Slack channel.
Appends text to an existing Word (.docx) document.
Opens a real browser window for the user to sign into a website THEMSELVES (you never handle their password). Ensures the session, navigates to the login URL, and reveals the window in the foreground. After they log in, the session is saved on disk and reused by web_navigate/web_read — they won't need to log in again. Use a stable `session` name per site (e.g. 'linkedin'). NOTE: automating some sites may violate their terms — the user accepts that risk.
Search contacts in your Microsoft 365 address book by name, email, or company.
Installs a community SKILL by id (from recipe_discover) onto this machine so recipe_run can use it. Safe: installing only stores the skill; when it's later run, any state-changing step (send/write/delete) previews first and needs confirmation. If a skill with the same name already exists, it's saved under a non-colliding name. Returns {name, imported}.
Returns the current state of the LMCP server: version, OS, architecture, and available tools.
Lists tasks from Microsoft To Do / Outlook Tasks on Windows.
Connect your Evernote account. (Coming soon — Evernote support is being rebuilt.)
Connect Todoist. For security your API token is entered directly in Local MCP's own settings page — never passed through the AI. Call this to get the instructions, or to check whether Todoist is already connected.
Get the current date and time of the machine where LMCP runs — with timezone and UTC offset. Call this whenever you need the real 'now' on the user's computer: before creating calendar events or reminders, resolving relative dates like 'today'/'tomorrow'/'next Friday', or timestamping. Takes no arguments.
Get full details of a ServiceNow incident by incident number (INC...) or sys_id.
Overview
What is Local MCP (LMCP)?
Local MCP (LMCP) is an MCP (Model Context Protocol) server that gives AI assistants native access to macOS apps — Mail, Calendar, Contacts, Microsoft Teams, OneDrive, Notes, Reminders, OmniFocus, and more, with 82 total tools. It runs entirely on your Mac, requires no cloud services, API keys, or OAuth, and keeps all data local.
How to use Local MCP (LMCP)?
Install with a single curl command (curl -fsSL https://local-mcp.com/install?ref=github | bash). The installer auto-detects and configures Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, and Zed. Restart your AI client after install. For Claude.ai or ChatGPT, enable the optional Cloud Relay in the menu bar app.
Key features of Local MCP (LMCP)
- 82 tools across 15 macOS apps
- No cloud, API keys, or OAuth required
- Reads operate instantly; writes require confirmation
- Auto-configures six popular AI clients
- Works fully offline with sub‑second responses
- Optional Cloud Relay for web‑based AI assistants
Use cases of Local MCP (LMCP)
- Summarize unread emails and reply from your AI assistant
- Schedule, read, or cancel calendar events
- Find and open files on OneDrive or your Mac
- Read and summarize PDFs or Office documents
- Search iMessages and Notes for specific information
FAQ from Local MCP (LMCP)
What apps does Local MCP (LMCP) support?
Mail, Calendar, Contacts, Microsoft Teams, OneDrive, Outlook, Reminders, OmniFocus, Notes, Messages, Word, Excel, PowerPoint, PDF, Finder, Safari, and Stocks — 82 tools across 15 categories.
How does Local MCP (LMCP) differ from cloud‑based MCP servers?
LMCP runs entirely locally, using native macOS frameworks (EventKit, AppleScript, LevelDB, CNContactStore) instead of cloud APIs. No API keys, OAuth, or rate limits; your data never leaves your machine.
What are the system requirements?
macOS 12+ (Monterey or later) on Apple Silicon or Intel.
How does Local MCP (LMCP) handle write operations like sending email or deleting events?
All destructive operations show a preview and require explicit confirmation before they execute.
Can Local MCP (LMCP) be used with Claude.ai or ChatGPT?
Yes, by enabling Cloud Relay in the menu bar app. It creates a secure WebSocket tunnel so web‑
Frequently asked questions
What apps does Local MCP (LMCP) support?
Mail, Calendar, Contacts, Microsoft Teams, OneDrive, Outlook, Reminders, OmniFocus, Notes, Messages, Word, Excel, PowerPoint, PDF, Finder, Safari, and Stocks — 82 tools across 15 categories.
How does Local MCP (LMCP) differ from cloud‑based MCP servers?
LMCP runs entirely locally, using native macOS frameworks (EventKit, AppleScript, LevelDB, CNContactStore) instead of cloud APIs. No API keys, OAuth, or rate limits; your data never leaves your machine.
What are the system requirements?
macOS 12+ (Monterey or later) on Apple Silicon or Intel.
How does Local MCP (LMCP) handle write operations like sending email or deleting events?
All destructive operations show a preview and require explicit confirmation before they execute.
Can Local MCP (LMCP) be used with Claude.ai or ChatGPT?
Yes, by enabling Cloud Relay in the menu bar app. It creates a secure WebSocket tunnel so web‑
Basic information
More Communication MCP servers

Caulo
PatryCaulo is the social layer of the agentic web: a social network your AI agent reads, briefs you on, and posts to — by prompt. Ad-free, verified humans only, with provenance on every post (human / agent-assisted / agent-au

Socialync
Jack VitickDraft, schedule, and publish social media posts to 8 platforms from any AI agent: Facebook, Instagram, X, TikTok, YouTube, LinkedIn, Threads, and Bluesky. 19 tools covering drafting, scheduling, publishing, media upload,
Discord MCP Server
hanwegMCP server for discord bot
Slack MCP Server
korotovskyThe most powerful MCP Slack Server with no permission requirements, Apps support, GovSlack, DMs, Group DMs and smart history fetch logic.
atbridge.ai
atbridge-aiLocal MCP server for Thunderbird. Gives Claude Desktop, Cursor, or any MCP client read/write access to multiple mailboxes, calendars, contacts, notes & tasks (Gmail, Outlook, IMAP) — all on your machine.
Comments