MCP (Modelo de Contexto de Protocolo)

SSE

by MiguelAngelGutierrezMaya

274 downloads Not rated yet

About

This project build a local mcp server to fetch weather

Details

Transport
SSE

Explore

- TypeScript with strict mode and advanced type checking
- ESLint with flat config and Prettier formatting
- Zod schema validation library
- Weather query tools via MCP server
- Modern package management with pnpm
- Clear error handling and URL safety

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name MCP (Modelo de Contexto de Protocolo)
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

El proyecto está configurado con las siguientes herramientas para asegurar la calidad del código:

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, Outlook/Teams/OneDrive/Office on Windows, and 100+ tools on the user's machine (data stays local). A user would invoke this to install LMCP or reconnect it. Pass os ("macos" or "windows" for real install steps; linux/ios/android go to a waitlist). Optional: email, step, issue.

complete_omnifocus_task

Marks an OmniFocus task as complete by task ID or name. Requires confirm=true.

complete_reminder

Marks a reminder complete in Apple Reminders (Reminders.app). Requires confirm=true. For Microsoft To Do use todo_complete_task instead.

configure_clients

Adds Local MCP to the config of installed MCP-capable AI clients on this Mac (Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, Zed) so they can use LMCP's tools — no manual JSON editing. Read-only PREVIEW unless confirm:true. Optionally pass a single `client` id to configure just that one. Returns which clients it set up, which already had Local MCP, which aren't installed, and the restart step for each. Pair with list_missing_permissions for fully agent-driven setup.

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.

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 whether Todoist is already connected.

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 repeating event with `recurrence` (daily/weekly/monthly/yearly). For Microsoft 365 use m365_create_event instead.

create_draft

Saves an email to the Mail.app Drafts folder for the user to review and send manually — never sends. Composes a new draft (pass `to`/`subject`/`body`), or a reply draft (pass `reply_to_message_id` plus `body`). A reply draft's response includes `threaded`: true means the saved draft was read back and its headers reference the source message (it will appear inside the conversation); false means it saved WITHOUT threading headers (relay the warning to the user); "unconfirmed" means it could not…

create_email_folder

Creates a new mailbox folder in Mail.app.

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. Requires confirm=true to execute.

create_omnifocus_task

Creates a new task in OmniFocus. Requires confirm=true to execute.

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

create_reminder

Creates a reminder in Reminders.app.

create_reminder_list

Creates a new list in Apple Reminders (Reminders.app). Requires confirm=true.

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's weather. Perfect for starting each day: one call gives you everything on your plate.

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 following occurrences); the default deletes only the single occurrence. For Microsoft 365 use m365_delete_event instead.

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 recover it there. Requires confirm=true. The result is VERIFIED: the tool re-reads the note after deleting and reports the deletion as unverified if it is still where it was, so a success here means the note is really gone from list_notes/search_notes/read_note. Find note_id with list_notes or search_notes.

delete_reminder

Permanently deletes a reminder in Apple Reminders (Reminders.app) by ID. Get the reminder_id from list_reminders. Requires confirm=true.

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.

disconnect_m365_account

Disconnect your Microsoft 365 account and remove stored tokens.

disconnect_todoist

Disconnect Todoist and remove the stored API token.

excel_create

Creates a new Excel spreadsheet (.xlsx file) with headers and optional data rows. Values that are plain numbers are written as numbers, so SUM() and charts work on them; anything else stays text: "007" or "1.50" (whose zeros would be lost), and any run of more than 10 digits without a decimal point, which is an identifier like a CUIT, CBU or phone number rather than a quantity.

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 read→create round-trip needs no manual row-0 handling.

excel_write_cell

Writes a value to a specific cell in an Excel file. Address the cell either with `cell` in A1 notation (e.g. "B2") or with `row`+`column` as 1-based integers.

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: directories first, then files, both alphabetically.

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 PowerPoint document, which have their own readers). The path must be inside an allowed folder — the same allowlist as file_write (the home directory by default; extend via Settings → Advanced → Allowed folders). A path outside the allowlist returns an actionable 'access denied' naming the allowed folders. Supports …

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

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 ppt_create.) The path must be inside an allowed folder — the same allowlist as file_read (home directory by default; extend via Advanced Settings → Allowed folders). Overwriting an existing file requires confirm=true (the first call returns a preview instead); append=true adds to the end and never needs confirm. Mis…

finder_list

Lists files and folders in a directory (Spotlight-free). The path must be inside an allowed folder — the same allowlist as file_read/file_write (the home directory by default; extend via Settings → Advanced → Allowed folders). A path outside the allowlist returns an actionable 'access denied' naming the allowed folders.

finder_search

Searches for files by name within the allowlist (uses mdfind/Spotlight). Scoped to the allowed folders — the home directory by default (extend via Settings → Advanced → Allowed folders); pass path= to search a specific allowed folder. A path outside the allowlist returns an actionable 'access denied'.

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/.gsheet/.gslides pointer removes the real Google Doc/Sheet/Slides. Never deletes a folder that still has contents. First call returns a preview of what was actually found at that path; pass confirm=true to delete.

gdrive_file_info

Metadata for a file/folder in the synced Google Drive: size, dates, type. Cheaper than listing the whole directory.

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 up to `limit` entries (default 1000).

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 — export them from Drive or read Office/PDF copies instead. Auto-detects UTF-8 with Latin-1/CP1252 fallback. For files outside Google Drive, use file_read.

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 Drive for Desktop already syncs — no Google API, no OAuth.

gdrive_search_files

Searches the synced Google Drive folder for files by name (recursive). Returns up to max_results matches (default 50).

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.

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 Article 30 compliance reporting and debugging.

get_config

Returns the current LMCP configuration (api_key masked).

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 returns a compact list to choose from), or `contact_id` for an exact lookup. For Microsoft 365 use m365_get_contact instead.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "mcp (modelo de contexto de protocolo)": {
            "local-mcp": {
                "command": "npx",
                "args": [
                    "@modelcontextprotocol/inspector",
                    "npx",
                    "-y",
                    "tsx",
                    "src/main.ts"
                ]
            }
        }
    }
}

McpServers

{
    "local-mcp": {
        "command": "npx",
        "args": [
            "@modelcontextprotocol/inspector",
            "npx",
            "-y",
            "tsx",
            "src/main.ts"
        ]
    }
}

Este proyecto es una implementación del Modelo de Contexto de Protocolo (MCP) siguiendo buenas prácticas de desarrollo.

Tecnologías y herramientas

- Node.js - Entorno de ejecución
- TypeScript - Lenguaje de programación con tipado estático
- pnpm - Gestor de paquetes
- ESLint - Linter para identificar problemas en el código
- Prettier - Formateador de código
- Zod - Biblioteca de validación de esquemas

Configuración de calidad de código

El proyecto está configurado con las siguientes herramientas para asegurar la calidad del código:

TypeScript

El archivo tsconfig.json incluye configuraciones para:
- Modos estrictos habilitados
- Verificación de tipos avanzada
- Soporte para módulos ES

ESLint

La configuración de ESLint en eslint.config.mjs usa el nuevo formato de configuración plana (Flat Config) e incluye:
- Reglas recomendadas para JavaScript y TypeScript
- Plugin de integración con Prettier
- Reglas específicas para buenas prácticas:
- No usar variables sin usar
- Preferir const sobre let cuando es posible
- Siempre usar bloques en estructuras de control
- Usar comparación estricta (===)

Prettier

La configuración en .prettierrc define:
- Uso de comillas simples
- Punto y coma al final de las declaraciones
- Longitud de línea máxima
- Otras configuraciones para un formato consistente

Comandos disponibles

```bash

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.