Lune
Conocimiento y herramientas de investigación científica
Documentación
@retrograde-labs/lune-mcp-server
El servidor MCP oficial de Lune Research. Permite que un agente de IA busque el texto completo de artículos de conferencias de primer nivel, siga citas y consulte orientación seleccionada sobre metodología de investigación, para que sus respuestas puedan citar el título, los autores y la conferencia de un artículo en lugar de depender de la memoria.
Instalación
Alojado (recomendado). Añade esta URL a cualquier cliente que hable Streamable HTTP:
https://mcp.luneresearch.com
Un cliente compatible con la autorización MCP te inicia sesión a través del navegador, por lo que no hay ningún token que pegar o rotar. En Claude Code:
claude mcp add --transport http --scope user lune https://mcp.luneresearch.com
Luego ejecuta /mcp dentro de Claude Code, elige lune e inicia sesión a través de la
pestaña del navegador que se abre.
Un cliente sin soporte OAuth envía una clave de acceso de Lune en el encabezado
Authorization en su lugar. Crea una en la
página de Credenciales:
abre API keys y haz clic en New key. Esta solicitud lista las herramientas, lo que
la convierte en una forma rápida de verificar una clave. Lee la clave de LUNE_API_KEY, configurada desde
tu gestor de contraseñas o desde un archivo que solo tú puedas leer:
printf 'Authorization: Bearer %s\n' "$LUNE_API_KEY" |
curl https://mcp.luneresearch.com \
-H @- \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
La clave llega a curl a través de su entrada, por lo que permanece fuera de tu historial de shell y de la lista de procesos.
Las notas de configuración para aplicaciones específicas están en la documentación: apps web de IA como ChatGPT, Claude y Perplexity, y agentes de IA locales como Cursor, VS Code y Codex.
stdio local. Para clientes que solo hablan stdio, ejecuta el paquete directamente y entrégale una clave de acceso. Necesita Node.js 22 o más reciente:
{
"mcpServers": {
"lune": {
"command": "npx",
"args": ["-y", "@retrograde-labs/lune-mcp-server"],
"env": { "LUNE_API_KEY": "lune_your_access_key" }
}
}
}
El servidor lee LUNE_API_KEY del entorno y escribe diagnósticos en
stderr, nunca en stdout, para que el marco JSON-RPC permanezca intacto.
Herramientas
Doce herramientas. La mayoría sigue un prefijo: search_* encuentra candidatos, get_*
recupera algo de lo que ya tienes una referencia, y list_* navega. El
endpoint alojado también ofrece get_more_tools, que un agente llama para informar a Lune
sobre una capacidad que necesitaba y no pudo encontrar. El paquete stdio no
lo incluye.
Encontrar artículos
| Herramienta | Qué hace |
|---|---|
search_papers | Búsqueda híbrida vectorial + BM25 sobre el corpus |
search_papers_many | Muchas variantes de consulta en una sola llamada, fusionadas por fusión de rango recíproco |
search_related_papers | Los vecinos más cercanos de un artículo que ya tienes |
list_conferences | Conferencias indexadas, opcionalmente filtradas por categoría |
get_conference_papers | Los artículos de una conferencia, paginados |
Leerlos
| Herramienta | Qué hace |
|---|---|
get_paper_fulltext | Texto completo analizado, como markdown o JSON |
get_paper_citations | El grafo de citas, en cualquier dirección |
Trabajar con muchos a la vez
| Herramienta | Qué hace |
|---|---|
extract_from_papers | Extrae los mismos campos estructurados de un conjunto de artículos |
verify_claims | Verifica cada afirmación contra el corpus, con una cita textual cuando existe |
gather_evidence | Evalúa si la evidencia es suficiente y nombra lo que falta |
Metodología de investigación
| Herramienta | Qué hace |
|---|---|
search_research_guidance | El corpus seleccionado de metodología y reproducibilidad |
get_research_guidance_doc | El texto completo de un documento de orientación |
Prompts
Seis prompts, que muchos clientes MCP listan como comandos de barra. Cada uno entrega al agente un resumen para una tarea de investigación común y nombra las herramientas a llamar, de modo que la tarea se resuelve con un solo comando en lugar de un plan que debas detallar.
| Prompt | Qué hace | Argumentos |
|---|---|---|
/literature_review | Examina un tema: los temas principales, el trabajo fundacional y reciente, y las brechas abiertas | topic (+ venues, since_year) |
/find_related_work | Lee tu resumen y luego encuentra el trabajo previo para citar y del que diferenciarte | abstract (+ venues) |
/compare_papers | Construye una tabla comparativa entre artículos, leída de su texto completo | topic (+ columns) |
/verify_draft | Verifica cada afirmación en un borrador, con una cita textual cuando existe | draft |
/trace_citations | Traza el linaje de un artículo: en qué se apoya y qué se apoya en él | paper |
/research_methodology | Asesoramiento fundamentado sobre diseño experimental, ablaciones, evaluación, réplicas, conferencias | question |
Autenticación
El endpoint alojado acepta una credencial en cada solicitud, como
Authorization: Bearer <credential>. El paquete stdio lee una clave de acceso
de LUNE_API_KEY en su lugar. La credencial es una de las siguientes:
- Un token de acceso OAuth, que un cliente MCP obtiene al iniciar sesión a través del navegador. Solo endpoint alojado.
- Una clave de acceso de Lune (
lune_...), creada en la página de Credenciales en API keys. Funciona en ambos transportes.
Una conexión OAuth siempre factura al equipo personal de la persona que inició sesión, usando su plan, asignación diaria y créditos. Una clave de acceso factura al equipo en el que fue creada, por lo que una clave es cómo el plan de un equipo compartido paga por un agente. Cómo se cuentan las solicitudes está en cuotas y facturación.
OAuth para desarrolladores de conectores
La mayoría de los clientes MCP ejecutan este flujo por su cuenta. Si estás construyendo un
conector, los detalles siguen a continuación. auth.md recorre
cada solicitud con curl.
Un POST https://mcp.luneresearch.com no autenticado responde a 401 con este
desafío:
WWW-Authenticate: Bearer resource_metadata="https://mcp.luneresearch.com/.well-known/oauth-protected-resource", scope="papers:read guidance:read account:read"
El documento de recurso protegido al que apunta nombra el servidor de autorización en
authorization_servers[0]. Ese servidor es https://api.luneresearch.com, el
servidor de autorización para conectores MCP. Publica metadatos RFC 8414 en
https://api.luneresearch.com/.well-known/oauth-authorization-server y no tiene
documento de descubrimiento de OpenID Connect.
| Endpoint | URL |
|---|---|
| Emisor | https://api.luneresearch.com |
| Autorización | https://api.luneresearch.com/oauth/authorize |
| Token | https://api.luneresearch.com/oauth/token |
| Registro de cliente (RFC 7591) | https://api.luneresearch.com/oauth/register |
| Revocación (RFC 7009) | https://api.luneresearch.com/oauth/revoke |
| JWKS | https://api.luneresearch.com/.well-known/jwks.json |
| Metadatos del servidor de autorización | https://api.luneresearch.com/.well-known/oauth-authorization-server |
| Metadatos del recurso protegido | https://mcp.luneresearch.com/.well-known/oauth-protected-resource |
El flujo:
-
Registra un cliente. El registro dinámico de clientes es la única forma de obtener un
client_id; no hay ID de cliente pre-registrados. Los clientes son públicos, por lo que no hay secreto y el método de autenticación del endpoint de token esnone. Una plataforma que no puede registrarse sobre la marcha puede hacerlo una vez manualmente y conservar elclient_id:curl -X POST https://api.luneresearch.com/oauth/register \ -H "Content-Type: application/json" \ -d '{"client_name": "My connector", "redirect_uris": ["https://example.com/oauth/callback"]}' -
Envía a la persona al endpoint de autorización con
response_type=code,client_id,redirect_uri,scope,state,code_challenge,code_challenge_method=S256yresource. PKCE conS256es obligatorio, y también lo sonstateyscope. -
Maneja la devolución de llamada. Después de que la persona inicie sesión y apruebe, Lune redirige a tu
redirect_uriconcode,stateyiss=https://api.luneresearch.com(RFC 9207). Verifica questatesea el que enviaste y queisssea igual al emisor. Si la persona rechaza, la redirección llevaerror=access_deniedcon el mismostateyiss. -
Intercambia el código. Publica
grant_type=authorization_code,code,redirect_uri,client_id,code_verifieryresourceal endpoint de token comoapplication/x-www-form-urlencoded. -
Llama al servidor con
Authorization: Bearer <access_token>. Una vez que el token expire, el servidor responde a401conerror="invalid_token". Para actualizar, publicagrant_type=refresh_tokenyrefresh_tokenal endpoint de token.
Requisitos y límites:
- Solicita exactamente
papers:read guidance:read account:read, los alcances que el documento de recurso protegido lista. Juntos cubren todas las herramientas. - Envía
resource=https://mcp.luneresearch.comtanto en la solicitud de autorización como en la solicitud de token. Sin él, el token de acceso está vinculado a tuclient_iden lugar del servidor, y las solicitudes en la versión de protocolo 2026-07-28 fallan con401 invalid_token, que la persona ve como un bucle de inicio de sesión. Las versiones de protocolo más antiguas aún aceptan dicho token, pero solo por un período de transición. - Las URI de redirección deben usar
https,httpen127.0.0.1,[::1]olocalhost, o un esquema de uso privado comocursor://, y no deben contener un fragmento. La solicitud de autorización debe repetir una URI registrada exactamente, incluido el puerto. - Un código de autorización expira después de 10 minutos y funciona una sola vez; un intercambio
fallido lo consume. Los tokens de acceso son JWT RS256 que expiran después de una hora
(
expires_in: 3600). - Cada actualización devuelve un nuevo token de actualización. Guárdalo y descarta el anterior. Cada token de actualización es válido durante 90 días, por lo que una conexión en uso regular no expira. Presentar un token de actualización más de 30 segundos después de haber sido reemplazado revoca todos los tokens de actualización en esa cadena, y la persona tiene que conectarse nuevamente. Los tokens de acceso ya emitidos siguen funcionando hasta que expiren.
- Para desconectar, publica
token=<refresh_token>(codificado en formulario) al endpoint de revocación.
Alcances
papers:read cubre el corpus de artículos, texto completo y citas, guidance:read
cubre el corpus de orientación de investigación, y account:read lee tu identidad y
uso.
Una credencial que carece del alcance que una herramienta necesita falla de manera diferente según
su tipo. Un token OAuth recibe HTTP 403 con un desafío que nombra solo el
alcance faltante, para que el cliente pueda pedirle a la persona que lo apruebe:
WWW-Authenticate: Bearer error="insufficient_scope", error_description="The papers:read scope is required for this request.", resource_metadata="https://mcp.luneresearch.com/.well-known/oauth-protected-resource", scope="papers:read"
Una clave de acceso recibe un error de herramienta que nombra el alcance faltante y le dice al agente que te pida crear una clave que lo incluya.
Revocar acceso
Revoca claves de acceso en API keys y aplicaciones conectadas en OAuth clients en la página de Credenciales. Las conexiones OAuth se listan bajo tu equipo personal, así que selecciónalo primero. Una clave de acceso revocada deja de funcionar en menos de cinco minutos. Revocar una aplicación cancela sus tokens de actualización de inmediato, pero el token de acceso que ya tiene sigue funcionando hasta que expire, como máximo una hora después.
Transportes
| Transporte | Dónde | Versiones de protocolo MCP |
|---|---|---|
| Streamable HTTP | https://mcp.luneresearch.com | 2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07 |
| stdio | npx -y @retrograde-labs/lune-mcp-server | 2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07 |
| Acerca del endpoint alojado: |
/mcpy/v1/mcptambién responden, para instalaciones antiguas. El descubrimiento sigue la ruta, por lo que un cliente en/mcpse dirige ahttps://mcp.luneresearch.com/.well-known/oauth-protected-resource/mcp. Un token vinculado a cualquiera de las tres URL funciona en las tres.- Las solicitudes no tienen estado. Cada una lleva su propia credencial y no hay ID de sesión, por lo que un cliente que ha estado inactivo durante horas sigue funcionando sin necesidad de reinicializarse.
- El tráfico MCP es solo
POST.GETyDELETEdevuelven405, por lo que no hay flujo SSE que abrir, y el servidor no envía notificaciones propias. Un navegador que abre la URL desnuda es redirigido a la documentación en su lugar. - Envía
Accept: application/json, text/event-stream. En versiones de protocolo más antiguas, una solicitud que omita cualquiera de los dos tipos recibe406. - Una solicitud con un encabezado
Originrecibe403a menos que ese origen esté en la lista de permitidos del servidor, así que conéctate desde un servidor o un cliente nativo en lugar de desde una página web. - Los lotes JSON-RPC, que solo usan versiones de protocolo más antiguas, pueden contener hasta 50 mensajes. El cuerpo de una solicitud puede tener hasta 1 MB.
- El manifiesto del Registro se sirve en
https://mcp.luneresearch.com/.well-known/mcp/server.json.
Enlaces
- Detalles de conexión
- Aplicaciones de IA web
- Agentes de IA locales
- Guía de autenticación para agentes (auth.md)
- Cuotas y facturación
- Solución de problemas
Soporte
Los informes de errores y las solicitudes de funciones van al rastreador de problemas. Para preguntas sobre cuentas, envía un correo a support@luneresearch.com. Para informar un problema de seguridad, sigue SECURITY.md.
Licencia
MIT