galaxy-maps-mcp

galaxy-maps-mcp

Enables validation, saving, publishing, and inspection of Galaxy Maps courses from local JSON files via Firebase integration.

Category
Visit Server

README

galaxy-maps-mcp

MCP stdio server for validating, saving, publishing, and inspecting Galaxy Maps courses from local JSON files.

Setup

Install dependencies with Bun when you are ready to run the server:

bun install

Runtime environment is read lazily, so the server can start without credentials. Firebase credentials are only required for tools that call Firebase.

export GALAXY_MAPS_FIREBASE_API_KEY="..."
export GALAXY_MAPS_EMAIL="..."
export GALAXY_MAPS_PASSWORD="..."

Optional overrides:

export GALAXY_MAPS_PROJECT_ID="galaxy-maps-ac367"
export GALAXY_MAPS_REGION="us-central1"

The Firebase API key value already lives in the platform repo .env as VITE_FIREBASE_API_KEY; reuse that value here as GALAXY_MAPS_FIREBASE_API_KEY.

Claude MCP Registration

Add this to ~/.claude.json:

{
  "mcpServers": {
    "galaxy-maps-mcp": {
      "command": "bun",
      "args": ["/home/ian/code/galaxy-maps-mcp/src/server.ts"],
      "env": {
        "GALAXY_MAPS_FIREBASE_API_KEY": "your-api-key",
        "GALAXY_MAPS_EMAIL": "your-email",
        "GALAXY_MAPS_PASSWORD": "your-password"
      }
    }
  }
}

Tools

validate_galaxy_map

Input:

{ "jsonPath": "/absolute/path/to/galaxy-map.json" }

Reads a local JSON file with Bun.file(path).text(). Accepts either a bare Galaxy Map object or a wrapped object:

{ "galaxyMap": { "...": "..." }, "mapLayout": "zigzag" }

Validation checks title, description, non-empty stars, non-empty planets, and required planet mission content. The report includes star count, planet count, total payload bytes, per-planet mission field byte sizes, and warnings for large payloads. It never prints mission HTML or the full map.

save_galaxy_map

Input:

{ "jsonPath": "/absolute/path/to/galaxy-map.json", "mapLayout": "zigzag" }

mapLayout is optional and may be "zigzag" or "spiral". The selected layout is explicit input first, then wrapped file mapLayout, then "zigzag".

Flow:

  1. Validate the local file.
  2. Sign in with Firebase Auth REST.
  3. POST to https://{GALAXY_MAPS_REGION}-{GALAXY_MAPS_PROJECT_ID}.cloudfunctions.net/saveGalaxyMap.
  4. Return course ID, total planets, layout, and https://app.galaxymaps.io/galaxy/{courseId}.

publish_course

Input:

{
  "courseId": "course-id",
  "visibility": "unlisted",
  "presentationOnly": false
}

visibility defaults to "unlisted" and may be "private", "unlisted", or "public". presentationOnly defaults to false.

Behavior:

  • Public visibility patches the course to status: "submitted" and visibility: "public", then stops because admin review is required.
  • Private or unlisted visibility publishes the course.
  • If the course has no cohort and presentationOnly is false, the tool creates a default Squad cohort and attaches it to the course.
  • If presentationOnly is true, the course is patched with presentationOnly: true and public: false.

get_course_status

Input:

{ "courseId": "course-id" }

Reads courses/{courseId} from Firestore REST and returns title, status, visibility, public flag, cohort, topic total, task total, and course URL.

Development

Run a TypeScript check:

bunx tsc --noEmit

Run the local handshake smoke test after dependencies are installed:

bun test/handshake.ts

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured