Skip to main content
Glama
wishlist-mcp

wishlist-mcp

by teslakoile

wishlist-mcp

El servidor MCP alojado para wishlist.fit. Permite que Claude, ChatGPT o Codex lean y actualicen tu lista de deseos en tu nombre.

https://mcp.wishlist.fit/mcp

Conéctalo desde app.wishlist.fit/connect, que tiene pasos de configuración específicos para cada cliente. Primero necesitas una cuenta de wishlist; este servidor nunca crea una.

docs/connecting.md tiene la versión más larga: comandos exactos para cada cliente, lo que realmente se ha verificado contra producción, y las dos banderas de Codex que te hacen perder una tarde si las configuras mal.

Qué es

Un servidor de recursos OAuth 2.1 puro frente a la API REST de wishlist. No tiene base de datos ni reglas de negocio. La visibilidad, los límites de tasa y el manejo de invitaciones viven en la API de wishlist, y este servidor los hereda llamando a esa API con el token de acceso del propio usuario.

Esa división es deliberada. La alternativa, un segundo servicio con su propia copia de las reglas, es cómo dos superficies empiezan silenciosamente a discrepar sobre quién puede ver qué.

Claude / ChatGPT / Codex
        │  MCP over HTTP, bearer token
        ▼
   this server ──── verifies the token (issuer + audience)
        │
        │  the same token, forwarded
        ▼
   api.wishlist.fit ──── applies visibility, rate limits, invite rules
        │
        ▼
     Postgres

WorkOS AuthKit es el servidor de autorización. Este servidor no emite nada y no muestra pantalla de consentimiento; solo verifica lo que AuthKit firmó.

Related MCP server: Personal Toolkit MCP Server

Las herramientas

Catorce, una por cada cosa que ya puedes hacer a mano en la aplicación web. La paridad es la regla: sin privilegios exclusivos para agentes, y nada que la propia aplicación no pueda hacer.

Herramienta

Tipo

wishlist_search_people

lectura

wishlist_get_gift_guide

lectura

wishlist_get_profile

lectura

wishlist_get_wishlist

lectura

wishlist_get_my_profile

lectura

wishlist_get_my_wishlist

lectura

wishlist_list_circle

lectura

wishlist_preview_invite

lectura

wishlist_add_item

escritura

wishlist_update_item

escritura

wishlist_update_my_profile

escritura

wishlist_accept_invite

escritura

wishlist_create_invite

destructivo

wishlist_delete_item

destructivo

wishlist_get_gift_guide devuelve el perfil y la lista de deseos de una persona juntos. Es la razón por la que cualquiera conecta este servidor, y sin él el viaje del que regala cuesta tres idas y vueltas.

Las dos herramientas destructivas llevan destructiveHint: true, por lo que los clientes que confirman acciones irreversibles preguntarán primero. Enviar una invitación envía un correo a una persona real y no se puede desenviar. Aceptar una es recíproco: el invitador obtiene acceso a tus campos solo de círculo, así como tú obtienes acceso a los suyos.

Una conexión, todo

No hay ámbitos. WorkOS no puede expresar ámbitos personalizados, por lo que una conexión lleva toda la superficie de herramientas. La protección en las escrituras es conductual más que estructural: las anotaciones anteriores, las descripciones de las herramientas y los límites de tasa que aplica la API.

Ejecutarlo localmente

uv sync
cp .env.example .env      # point it at a local API and the Local WorkOS environment
uv run python -m wishlist_mcp.main
uv run pytest
uv run ruff format --check . && uv run ruff check .

Las pruebas simulan la API de wishlist con respx. Lo que comprueban es el trabajo propio de este servidor: verificar tokens, dar forma a las solicitudes y convertir errores de API en frases sobre las que un modelo pueda actuar. Las reglas en sí pertenecen a la API y se prueban allí.

Configuración

Cada variable tiene el prefijo WISHLIST_MCP_. Ver .env.example.

Variable

Propósito

API_BASE_URL

La API REST de wishlist a la que llamar

AUTHKIT_DOMAIN

Emisor de WorkOS AuthKit. Vacío significa que el servidor se niega a arrancar

RESOURCE_URI

URI canónica. La audiencia de cada token debe coincidir exactamente

HOST

El servidor devuelve 404 en cualquier otro host

API_TIMEOUT

Segundos de espera en la API

RESOURCE_URI debe coincidir con el indicador de recurso configurado en WorkOS carácter por carácter, incluida la ruta /mcp. Una discrepancia es la razón más común por la que un cliente se niega a conectarse.

Cosas que vale la pena saber antes de cambiar esto

Cada una de estas es un error que llegó a producción una vez.

  • get_http_headers() elimina authorization. Pídelo explícitamente. Sin eso, cada llamada a herramienta informa "sin token de acceso" mientras que initialize y tools/list siguen teniendo éxito, porque se responden antes de que se ejecute cualquier cuerpo de herramienta. Un apretón de manos verde no es evidencia de que las herramientas funcionen.

  • La aplicación MCP está montada en la raíz y posee su propia ruta. Montarla en /mcp hace que Starlette redirija /mcp a /mcp/, y la dirección que se entrega a cada cliente no tiene barra final.

  • Se confía en X-Forwarded-Proto. Cloud Run termina TLS, así que sin él cada URL generada afirma http://. Combinado con la redirección anterior, eso una vez significó que un cliente habría enviado su token de portador en claro.

  • El ciclo de vida de FastMCP está encadenado al de la aplicación. Montar una aplicación ASGI no inicia su ciclo de vida, y sin él cada llamada a herramienta falla con "Task group is not initialized" mientras que las pruebas unitarias aún pasan.

  • TestClient sigue redirecciones por defecto. Pasa follow_redirects=False cuando el punto es que una ruta responda directamente.

  • FastMCP compara Accept por subcadena. Responde 406 Client must accept application/json a un cliente que envía */*, lo cual ya hace, y a uno que no envía ninguna cabecera, lo cual según RFC 9110 también hace. WildcardAccept los especifica antes de que FastMCP los vea. curl simple envía */*, así que esto fue lo primero que cualquiera encontró.

Despliegue

Cloud Run, asia-southeast1, en el mismo proyecto que el resto de wishlist. main se despliega al hacer push. La infraestructura vive en wishlist-infrastructure.

Licencia

MIT. Ver LICENSE.

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    MCP server for the forme.gifts wishlist app that enables managing wishlists and gifts from Claude Code, Claude Desktop, Cursor, and other MCP clients.
    10
    15 npm
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    A custom MCP server that turns Claude into an agentic shopping assistant for searching products, comparing options, managing a cart, and checking out with built-in guardrails for safe autonomous commerce.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A production-ready MCP server that gives an LLM agent standalone-equivalent control over a Mineflayer Minecraft bot — movement, mining, crafting, inventory, combat, containers, chat, and much more — exposed as 110 strongly-typed tools across 23 groups, with full bot lifecycle management and dual (poll + push) event streaming.
    141 npm
    6
    MIT