wishlist-mcp
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/mcpConé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
│
▼
PostgresWorkOS 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 |
| lectura |
| lectura |
| lectura |
| lectura |
| lectura |
| lectura |
| lectura |
| lectura |
| escritura |
| escritura |
| escritura |
| escritura |
| destructivo |
| 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.mainuv 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 |
| La API REST de wishlist a la que llamar |
| Emisor de WorkOS AuthKit. Vacío significa que el servidor se niega a arrancar |
| URI canónica. La audiencia de cada token debe coincidir exactamente |
| El servidor devuelve 404 en cualquier otro host |
| 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()eliminaauthorization. Pídelo explícitamente. Sin eso, cada llamada a herramienta informa "sin token de acceso" mientras queinitializeytools/listsiguen 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
/mcphace que Starlette redirija/mcpa/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 afirmahttp://. 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.
TestClientsigue redirecciones por defecto. Pasafollow_redirects=Falsecuando el punto es que una ruta responda directamente.FastMCP compara
Acceptpor subcadena. Responde406 Client must accept application/jsona 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.WildcardAcceptlos especifica antes de que FastMCP los vea.curlsimple 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.
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Cloud-hosted MCP server for durable AI memory
Hosted MCP server to manage a restaurant menu from AI agents - 39 tools over the DuckHub API.
Hosted Web Crawler MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Related MCP Servers
FlicenseAqualityDmaintenanceMCP server for the forme.gifts wishlist app that enables managing wishlists and gifts from Claude Code, Claude Desktop, Cursor, and other MCP clients.1015 npm-- FlicenseNot gradedqualityDmaintenanceA local MCP server providing text utilities, math functions, and a persistent todo list, enabling task automation via natural language in Claude Desktop.-
- FlicenseNot gradedqualityDmaintenanceA 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.-
- AlicenseNot gradedqualityDmaintenanceA 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 npm6MIT