cosmos-mcp

cosmos-mcp

MCP server exposing public NASA APIs (APOD, Mars rover photos, near-Earth objects, Earth imagery) with tools, a resource, and a prompt, providing visual Markdown responses and a Spanish-language space briefing skill.

Category
访问服务器

README

cosmos-mcp

Servidor MCP (Model Context Protocol) en TypeScript que expone APIs públicas de la NASA para Cursor. Incluye tools, un resource, un prompt MCP y una skill propia (briefing-espacial), con respuestas visuales y demo reproducible.

Demo

Pedile a Cursor Armame un briefing espacial de hoy y la skill combina la imagen astronómica del día con los asteroides cercanos.

<p align="center"> <img src="docs/demo-resultado.png" alt="Resultado del briefing espacial en Cursor" width="600"> </p>

Por qué

En vez de copiar/pegar URLs de api.nasa.gov, el agente puede pedir en español cosas como “mostrame la foto astronómica de hoy” o “armame un briefing espacial” y resolverlo con tools tipadas, validadas y con manejo de errores.

Vista general

Cosmos MCP: arquitectura, capacidades y briefing visual

Esta lámina resume el recorrido completo y puede usarse directamente en la presentación. El diagrama siguiente se mantiene como versión técnica y editable.

Arquitectura

flowchart LR
  User[Usuario] -->|lenguaje natural| Cursor[Cursor Agent]
  Skill[briefing-espacial] -.-> Cursor
  Cursor -->|stdio JSON-RPC| MCP[cosmos-mcp]
  MCP --> Tools[Tools]
  MCP --> Resource[Resource APOD]
  MCP --> Prompt[Prompt briefing]
  Tools --> NASA[api.nasa.gov]
  Resource --> NASA
  MCP -->|Markdown + datos estructurados| Cursor

Detalle: docs/architecture-diagram.md.

Capacidades MCP

Tools

  • apod_por_fecha: Astronomy Picture of the Day (imagen o video).
  • fotos_marte: fotos de Curiosity, Opportunity, Spirit o Perseverance.
  • asteroides_cercanos: NEOs en un rango de hasta 7 días, ordenados por cercanía.
  • imagen_tierra: imágenes EPIC de la Tierra desde DSCOVR.

Todas están anotadas como operaciones de solo lectura y devuelven:

  • Markdown visual: imágenes, links, tablas y contexto listos para renderizar.
  • structuredContent: los mismos datos en estructura estable para el agente, tests u otros clientes.

Resource

cosmos://apod/today publica la APOD actual como text/markdown. Demuestra que MCP también puede ofrecer contenido direccionable, no solo ejecutar tools.

Prompt

briefing-del-dia publica una plantilla MCP reutilizable que guía al agente para combinar APOD + NeoWs, aplicar el disclaimer correcto y producir un boletín en español.

Requisitos

  • Node.js 20+
  • (Opcional) API key gratis en api.nasa.gov. Sin key se usa DEMO_KEY (límites más bajos).

Instalación

cd mcp-Boost   # o la ruta de este repo
npm install
cp .env.example .env   # editá NASA_API_KEY si tenés una

Scripts útiles:

npm run dev      # server MCP por stdio (tsx)
npm run build && npm start
npm test
npm run lint

Conectar a Cursor

  1. Abrí Cursor Settings → MCP (o editá tu mcp.json).
  2. Agregá el server (reemplazá la ruta absoluta):
{
  "mcpServers": {
    "cosmos-mcp": {
      "command": "npx",
      "args": ["tsx", "/ABS/PATH/mcp-Boost/src/server.ts"],
      "env": {
        "NASA_API_KEY": "DEMO_KEY"
      }
    }
  }
}

Alternativa con build:

{
  "mcpServers": {
    "cosmos-mcp": {
      "command": "node",
      "args": ["/ABS/PATH/mcp-Boost/dist/server.js"],
      "env": {
        "NASA_API_KEY": "DEMO_KEY"
      }
    }
  }
}
  1. Reiniciá el MCP / Cursor y verificá que aparezcan 4 tools, 1 resource y 1 prompt.

La variable definida en mcp.json tiene prioridad sobre .env. Reemplazá DEMO_KEY por tu key o ejecutá el comando con el directorio del proyecto como working directory para que dotenv lea .env.

Probar con MCP Inspector

npx @modelcontextprotocol/inspector npx tsx src/server.ts

Desde la UI del Inspector podés listar tools y llamarlas sin abrir el chat.

El Inspector permite mostrar en clase las tres primitives sin depender de que el agente decida invocarlas: tools/list, resources/list y prompts/list.

Skill: briefing-espacial

Skill de proyecto en .cursor/skills/briefing-espacial/SKILL.md.

Al abrir este repo en Cursor, el agente puede usarla cuando pidas un briefing o resumen espacial: combina apod_por_fecha + asteroides_cercanos y responde en español rioplatense, tono divulgativo.

Demo — prompts para la clase

  1. ¿Cuál es la imagen astronómica del día (APOD)?
  2. Mostrame 5 fotos recientes del rover Perseverance.
  3. ¿Hay asteroides cercanos a la Tierra entre hoy y dentro de 3 días?
  4. Quiero ver la Tierra desde el espacio (EPIC) del 2024-06-01.
  5. Armame un briefing espacial de hoy. ← ejercita la skill

Guion visual recomendado (3 minutos)

  1. Mostrar el diagrama y explicar que Cursor es el cliente MCP, no la fuente de datos.
  2. Abrir MCP Inspector y listar las 4 tools, el resource y el prompt.
  3. Ejecutar apod_por_fecha: señalar input Zod, annotations de solo lectura, imagen Markdown y structuredContent.
  4. En Cursor, pedir Armame un briefing espacial de hoy para mostrar cómo la skill orquesta dos tools.
  5. Cerrar con el canvas visual del proyecto y el flujo completo.
sequenceDiagram
  participant U as Usuario
  participant C as Cursor
  participant M as Cosmos MCP
  participant N as NASA API
  U->>C: "Armame un briefing espacial"
  C->>M: apod_por_fecha
  M->>N: GET /planetary/apod
  N-->>M: APOD
  M-->>C: Markdown + structuredContent
  C->>M: asteroides_cercanos
  M->>N: GET /neo/rest/v1/feed
  N-->>M: NEOs
  M-->>C: Markdown + structuredContent
  C-->>U: Briefing visual y contextualizado

Qué contar técnicamente

  • MCP desacopla al agente de la implementación de NASA.
  • Zod valida argumentos antes de llamar a una API externa.
  • Annotations informan al host que las tools son de solo lectura.
  • Resources y prompts muestran que MCP es más amplio que function calling.
  • La skill orquesta herramientas y aporta criterios editoriales sin duplicar acceso a datos.

Tests

Los unit tests mockean fetch (no pegan a la API real):

npm test

Estructura

src/
  server.ts           # entrypoint MCP (stdio)
  nasaClient.ts       # HTTP + rate limit / errores
  types.ts
  tools/              # apod, mars, neo, epic
tests/
.cursor/skills/briefing-espacial/
docs/

Notas

  • Los logs del server van a stderr para no romper el transporte stdio.
  • "potencialmente peligroso" en NeoWs es una categoría técnica de la NASA, no una alerta de impacto.
  • Para una entrega pública, agregá al README una captura del Inspector y otra del briefing renderizado, sin exponer la API key.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选