MCP servercom.local-mcp/local-mcp
Mac & Windows: let ChatGPT, Claude & Cursor use your email, calendar, iMessage, Teams, files.
Read more
Mac & Windows: let ChatGPT, Claude & Cursor use your email, calendar, iMessage, Teams, files. Free.Overview
Score?
UNRATED 0.467
of what a free look can see, on 14 looks
Looks
27
last 2 days ago
Tools
204
changed 22 days ago
More info
URL
local-mcp.com/mcp
streamable-http
Says it is
LMCP 3.0.0
protocol 2025-06-18
In the record since
32 days ago
Among servers18,413 with a card
0median 0.606 · this server 0.467 · highest on record 0.8561
Toolsfrom sha256:5c69f9a060…7c1bae · +1 −1 22 days ago
| Tool | Schema |
|---|---|
| complete_omnifocus_task Marks an OmniFocus task as complete by task ID or name. Requires confirm=true. |
input · output |
| complete_reminder Marks a reminder complete in Apple Reminders (Reminders.app). Requires confirm=true. For Microsoft To Do use todo_complete_task instead. |
input · output |
| configure_clients Adds Local MCP to the config of the MCP-capable AI apps installed on this Mac, from LMCP's client catalog (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, Zed, Codex / Chat |
input · output |
| connect_m365_account Connect your Microsoft 365 account. Call once to get a login code, then call again after you've authenticated at microsoft.com/devicelogin to confirm the connection. |
input · output |
| connect_todoist Connect Todoist. For security your API token is entered directly in Local MCP's own settings window — never passed through the AI. Call this to get the instructions, or to check wh |
input · output |
| create_calendar_event Creates an event in the Mac's Calendar app (Calendar.app). Requires title, start_date, end_date. Optionally invite attendees by email (CalDAV/Exchange calendars only), or make it a |
input · output |
| create_draft Saves an email to the Mail.app Drafts folder for the user to review and send manually — it never sends. Compose a new draft with `to`/`subject` and `body` or `html_body`, or save a |
input · output |
| create_email_folder Creates a new mailbox folder in Mail.app. |
input · output |
| create_note Creates a new note in Apple Notes. The body accepts Markdown (headings, bold/italic, bullet/numbered lists, links, inline code) — it's converted to Apple Notes' native formatting. |
input · output |
| create_omnifocus_task Creates a new task in OmniFocus. Requires confirm=true to execute. |
input · output |
| create_referral_invites 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 |
input · output |
| create_reminder Creates a reminder in Reminders.app. |
input · output |
| create_reminder_list Creates a new list in Apple Reminders (Reminders.app). Requires confirm=true. |
input · output |
| daily_brief Returns a single morning briefing combining today's calendar events, overdue and due-today reminders, unread inbox email count + subjects, and — when a location is provided — today |
input · output |
| delete_calendar_event Deletes an event from the Mac's Calendar app (Calendar.app) by ID. Requires confirm=true. For a repeating event, pass span='future' to delete the whole series (this and all followi |
input · output |
| delete_note Deletes a note from Apple Notes, by ID or exact title. Like deleting it in the app, the note goes to "Recently Deleted" and Apple purges it after 30 days — the user can still recov |
input · output |
| delete_reminder Permanently deletes a reminder in Apple Reminders (Reminders.app) by ID. Get the reminder_id from list_reminders. Requires confirm=true. |
input · output |
| delete_reminder_folder Deletes an Apple Reminders list AND all reminders inside it — cannot be undone. Pass the list name (or list_id from get_reminder_folders). Requires confirm=true. |
input · output |
| disconnect_m365_account Disconnect your Microsoft 365 account and remove stored tokens. |
input · output |
| disconnect_todoist Disconnect Todoist and remove the stored API token. |
input · output |
| excel_create Creates a new Excel spreadsheet (.xlsx file) with headers and optional data rows. JSON numbers (integers and decimals) are written as numbers, so SUM() and charts work on them; JSO |
input · output |
| excel_read Reads data from an Excel spreadsheet (.xlsx file). Returns the first row as `headers` and the remaining data rows as `rows` — mirroring excel_create's `headers`/`rows` params, so a |
input · output |
| excel_write_cell Writes a value to a specific cell in an Excel file. Numeric-looking value strings are written as numbers only when they round-trip exactly; otherwise they stay text. Address the ce |
input · output |
| file_list Lists files and folders in a local directory. Defaults to the user's home directory. Returns name, path, type (file/directory), size, and modification date for each item. Sorted: d |
input · output |
| file_read Reads a plain text file from the local filesystem by its absolute path — the primary, default tool for reading a local text file (use this unless the file is a PDF, Word, Excel, or |
input · output |
| file_search Searches for files and folders by name (case-insensitive, partial match) starting from a root directory. Defaults to the home directory. Returns matching items with path, type, and |
input · output |
| file_write Writes text to a local file — create, overwrite, or append. For .txt/.md/.csv/.json/.log and any plain-text or code file. (For Word use word_create, Excel excel_create, PowerPoint |
input · output |
| finder_list Lists files and folders in a directory (Spotlight-free). Lists any folder on this Mac. Credential and identity locations (keychains, ~/.ssh, browser login stores, another user's ho |
input · output |
| finder_search Searches for files by name anywhere on this Mac (uses mdfind/Spotlight); pass path= to scope it to one folder. Credential and identity locations are refused. |
input · output |
| gdrive_delete_file Deletes a file or an empty folder from the synced Google Drive folder — Google Drive for Desktop syncs the deletion to the cloud (the item lands in Drive's trash). Deleting a .gdoc |
input · output |
| gdrive_file_info Metadata for a file/folder in the synced Google Drive: size, dates, type. Cheaper than listing the whole directory. |
input · output |
| gdrive_list_files Lists files and folders in a Google Drive path (the locally-synced folder). Use gdrive_root first for valid roots — 'My Drive' and 'Shared drives' live inside each mount. Returns u |
input · output |
| gdrive_read_file Reads a text file from the synced Google Drive folder (.txt, .md, .csv, .json, code files...). Note: native Google Docs/Sheets/Slides sync as .gdoc/.gsheet pointers, not real files |
input · output |
| gdrive_root Lists the Google Drive folders synced on this Mac (My Drive, Shared drives, per-account mounts). Start here to get valid paths for the other gdrive_* tools. Reads the folder Google |
input · output |
| gdrive_search_files Searches the synced Google Drive folder for files by name (recursive). Returns up to max_results matches (default 50). |
input · output |
| gdrive_write_file 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. |
input · output |
| get_audit_log Returns recent LMCP tool call history from the local audit log. Each entry shows timestamp, tool name, call source (local/cloud), success status, and duration. Useful for GDPR Arti |
input · output |
| get_config Returns the current LMCP configuration (api_key masked). |
input · output |
| get_contact Gets a contact from the Mac's Contacts app (Contacts.app) by name or ID. Pass `name` to look up directly by name (no need to search_contacts first — if several people match it retu |
input · output |
| get_datetime 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 cale |
input · output |
| get_m365_person 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. |
input · output |
| get_reminder_folders Lists the lists (folders) in Apple Reminders (Reminders.app) on this Mac. Every answer carries as_of (when the list snapshot was read) and cache_age_seconds; if cache_age_seconds i |
input · output |
| get_weather 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 |
input · output |
| list_accounts Lists Mail.app email accounts WITH each account's email addresses, server_name and type. type is whatever Mail reports — imap | pop | iCloud | smtp | unknown — and Mail's scripting |
input · output |
| list_calendar_events Lists events from the Mac's Calendar app (Calendar.app, local/iCloud calendars) in a date range, or reads ONE event in full via event_id. List entries preview notes (200 chars, not |
input · output |
| list_calendar_names Lists the calendars in the Mac's Calendar app (Calendar.app, local/iCloud). For Microsoft 365 calendars use the m365 calendar tools instead. |
input · output |
| list_contacts Lists contacts from the macOS Contacts app. Optionally filter by group. |
input · output |
| list_displays Lists connected displays with bounds (global space, top-left origin, points), backing scale_factor, and which is main. display_id is the CGDirectDisplayID — the SAME value list_win |
input · no output |
| list_email_accounts Lists all Mail.app account NAMES (fast — cached, no Mail lock). This is the preferred way to get account names: call it first to discover them, then use list_emails(account=name) t |
input · output |
| list_email_folders Lists the full folder (mailbox) tree for Apple Mail (Mail.app) accounts, including nested subfolders. Use this to discover the exact folder names that move_email(target_mailbox=... |
input · output |
| list_emails 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, sen |
input · output |
| list_m365_people_insights 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. |
input · output |
| list_message_chats 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 |
input · output |
| list_missing_permissions 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 pan |
input · output |
| list_notes 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 a |
input · output |
| list_omnifocus_folders Lists folders in OmniFocus. Folders group related projects (e.g. "Work", "Personal"). Use list_omnifocus_projects to see the projects inside them. |
input · output |
| list_omnifocus_projects 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_o |
input · output |
| list_omnifocus_tags Lists all tags defined in OmniFocus. |
input · output |
| list_omnifocus_tasks Lists tasks from OmniFocus. Filter by project, tag, inbox, due today, or flagged status. |
input · output |
| list_referral_candidates 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 |
input · output |
| list_reminders 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. |
input · output |
| list_windows 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_dis |
input · no output |
| lmcp_doctor added 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 c |
input · output |
| lmcp_install_upgrade 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 |
input · output |
| lmcp_state 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), |
input · output |
| lmcp_upgrade_diagnostics 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 upg |
input · output |
| m365_create_event Create a calendar event in your Microsoft 365 / Outlook calendar. |
input · output |
| m365_delete_event Delete a calendar event from your Microsoft 365 / Outlook calendar by its ID. |
input · output |
| m365_get_contact Get full details of a specific Microsoft 365 contact by ID. Get the ID from m365_list_contacts or m365_search_contacts. |
input · output |
| m365_list_contacts List contacts from your Microsoft 365 / Outlook address book. |
input · output |
| m365_list_emails 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, |
input · output |
| m365_list_events List upcoming calendar events from your Microsoft 365 / Outlook calendar. |
input · output |
| m365_read_email 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 |
input · output |
| m365_reply_email 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 ac |
input · output |
| m365_search_contacts Search contacts in your Microsoft 365 address book by name, email, or company. |
input · output |
| m365_search_emails 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 bod |
input · output |
| m365_send_email 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 actua |
input · output |
| media_probe 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 |
input · no output |
| move_email 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 |
input · output |
| nordvpn_diagnose Run a diagnostic check on NordVPN: installation, login state, connection status, kill switch, and supported protocols. Useful for troubleshooting. |
input · output |
| nordvpn_servers Get recommended NordVPN servers by country or specialty. Uses NordVPN public API (no account needed). Returns server name, hostname, country, city, load %, and supported technologi |
input · output |
| nordvpn_status Check NordVPN connection status: connected/disconnected, auto-connect, snooze, and last known location. Does NOT open NordVPN. |
input · output |
| notion_list_databases Lists Notion databases cached on this Mac with their schema (column names and types). Use notion_read_database to get the rows. |
input · output |
| notion_list_pages 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 p |
input · output |
| notion_list_workspaces 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 member |
input · output |
| notion_open_page 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. |
input · output |
| notion_read_database 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. |
input · output |
| notion_read_page 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 |
input · output |
| notion_search 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 sea |
input · output |
| onedrive_delete_file Deletes a file or empty folder from OneDrive. |
input · output |
| onedrive_file_info 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. |
input · output |
| onedrive_list_files 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 — |
input · output |
| onedrive_move_file Moves or renames a file/folder within OneDrive. |
input · output |
| onedrive_read_file 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 |
input · output |
| onedrive_root 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_fil |
input · output |
| onedrive_search_files 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. |
input · output |
| onedrive_set_scope 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 fol |
input · output |
| onedrive_write_file Writes text content to a file in OneDrive. |
input · output |
| outlook_diagnose 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 t |
input · output |
| pdf_read Reads and extracts text from a PDF document (.pdf file). |
input · output |
| permissions_status Reports the TCC permission state (screen recording, accessibility, microphone) this app needs to capture the screen and drive other apps' UI. Call it before a capture/automation ru |
input · no output |
| ppt_create Creates a PowerPoint presentation (.pptx) at `path` from an array of slides, each {title, bullets:[…]}. Requires confirm=true — called without it, returns a preview of the deck ins |
input · output |
| ppt_read Reads slide text content from a PowerPoint presentation (.pptx file). |
input · output |
| read_email Use this when the user wants the full content of an email that lives in the Mac's Apple Mail (message ID from list_emails/search_emails). For a Microsoft 365 message ID from m365_l |
input · output |
| read_messages Reads messages from an iMessage conversation by chat ID or contact name. |
input · output |
| read_note Reads the full content of a note by name or ID.
CHECK `body_format` BEFORE WRITING THE BODY BACK. "markdown" means the note's formatting (headings, bold/italic, bullet/numbered li |
input · output |
| recipe_delete Use this when the user wants to remove one of THEIR saved recipes/skills (the manifests under ~/.local/share/local-mcp/recipes). Destructive with a preview gate: the first call (wi |
input · output |
| recipe_discover 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-m |
input · no output |
| recipe_export 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 |
input · no output |
| recipe_get Returns the full manifest of a recipe by name. recipe_not_found if unknown. |
input · output |
| recipe_import 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 Mac so recipe_run can use it. Safe: impor |
input · no output |
| recipe_install Installs a community SKILL by id (from recipe_discover) onto this Mac so recipe_run can use it. Safe: installing only stores the skill; when it's later run, any state-changing step |
input · no output |
| recipe_list Lists the user's reusable SKILLS — saved recipes (an ordered sequence of LMCP tool calls with parameters), plus bundled ones — each runnable with recipe_run. Skills turn a repeated |
input · output |
| recipe_run Executes a recipe end to end: binds params, runs each step's tool in order via the registry, persists the run (see recipe_runs), and returns each step's result plus any markers_pat |
input · no output |
| recipe_runs Shows the history of past recipe runs and their results (recorded by recipe_run), so you can reuse, compare, or debug an automation. Pass `name` for one recipe's runs, or omit for |
input · output |
| recipe_save Saves a reusable SKILL — a named recipe (an ordered sequence of LMCP tool calls with parameters) — to this Mac so the user can re-run it anytime with recipe_run. A user would save |
input · no output |
| record_marker Drops a named marker into the active recording's timeline. t_ms is elapsed ms since recording start. Provide bounds (global points, top-left) to zoom toward an element, or omit for |
input · no output |
| rename_reminder_folder Renames an existing Apple Reminders list. Pass the current list name (or list_id from get_reminder_folders) and new_name. Requires confirm=true. |
input · output |
| reply_email Use this when the user wants to reply to an email that lives in the Mac's Apple Mail (message ID from list_emails/search_emails). Supports plain text or HTML body and previews befo |
input · output |
| report_friction 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 |
input · output |
| report_problem Sends a problem report, feature request, or integration request to the LMCP team — for when a user wants to report a bug, ask for a new capability, or request support for an app LM |
input · output |
| request_feature 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. A user would invoke this when th |
input · output |
| run_diagnostics Runs a fast health check of all LMCP integrations on this machine, including the AI apps connected to LMCP (configured, never used, broken command, blocked config). Shows what work |
input · output |
| save_attachment Saves an attachment from an email to disk. Requires confirm=true; without it you get a preview of where the file would be written. Pass account= (and mailbox= if known, both from l |
input · output |
| screen_record_start Begins a screen recording (ScreenCaptureKit) of a display, window, or region. Single active session in v1 — a second start returns already_recording. Returns a session_id used by r |
input · no output |
| screen_record_status Reports whether a recording is active, with the session_id, elapsed_ms, output path, and marker_count. |
input · no output |
| screen_record_stop Stops the active recording, finalizes the .mov, and writes the marker timeline JSON (§6) next to it. Returns the video path, duration, resolution, marker_count and markers_path. Re |
input · no output |
| screenshot_capture Captures a single frame of a display, window, or region to a PNG. Returns {path, resolution (PIXELS), scale_factor, display_id} — scale_factor is the backing scale of the display t |
input · no output |
| search_contacts Searches the Mac's Contacts app (Contacts.app, local/iCloud) by name, email, or phone number. For a Microsoft 365 directory use m365_search_contacts or search_m365_directory instea |
input · output |
| search_emails Use this when the user wants to find specific emails on this Mac (Apple Mail — any account added to Mail.app). Searches subject and sender by default; pass scope="body" or scope="a |
input · output |
| search_m365_directory Search your organization's Microsoft 365 directory for users by name or email. Returns matching users with their title, department, and contact info. |
input · output |
| search_messages Searches iMessage conversations by content, sender name, or date range. |
input · output |
| search_notes Searches Apple Notes by title or content.
Paginated: `limit` is capped at 100 per call, so page with `offset` instead of asking for a bigger limit. The response carries `total` (h |
input · output |
| search_omnifocus_tasks Searches OmniFocus tasks by name or note content. |
input · output |
| send_email Use this when the user wants to send an email from an account configured in the Mac's Apple Mail. Composes and sends via Mail.app; supports plain text or HTML body. For sending fro |
input · output |
| send_message Sends an iMessage via the Mac's Messages.app to a recipient handle (phone number with country code, e.g. +14155551234, or an Apple ID email). This is a write operation: the first c |
input · output |
| setup_install Returns a personalized LMCP install link and setup steps (~30 sec to install). LMCP is a free Mac and Windows app that gives access to Mail/Calendar/Contacts/Notes/Reminders on Mac |
input · output |
| signal_compose_guidance Composes a Signal message and returns step-by-step guidance for the user to send it themselves. This tool does NOT send: Signal Desktop exposes no local send API and LMCP reads its |
input · output |
| signal_connect Connect Signal to Local MCP. Reports whether Signal Desktop is installed and signed in, and tells you exactly what to do next — install Signal, or open it and link your phone. (Sig |
input · output |
| signal_list_chats Lists Signal conversations (chats) with last-active timestamps. Reads from the local Signal Desktop database — no network access required. Returns chat IDs, contact names, and type |
input · output |
| signal_read_messages Reads messages from a specific Signal chat. The chat_id must come from a previous signal_list_chats call. Returns messages in chronological order with sender phone numbers and body |
input · output |
| signal_search_messages Full-text search across locally-cached Signal messages. Only messages Signal Desktop has stored on disk are searched — no network access required. Optionally restrict search to a s |
input · output |
| slack_list_channels Lists channels in a Slack workspace, including public channels, private channels, and direct messages (DMs). Reads from the local IndexedDB cache — only channels that Slack Desktop |
input · output |
| slack_list_workspaces Lists the Slack workspaces (teams) the user has connected in Slack Desktop. Start here for Slack — the workspace id it returns is what slack_list_channels / slack_read_channel_mess |
input · output |
| slack_read_channel_messages Reads recent messages from a Slack channel or DM. Reads from the local IndexedDB cache — only messages that Slack Desktop has synced to disk are available (typically the last few h |
input · output |
| slack_search_messages Searches Slack messages. Optionally restrict to a specific channel_id. A hit whose `text` is the marker "[body not included in this search result]" (with `body_missing: true`) DID |
input · output |
| stocks_get_chart Gets historical price data for a stock symbol. Range: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max. |
input · output |
| stocks_get_quote Gets current stock price and market data for one or more symbols (e.g. AAPL, MSFT, BTC-USD). Uses Yahoo Finance — no API key required. |
input · output |
| stocks_search_symbol Searches for a stock ticker symbol by company name (e.g. "Apple" → AAPL). Start here for Stocks — the symbol it returns is what stocks_get_quote / stocks_get_chart need. |
input · output |
| survey_respond Shows or submits the short in-product survey Local MCP assigned to this machine. Called with NO arguments it returns the pending survey and, in clients that support MCP Apps, rende |
input · output |
| survey_skip Skips the short in-product survey Local MCP showed the user, for now — use this when the user doesn't want to answer right now. They won't be asked again this session. |
input · output |
| teams_call_history Reads Microsoft Teams call & meeting history from the Mac's local Teams cache — no Graph API, no token, no admin consent (the same local store the Teams Calls tab renders). Each ca |
input · output |
| teams_list_channels Lists channels in a Microsoft Teams workspace. Returns channels that are cached in the local Teams client. If the result is empty, the channels have not been loaded into the local |
input · output |
| teams_list_chats Lists Microsoft Teams chats (direct messages and group chats). |
input · output |
| teams_list_teams Lists all the Microsoft Teams the user belongs to. Start here for Teams channels — the team id it returns feeds teams_list_channels / teams_read_channel_messages. (For 1:1 and grou |
input · output |
| teams_read_channel_messages Reads messages from a Microsoft Teams channel. |
input · output |
| teams_read_chat_messages Reads messages from a Teams chat or direct message thread. |
input · output |
| teams_search_messages 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 |
input · output |
| teams_send_channel_message Sends a text message to a Microsoft Teams channel via Graph API. Requires connect_m365_account with Chat.ReadWrite / ChannelMessage.Send permissions. team_id and channel_id must co |
input · output |
| teams_send_message Sends a text message to a Microsoft Teams chat or channel.
Requires Microsoft Teams to be running and signed in (token is read fresh from Teams' local cookies on each call). The ch |
input · output |
| todo_complete_task Marks a Microsoft To Do task as complete (via Reminders sync). |
input · output |
| todo_create_task Creates a task in Microsoft To Do (via Reminders sync). Task appears in To Do automatically once synced. |
input · output |
| todo_get_folders Lists Microsoft To Do task lists. Requires Microsoft account in Reminders sync (System Settings → Internet Accounts → Microsoft Exchange → enable Reminders). |
input · output |
| todo_list_tasks Lists tasks from a Microsoft To Do list (or any Reminders list). Syncs via macOS Reminders. |
input · output |
| todoist_complete_task Mark a Todoist task complete (closes it). Pass the task_id from todoist_list_tasks. |
input · output |
| todoist_create_task 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). |
input · output |
| todoist_list_projects List your Todoist projects (id + name). Use a project's id to scope todoist_list_tasks or todoist_create_task. |
input · output |
| todoist_list_tasks List active (incomplete) Todoist tasks. Optionally scope to a project_id, or pass a Todoist filter (e.g. 'today', 'overdue', '#Work & p1'). |
input · output |
| ui_click 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 c |
input · no output |
| ui_find_element GUI automation — control a native app's interface. Finds an element (button, field, menu…) in an app's accessibility tree by role and/or label. Scope with app_bundle_id or window_i |
input · no output |
| ui_get_element Re-resolves a previously returned element_ref (its bounds/state may have changed). Returns role, label, bounds, focused, value, and `enabled` ONLY when the app publishes AXEnabled |
input · no output |
| ui_keystroke Sends a key combination, e.g. "cmd+shift+5", "return", "cmd+,", "escape". Modifiers: cmd, shift, alt/option, ctrl, fn. The last token is the key. Returns {sent, delivery:"posted_no |
input · no output |
| ui_menu_bar_click Clicks a status-bar (menu bar extra / NSStatusItem) item and optionally follows a nested menu path. Best-effort via the app's AX extras menu bar; apps that render fully custom (non |
input · no output |
| ui_read_tree Returns a COMPACT accessibility tree of a running native app's labeled + interactive elements (buttons, links, text fields, checkboxes, menus…) — the native equivalent of web_read' |
input · output |
| ui_type Types text into the focused control (or focuses element_ref first, then types). Sends real key events so validation/handlers fire. The result is VERIFIED BY READING the control bac |
input · no output |
| ui_wait_for_element 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, neve |
input · no output |
| update_calendar_event Updates an existing event in the Mac's Calendar app (Calendar.app) by ID. Pass only the fields you want to change — unspecified fields are left as-is. Get the event_id from list_ca |
input · output |
| update_note Updates an existing note in Apple Notes. Change the title and/or body (the body accepts Markdown, converted to Apple Notes' native formatting). Find note_id with list_notes or sear |
input · output |
| update_reminder Updates an existing reminder in Reminders.app. Change the title, due date, notes, priority, or move it to another list (list_name). Get reminder_id from list_reminders. Requires co |
input · output |
| video_blur_region 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-lef |
input · no output |
| video_concat 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 + d |
input · no output |
| video_export_gif 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 th |
input · no output |
| video_reframe 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, centere |
input · no output |
| video_trim 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 |
input · no output |
| web_click 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 |
input · no output |
| web_extract 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- |
input · output |
| web_find 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 |
input · output |
| web_login Opens a real browser window on the Mac for the user to sign into a website themselves (you never handle their password). After they log in, the session is saved on this Mac and reu |
input · no output |
| web_navigate Navigates a web session to a URL (using its saved login if any) and returns the resulting URL + page title. Opens the session if it doesn't exist. CHECK `loaded` before reading: wh |
input · output |
| web_read 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 |
input · output |
| web_screenshot 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. |
input · output |
| web_session_close Closes a web-automation session's window and frees it. The saved login STAYS on disk (cookies included), so web_login/web_navigate can reopen it later without signing in again — it |
input · no output |
| web_session_delete Deletes a SAVED web-automation login profile: closes its window if open, erases its cookies and site data from this Mac, and removes it from web_session_list. Use it to clean up a |
input · output |
| web_session_list Lists your web-automation login profiles: every SAVED login (persisted on disk, so web_login/web_navigate can reopen it without signing in again) plus which are currently OPEN. Eac |
input · output |
| web_show 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 CAP |
input · no output |
| web_type 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 submi |
input · no output |
| web_wait_for Waits (polls, not a fixed sleep) until an element appears on the page, or times out. Use for SPA pages that hydrate after load. Prefer `selector` (a CSS selector, e.g. "input[name= |
input · output |
| window_focus Brings a window (by window_id from list_windows) to the front and activates its app. window_not_found if it can't be resolved. Requires Accessibility permission. |
input · no output |
| window_set_frame Pins a window (by window_id) to fixed bounds {x,y,w,h} in global points, so every take is framed identically across runs. Returns the actual post-constraint bounds. Requires Access |
input · no output |
| word_append Appends text to the end of an existing Word (.docx) document at `path`, preserving the document's existing content and formatting. Requires confirm=true — called without it, return |
input · output |
Creates a new Word (.docx) document at `path` with the given text content (and an optional title rendered as the heading). Requires confirm=true — called without it, returns a prev |
— |
Verify it yourself
npx teppi-check https://local-mcp.com/mcpcurl -s https://api.teppi.xyz/v1/trust/mcp/mcs_01M1FZ27E7AEN69BVFNT4HWJ6D