Ai Star Chart MCP Server — for Claude AI
Just tell Claude a coordinate, and a star chart appears in your browser with an X mark on the target.
Part of the LUNA family — the telescope control MCP server is here
⬇ Download the latest release (Windows, no Node.js required)
This repository ships as a pre-built binary release — there's no source tree to clone here. Grab the zip from the Releases page and follow Getting Started below.
LUNA AiStarChartMCP is a star chart display tool that runs as a streamableHTTP MCP server.
The AI (Claude) itself never generates or receives images. It only instructs the "view", "X mark coordinates", and "message" through tool calls — the actual rendering is done entirely in the browser, by d3-celestial.
You ──→ Claude AI ──→ LUNA AiStarChartMCP (MCP) ──→ updates state
│
broadcast via SSE
▼
the star chart changes in your browser
Because the same state is broadcast (SSE) to every connected browser tab and device at once, if you tell Claude something from your phone, a large star chart on your PC follows along automatically.
Combined with LUNA itself and the LUNA OAuth Proxy, it can also be operated from cloud AI services like claude.ai / Grok.
- streamableHTTP MCP — same transport as LUNA. Connectable from Claude Desktop and claude.ai (via OAuth Proxy)
- The AI never holds an image — tool responses are just JSON coordinates, minimizing token cost and latency
- Real-time broadcast (SSE) — state changes are reflected instantly on every connected browser; multiple devices stay in sync automatically
- Movable X mark — call the same tool again to move it. Applied instantly (no animation) so it's never stuck when the browser tab is in the background
- Toggleable display style — constellation lines, constellation names, Messier objects, star proper names on/off; switch between Japanese/English
- Lightweight — all rendering logic lives in the browser (Canvas); the server only manages state
| Tool | Description |
|---|---|
set_view |
Set the view (center RA/Dec, field of view) |
set_mark |
Place or move the X mark |
clear_mark |
Clear the X mark |
set_message |
Show a message below the chart |
set_style |
Toggle constellation lines/names, Messier, star names; switch language |
get_state |
Get the current display state |
get_system_info |
Get the server's version and uptime |
get_license_info |
Get license, author, and bundled-library information |
- Windows
- A modern browser (Canvas support)
- Node.js is not required — everything needed to run is bundled in the .exe
This walks you through the whole setup, from launching the star chart to talking to it through Claude.ai or Grok. No coding or Node.js knowledge needed.
-
Extract the zip.
-
Keep
aistarchartmcp.exeand thepublic/folder together in the same location — the server looks forpublic/right next to the .exe. -
Double-click
Start_AiStarChartMCP.bat. -
Your browser opens automatically showing the star chart (
http://localhost:4600/). -
Look at the top-left corner of the star chart page. It shows an address like:
From other devices: http://192.168.3.23:4600/Write down (or remember) the IP address and port number shown here (
192.168.3.23and4600in this example — yours will differ). You'll need them in the next part.
At this point, the star chart is running, but nothing can talk to it from the cloud yet — that's what the proxy below is for.
Claude.ai and Grok (the web/cloud versions) require a secure login step (OAuth) before they can connect to any outside tool. The star chart itself doesn't have this built in, so a small companion program — the LUNA OAuth Proxy — sits in front of it and handles that step.
-
Download the LUNA OAuth Proxy: github.com/OnStepNinja/LUNA/releases/tag/oauth-proxy-v1.0-en
-
Extract and run it (same style as the star chart — no Node.js required).
-
A status panel page opens in your browser. Even though the field is labeled "LUNA's IP" (this proxy was originally built for LUNA hardware), enter the address and port you noted in Part 1:
- LUNA's IP: the IP address from the star chart page (e.g.
192.168.3.23) - Port:
4600
- LUNA's IP: the IP address from the star chart page (e.g.
-
Click the "🚀 Save and start the proxy" button.
-
After a few seconds, two things appear on the page:
- ① URL to register with claude.ai / Grok — a web address
- ② PIN to enter during authorization — a 6-digit number
Keep this page open — you'll need both of these next.
- In Claude.ai or Grok, find "Add connector" → "Custom connector".
- Give it any name you like (e.g. "StarChart").
- Paste in the ① URL from the proxy panel.
- When the authorization screen appears, enter the ② PIN from the proxy panel to approve it.
- The connector is now linked. You're ready to go.
Ask the AI something like:
"Can you see the starchart?"
If it responds and lists the available tools (set_view, set_mark, etc.), everything is connected correctly. Try asking it to show a constellation or place a mark on a target, and watch the browser window from Part 1 update in real time.
- MCP endpoint:
http://localhost:4600/mcp - Viewer page:
http://localhost:4600/ - To connect from Claude Desktop (not the web version) instead of claude.ai, you don't need the proxy — just add the streamableHTTP endpoint above directly to your
mcpServersconfig.
The star chart rendering never goes through the AI at all. All the AI updates is a small JSON state — "center coordinates, field of view, X mark coordinates, message, display style" — and the server broadcasts this over SSE (/events) to every connected browser. The browser side uses d3-celestial to project the received coordinates and draw them on a Canvas.
This separation minimizes the latency and token cost of AI calls, while automatically keeping the display state in sync across multiple devices.
LUNA AiStarChartMCP's own code (server/, public/index.html) is released under the MIT License.
Copyright © 2026 Nishioka Sadahiko
The bundled d3-celestial (and its data files), D3.js, and d3-geo-projection are under the BSD-3-Clause license and belong to their respective copyright holders. See THIRD_PARTY_LICENSES.md for details.
Nishioka Sadahiko GitHub: @OnStepNinja