{"_id":"@cyanheads/astronomy-mcp-server","_rev":"16-108a3fea3764c381f7fc3c14af34e6f9","name":"@cyanheads/astronomy-mcp-server","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.2":{"name":"@cyanheads/astronomy-mcp-server","version":"0.1.2","keywords":["astronomy","ephemeris","rise-set","moon-phase","eclipse","astronomy-engine","mcp","mcp-server","model-context-protocol","typescript","bun","stdio","streamable-http","ai-agent"],"author":"cyanheads <casey@caseyjhand.com> (https://github.com/cyanheads/astronomy-mcp-server#readme)","license":"Apache-2.0","_id":"@cyanheads/astronomy-mcp-server@0.1.2","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/astronomy-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/astronomy-mcp-server/issues"},"bin":{"astronomy-mcp-server":"dist/index.js"},"dist":{"shasum":"bb38219a9513fe87181fbd0a8dc373c6c71673b1","tarball":"https://registry.npmjs.org/@cyanheads/astronomy-mcp-server/-/astronomy-mcp-server-0.1.2.tgz","fileCount":86,"integrity":"sha512-F2jByGkQBcQ0lfT2AAaENnx2FFbvNHlBhqP1Ym+RzoCzaEM9Y59l3wdsX7c5sRApB2eUsjPVWdWQL4tANyP6pw==","signatures":[{"sig":"MEQCIEu9JEt5CvgkFHz4/ESo1uyEOGuLxccJr2jPytk15/2FAiB+uTx115a/AeppsgiRgds5XA5Yda8bth0LF+aPDw0/Yw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":405232},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"bb38219a9513fe87181fbd0a8dc373c6c71673b1","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/astronomy-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/astronomy-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/astronomy-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-F2jByGkQBcQ0lfT2AAaENnx2FFbvNHlBhqP1Ym+RzoCzaEM9Y59l3wdsX7c5sRApB2eUsjPVWdWQL4tANyP6pw==","repository":{"url":"git+https://github.com/cyanheads/astronomy-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"What's in the sky, computed offline — planet and moon positions, rise/set, phases, eclipses, and seasons for any place and time via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","satellite.js":"^7.0.1","astronomy-engine":"^2.1.19","@cyanheads/mcp-ts-core":"^0.10.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.2","devDependencies":{"ignore":"^7.0.5","vitest":"^4.1.8","depcheck":"^1.4.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^26.0.1","@biomejs/biome":"2.5.1"},"_npmOperationalInternal":{"tmp":"tmp/astronomy-mcp-server_0.1.2_1782620166040_0.397462194905579","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@cyanheads/astronomy-mcp-server","version":"0.1.3","keywords":["astronomy","ephemeris","rise-set","moon-phase","eclipse","astronomy-engine","mcp","mcp-server","model-context-protocol","typescript","bun","stdio","streamable-http","ai-agent"],"author":"cyanheads <casey@caseyjhand.com> (https://github.com/cyanheads/astronomy-mcp-server#readme)","license":"Apache-2.0","_id":"@cyanheads/astronomy-mcp-server@0.1.3","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/astronomy-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/astronomy-mcp-server/issues"},"bin":{"astronomy-mcp-server":"dist/index.js"},"dist":{"shasum":"d03086af2a5d04bce3afa26ed56cc1cbf0e95758","tarball":"https://registry.npmjs.org/@cyanheads/astronomy-mcp-server/-/astronomy-mcp-server-0.1.3.tgz","fileCount":87,"integrity":"sha512-aK6GGTSmcxansd8kHL2dZAnRBwVcSDwJ8Iy/uhQwImdSrLtxM/hcVTpmdIFymSlhWKtbNhzY/xNt/PVLir+3Dg==","signatures":[{"sig":"MEYCIQCKiOEuyJUXESx7WY7Yr7tDwlslo2wE29iOKkJ7aPc5zgIhAMlzA/wy1DIfhQBAgVX3QxHVtbflra5npMXSV7tgGTXb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":409311},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"d03086af2a5d04bce3afa26ed56cc1cbf0e95758","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/astronomy-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/astronomy-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/astronomy-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-aK6GGTSmcxansd8kHL2dZAnRBwVcSDwJ8Iy/uhQwImdSrLtxM/hcVTpmdIFymSlhWKtbNhzY/xNt/PVLir+3Dg==","repository":{"url":"git+https://github.com/cyanheads/astronomy-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"What's in the sky, computed offline — planet and moon positions, rise/set, phases, eclipses, and seasons for any place and time via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","satellite.js":"^7.0.1","astronomy-engine":"^2.1.19","@cyanheads/mcp-ts-core":"^0.10.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.2","devDependencies":{"ignore":"^7.0.5","vitest":"^4.1.8","depcheck":"^1.4.7","tsc-alias":"^1.8.17","typescript":"^6.0.3","@types/node":"^26.0.1","@biomejs/biome":"2.5.1"},"_npmOperationalInternal":{"tmp":"tmp/astronomy-mcp-server_0.1.3_1782655902536_0.7514326309665451","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@cyanheads/astronomy-mcp-server","version":"0.2.0","keywords":["astronomy","ephemeris","rise-set","moon-phase","eclipse","astronomy-engine","mcp","mcp-server","model-context-protocol","typescript","bun","stdio","streamable-http","ai-agent"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/astronomy-mcp-server@0.2.0","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/astronomy-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/astronomy-mcp-server/issues"},"bin":{"astronomy-mcp-server":"dist/index.js"},"dist":{"shasum":"7764c66e8d3a0ce45cf26971d84ebaeafc6bbaa9","tarball":"https://registry.npmjs.org/@cyanheads/astronomy-mcp-server/-/astronomy-mcp-server-0.2.0.tgz","fileCount":88,"integrity":"sha512-2Cn17D0jMzq2tP2ntmWrX9cJTH5+WbpU3x9hQPUClYas3l7kKMwomAbkzznNqh4213k+K/e0t9gS9kT+3Df6Yg==","signatures":[{"sig":"MEUCIDKHeQ9R0PqtBwtnnAkwy6yDuN5aljLAaolGzaXgExsuAiEA1JXmqz0pi0MXD5ql0a/rJlSKequuWQeXHkC1z12FllE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":429329},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"7764c66e8d3a0ce45cf26971d84ebaeafc6bbaa9","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/astronomy-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/astronomy-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/astronomy-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-2Cn17D0jMzq2tP2ntmWrX9cJTH5+WbpU3x9hQPUClYas3l7kKMwomAbkzznNqh4213k+K/e0t9gS9kT+3Df6Yg==","repository":{"url":"git+https://github.com/cyanheads/astronomy-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"What's in the sky, computed offline — planet and moon positions, rise/set, phases, eclipses, and seasons for any place and time via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","satellite.js":"^7.1.0","astronomy-engine":"^2.1.19","@cyanheads/mcp-ts-core":"^0.11.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"ignore":"^7.0.6","vitest":"^4.1.10","depcheck":"^1.4.7","tsc-alias":"^1.9.1","typescript":"^7.0.2","@types/node":"^26.1.2","@biomejs/biome":"2.5.5","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/astronomy-mcp-server_0.2.0_1785452349735_0.9992712158863883","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@cyanheads/astronomy-mcp-server","version":"0.2.1","keywords":["astronomy","ephemeris","rise-set","moon-phase","eclipse","astronomy-engine","mcp","mcp-server","model-context-protocol","typescript","bun","stdio","streamable-http","ai-agent"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/astronomy-mcp-server@0.2.1","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/astronomy-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/astronomy-mcp-server/issues"},"bin":{"astronomy-mcp-server":"dist/index.js"},"dist":{"shasum":"a6980ddabfa698225ad049964f0d82a2184ce60a","tarball":"https://registry.npmjs.org/@cyanheads/astronomy-mcp-server/-/astronomy-mcp-server-0.2.1.tgz","fileCount":89,"integrity":"sha512-vsl7YAIPrqqRbMyRRq3pWdmY6lCIafPwFj4jz7h5YuHR4DzxS+dldGG1/Z2aglq4l88P3tPSbCT++XU72nUAjQ==","signatures":[{"sig":"MEYCIQDaeEfZ0RE73xeeoxlLE/yyFJX0KBo5tzTbxo4zLLMTlwIhAMWaB/kRs9SlyK7nS5cOlFs6gj1IEFLPOROQdUfPUurC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":449136},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"a6980ddabfa698225ad049964f0d82a2184ce60a","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/astronomy-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/astronomy-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/astronomy-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-vsl7YAIPrqqRbMyRRq3pWdmY6lCIafPwFj4jz7h5YuHR4DzxS+dldGG1/Z2aglq4l88P3tPSbCT++XU72nUAjQ==","repository":{"url":"git+https://github.com/cyanheads/astronomy-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"What's in the sky, computed offline — planet and moon positions, rise/set, phases, eclipses, and seasons for any place and time via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","satellite.js":"^7.1.0","astronomy-engine":"^2.1.19","@cyanheads/mcp-ts-core":"^0.11.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"ignore":"^7.0.6","vitest":"^4.1.10","depcheck":"^1.4.7","tsc-alias":"^1.9.1","typescript":"^7.0.2","@types/node":"^26.1.2","@biomejs/biome":"2.5.5","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/astronomy-mcp-server_0.2.1_1785455881372_0.5252126198848035","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@cyanheads/astronomy-mcp-server","version":"0.2.2","keywords":["astronomy","ephemeris","rise-set","moon-phase","eclipse","astronomy-engine","mcp","mcp-server","model-context-protocol","typescript","bun","stdio","streamable-http","ai-agent"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/astronomy-mcp-server@0.2.2","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/astronomy-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/astronomy-mcp-server/issues"},"bin":{"astronomy-mcp-server":"dist/index.js"},"dist":{"shasum":"d78eca5faf57d56cc0951391baa60dda62e7e3b3","tarball":"https://registry.npmjs.org/@cyanheads/astronomy-mcp-server/-/astronomy-mcp-server-0.2.2.tgz","fileCount":94,"integrity":"sha512-IOL0DtYFUccGjr/31hTn9zlmr9Rzbwf1xv7v9P555SNTClptMdBbL/Zd260bNLquZ/uZVWjyjgy7MKRGdStDrQ==","signatures":[{"sig":"MEYCIQClGnXjKDcjY8dXvOZnL3a1dYFMON1YIv8IUe4BCtXDhQIhAK2XAt/9QcUXQYnZEmkqdYG/BB++EUMCvmYYtlwn46Wk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":459138},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"d78eca5faf57d56cc0951391baa60dda62e7e3b3","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/astronomy-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/astronomy-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/astronomy-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-IOL0DtYFUccGjr/31hTn9zlmr9Rzbwf1xv7v9P555SNTClptMdBbL/Zd260bNLquZ/uZVWjyjgy7MKRGdStDrQ==","repository":{"url":"git+https://github.com/cyanheads/astronomy-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"What's in the sky, computed offline — planet and moon positions, rise/set, phases, eclipses, and seasons for any place and time via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","satellite.js":"^7.1.0","astronomy-engine":"^2.1.19","@cyanheads/mcp-ts-core":"^0.11.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"ignore":"^7.0.6","vitest":"^4.1.10","depcheck":"^1.4.7","tsc-alias":"^1.9.1","typescript":"^7.0.2","@types/node":"^26.1.2","@biomejs/biome":"2.5.5","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/astronomy-mcp-server_0.2.2_1785459527986_0.0035021699058181976","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@cyanheads/astronomy-mcp-server","version":"0.2.3","keywords":["astronomy","ephemeris","rise-set","moon-phase","eclipse","astronomy-engine","mcp","mcp-server","model-context-protocol","typescript","bun","stdio","streamable-http","ai-agent"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/astronomy-mcp-server@0.2.3","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/astronomy-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/astronomy-mcp-server/issues"},"bin":{"astronomy-mcp-server":"dist/index.js"},"dist":{"shasum":"a3913b770eee128b57c1a3c6dccd7b323173cf6d","tarball":"https://registry.npmjs.org/@cyanheads/astronomy-mcp-server/-/astronomy-mcp-server-0.2.3.tgz","fileCount":95,"integrity":"sha512-KfMR9CXN7krk/ESXRuwKe7nUA1WMPmUSVvZ9Cqsf3NjOacrddCr+5MW3JdvKhFp9M9o0fMxFsrdc1C9vfPI76A==","signatures":[{"sig":"MEQCIGx0D/T5V/bXvu8cKQh4LFpy6WHmcIcJqKX13zcLExqeAiAqxQzWBWkUdahf4q8oXV36hLmi+vFXMw1bhO2CPHaICQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":463733},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"a3913b770eee128b57c1a3c6dccd7b323173cf6d","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/astronomy-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/astronomy-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/astronomy-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-KfMR9CXN7krk/ESXRuwKe7nUA1WMPmUSVvZ9Cqsf3NjOacrddCr+5MW3JdvKhFp9M9o0fMxFsrdc1C9vfPI76A==","repository":{"url":"git+https://github.com/cyanheads/astronomy-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"What's in the sky, computed offline — planet and moon positions, rise/set, phases, eclipses, and seasons for any place and time via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","satellite.js":"^7.1.0","astronomy-engine":"^2.1.19","@cyanheads/mcp-ts-core":"^0.11.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"ignore":"^7.0.6","vitest":"^4.1.10","depcheck":"^1.4.7","tsc-alias":"^1.9.1","typescript":"^7.0.2","@types/node":"^26.1.2","@biomejs/biome":"2.5.5","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/astronomy-mcp-server_0.2.3_1785461812531_0.7583892134072656","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@cyanheads/astronomy-mcp-server","version":"0.2.4","keywords":["astronomy","ephemeris","rise-set","moon-phase","eclipse","astronomy-engine","mcp","mcp-server","model-context-protocol","typescript","bun","stdio","streamable-http","ai-agent"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/astronomy-mcp-server@0.2.4","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/astronomy-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/astronomy-mcp-server/issues"},"bin":{"astronomy-mcp-server":"dist/index.js"},"dist":{"shasum":"a4b623527d452d779c86e24deb5581abf4820f4a","tarball":"https://registry.npmjs.org/@cyanheads/astronomy-mcp-server/-/astronomy-mcp-server-0.2.4.tgz","fileCount":100,"integrity":"sha512-bVYeZmfkDE2Hr+wFO6E6hQ73CJO6SmyNlZksRyNENqub6zCxY9HeQTdAJ9Nw6pSQQ8JZIqcUTeE+STIoVYalZw==","signatures":[{"sig":"MEQCIBY/rwu50JVO1G0ch8tJ/2/ePHPnZTlXIiZVWHjb2sBMAiA/tCbLSmV1dLzt5i7aVqWdgPER/jsybGjPlYwbWG18/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":486274},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"a4b623527d452d779c86e24deb5581abf4820f4a","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/astronomy-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/astronomy-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/astronomy-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-bVYeZmfkDE2Hr+wFO6E6hQ73CJO6SmyNlZksRyNENqub6zCxY9HeQTdAJ9Nw6pSQQ8JZIqcUTeE+STIoVYalZw==","repository":{"url":"git+https://github.com/cyanheads/astronomy-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"What's in the sky, computed offline — planet and moon positions, rise/set, phases, eclipses, and seasons for any place and time via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","satellite.js":"^7.1.0","astronomy-engine":"^2.1.19","@cyanheads/mcp-ts-core":"^0.11.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"ignore":"^7.0.6","vitest":"^4.1.10","depcheck":"^1.4.7","tsc-alias":"^1.9.1","typescript":"^7.0.2","@types/node":"^26.2.0","@biomejs/biome":"2.5.8","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/astronomy-mcp-server_0.2.4_1787060636407_0.293259520592152","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@cyanheads/astronomy-mcp-server","version":"0.2.5","keywords":["astronomy","ephemeris","rise-set","moon-phase","eclipse","astronomy-engine","mcp","mcp-server","model-context-protocol","typescript","bun","stdio","streamable-http","ai-agent"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/astronomy-mcp-server@0.2.5","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/astronomy-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/astronomy-mcp-server/issues"},"bin":{"astronomy-mcp-server":"dist/index.js"},"dist":{"shasum":"fdcfd8295025d3374ed67731ee3562ef2db40260","tarball":"https://registry.npmjs.org/@cyanheads/astronomy-mcp-server/-/astronomy-mcp-server-0.2.5.tgz","fileCount":101,"integrity":"sha512-3ObXl19tjYKEA6N6nHtBFpbKVqFpbvWW4pa73M3yPQ1WIpZAqNCf4IJUeq0+2t0V1oL6PKp4AeSQgW5M2o0+Ig==","signatures":[{"sig":"MEQCIECHin5vgbx/uDhQzRyG006flJG7nBxUaLF+GGJCUih+AiAidQeWxD439U8vQg6JFn22VoKeEizv+viOvO/LnMtSkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":517134},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"fdcfd8295025d3374ed67731ee3562ef2db40260","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/astronomy-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/astronomy-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/astronomy-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-3ObXl19tjYKEA6N6nHtBFpbKVqFpbvWW4pa73M3yPQ1WIpZAqNCf4IJUeq0+2t0V1oL6PKp4AeSQgW5M2o0+Ig==","repository":{"url":"git+https://github.com/cyanheads/astronomy-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"What's in the sky, computed offline — planet and moon positions, rise/set, phases, eclipses, and seasons for any place and time via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","satellite.js":"^7.1.0","astronomy-engine":"^2.1.19","@cyanheads/mcp-ts-core":"^0.11.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"ignore":"^7.0.6","vitest":"^4.1.10","depcheck":"^1.4.7","tsc-alias":"^1.9.1","typescript":"^7.0.2","@types/node":"^26.2.0","@biomejs/biome":"2.5.8","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/astronomy-mcp-server_0.2.5_1787066247695_0.4105097165466778","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@cyanheads/astronomy-mcp-server","version":"0.2.6","keywords":["astronomy","ephemeris","rise-set","moon-phase","eclipse","astronomy-engine","mcp","mcp-server","model-context-protocol","typescript","bun","stdio","streamable-http","ai-agent"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/astronomy-mcp-server@0.2.6","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/astronomy-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/astronomy-mcp-server/issues"},"bin":{"astronomy-mcp-server":"dist/index.js"},"dist":{"shasum":"cdbe2e364866fc404ed232021ffcd501fa363e0b","tarball":"https://registry.npmjs.org/@cyanheads/astronomy-mcp-server/-/astronomy-mcp-server-0.2.6.tgz","fileCount":102,"integrity":"sha512-eGvmK/aFpRp0e0mjnKGW1ydV/sFkrKOPPGpeD8OTKeNq/FgrQlaz9ghhwEaq4aKpXN5HFZE84OJXthCH3hxdnw==","signatures":[{"sig":"MEUCIC/lASSVYZ7AsQTXJJ/zJ54y+hRA4ARBeQIxXxDBsCZkAiEA/bzsAhKivJtkmN51X+rjbdMcPGcXfUZOlGBVdH4f2fM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":527991},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"cdbe2e364866fc404ed232021ffcd501fa363e0b","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/astronomy-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/astronomy-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/astronomy-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-eGvmK/aFpRp0e0mjnKGW1ydV/sFkrKOPPGpeD8OTKeNq/FgrQlaz9ghhwEaq4aKpXN5HFZE84OJXthCH3hxdnw==","repository":{"url":"git+https://github.com/cyanheads/astronomy-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"What's in the sky, computed offline — planet and moon positions, rise/set, phases, eclipses, and seasons for any place and time via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","satellite.js":"^7.1.0","astronomy-engine":"^2.1.19","@cyanheads/mcp-ts-core":"^0.11.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"ignore":"^7.0.6","vitest":"^4.1.10","depcheck":"^1.4.7","tsc-alias":"^1.9.1","typescript":"^7.0.2","@types/node":"^26.2.0","@biomejs/biome":"2.5.8","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/astronomy-mcp-server_0.2.6_1787072342778_0.3225077461232293","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@cyanheads/astronomy-mcp-server","version":"0.2.7","keywords":["astronomy","ephemeris","rise-set","moon-phase","eclipse","astronomy-engine","mcp","mcp-server","model-context-protocol","typescript","bun","stdio","streamable-http","ai-agent"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/astronomy-mcp-server@0.2.7","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/astronomy-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/astronomy-mcp-server/issues"},"bin":{"astronomy-mcp-server":"dist/index.js"},"dist":{"shasum":"c4d739c15025f15b6a2f066d2ba4b460b1ad3f4a","tarball":"https://registry.npmjs.org/@cyanheads/astronomy-mcp-server/-/astronomy-mcp-server-0.2.7.tgz","fileCount":103,"integrity":"sha512-eJe7Jk9AoP/Ms6mY1tNKHhZ0w0znuBuwq2GuZfXWDdD9uDDbxdWHqK4Ijcxm5RIYa5hTEUgE0dqYmylj56zBYA==","signatures":[{"sig":"MEUCIDKBecv3nc7rY01Upzccn8+8rFStyNyLXbK3qv8Ei83IAiEAuYTWzqLBdzccdoQE5nMLlLdOUW6OZOieS33aDW1BfQo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":537465},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"c4d739c15025f15b6a2f066d2ba4b460b1ad3f4a","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/astronomy-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/astronomy-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/astronomy-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-eJe7Jk9AoP/Ms6mY1tNKHhZ0w0znuBuwq2GuZfXWDdD9uDDbxdWHqK4Ijcxm5RIYa5hTEUgE0dqYmylj56zBYA==","repository":{"url":"git+https://github.com/cyanheads/astronomy-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"What's in the sky, computed offline — planet and moon positions, rise/set, phases, eclipses, and seasons for any place and time via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","satellite.js":"^7.1.0","astronomy-engine":"^2.1.19","@cyanheads/mcp-ts-core":"^0.11.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"ignore":"^7.0.6","vitest":"^4.1.10","depcheck":"^1.4.7","tsc-alias":"^1.9.1","typescript":"^7.0.2","@types/node":"^26.2.0","@biomejs/biome":"2.5.8","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/astronomy-mcp-server_0.2.7_1787075346086_0.581701068486921","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@cyanheads/astronomy-mcp-server","version":"0.2.8","keywords":["astronomy","ephemeris","rise-set","moon-phase","eclipse","astronomy-engine","mcp","mcp-server","model-context-protocol","typescript","bun","stdio","streamable-http","ai-agent"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/astronomy-mcp-server@0.2.8","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/astronomy-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/astronomy-mcp-server/issues"},"bin":{"astronomy-mcp-server":"dist/index.js"},"dist":{"shasum":"78bed507ac4924a8bb08fc33048b21ae0d0cc73e","tarball":"https://registry.npmjs.org/@cyanheads/astronomy-mcp-server/-/astronomy-mcp-server-0.2.8.tgz","fileCount":104,"integrity":"sha512-86x4lvxGTV7jBWOWNHo4vz01IgK9Cgk/pPQXRbC31GHi9QLNX+HIzrL979Ub1kTlrh692GcGKhrJY5MkeNZg8g==","signatures":[{"sig":"MEQCIBQPB8bf/LKW7DmkujTWRox1XKoqjUcNuYktMo+U38koAiBoPFleOEpIcvx1t2zENevEh9MqsC+HiFp1hPt6GIY27w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":541976},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"78bed507ac4924a8bb08fc33048b21ae0d0cc73e","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/astronomy-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/astronomy-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/astronomy-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-86x4lvxGTV7jBWOWNHo4vz01IgK9Cgk/pPQXRbC31GHi9QLNX+HIzrL979Ub1kTlrh692GcGKhrJY5MkeNZg8g==","repository":{"url":"git+https://github.com/cyanheads/astronomy-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"What's in the sky, computed offline — planet and moon positions, rise/set, phases, eclipses, and seasons for any place and time via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","satellite.js":"^7.1.0","astronomy-engine":"^2.1.19","@cyanheads/mcp-ts-core":"^0.11.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.3.14","devDependencies":{"ignore":"^7.0.6","vitest":"^4.1.10","depcheck":"^1.4.7","tsc-alias":"^1.9.1","typescript":"^7.0.2","@types/node":"^26.2.0","@biomejs/biome":"2.5.8","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/astronomy-mcp-server_0.2.8_1787077601086_0.8630750465267065","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@cyanheads/astronomy-mcp-server","version":"0.2.9","keywords":["astronomy","ephemeris","rise-set","moon-phase","eclipse","astronomy-engine","mcp","mcp-server","model-context-protocol","typescript","bun","stdio","streamable-http","ai-agent"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/astronomy-mcp-server@0.2.9","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/astronomy-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/astronomy-mcp-server/issues"},"bin":{"astronomy-mcp-server":"dist/index.js"},"dist":{"shasum":"ac5510180dfec5c42a8bdcba4203696e97c0273d","tarball":"https://registry.npmjs.org/@cyanheads/astronomy-mcp-server/-/astronomy-mcp-server-0.2.9.tgz","fileCount":105,"integrity":"sha512-qg/ISKCbkWmg39swSn0yO69XgfXBWIg5IleC/MrqIahWg93Pj6cLDOuBNK2ZejcuxWDeqdfRH/3udLSsUox2XA==","signatures":[{"sig":"MEUCIEQzSZqRAWT6x0gmnpBwJMMgIqTdQ9YBWf9FynOO447mAiEAo+DEBT7hde+oHh8K7FQABk9zAuzoTrAgvRMqWkSBjU0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFQP9O8tXYMIHXVxK3ZTDCtIKXMo1PQrwE1rFRm8pL7wAiAl9Y/qVtpnUj+roMvwsilqA1va7l7zpDd4ZkHDheSUIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":551460},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"ac5510180dfec5c42a8bdcba4203696e97c0273d","engines":{"bun":">=1.3.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/astronomy-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/astronomy-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/astronomy-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-qg/ISKCbkWmg39swSn0yO69XgfXBWIg5IleC/MrqIahWg93Pj6cLDOuBNK2ZejcuxWDeqdfRH/3udLSsUox2XA==","repository":{"url":"git+https://github.com/cyanheads/astronomy-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"What's in the sky, computed offline — planet and moon positions, rise/set, phases, eclipses, and seasons for any place and time via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.4.3","pino-pretty":"^13.1.3","satellite.js":"^7.1.0","astronomy-engine":"^2.1.19","@cyanheads/mcp-ts-core":"^0.12.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"ignore":"^7.0.6","vitest":"^4.1.11","depcheck":"^1.4.7","tsc-alias":"^1.9.2","typescript":"^7.0.2","@types/node":"^26.2.0","@biomejs/biome":"2.5.10","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/astronomy-mcp-server_0.2.9_1787646411473_0.37759172725307955","host":"s3://npm-registry-packages-npm-production"}},"0.2.10":{"name":"@cyanheads/astronomy-mcp-server","version":"0.2.10","keywords":["astronomy","ephemeris","rise-set","moon-phase","eclipse","astronomy-engine","mcp","mcp-server","model-context-protocol","typescript","bun","stdio","streamable-http","ai-agent"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/astronomy-mcp-server@0.2.10","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/astronomy-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/astronomy-mcp-server/issues"},"bin":{"astronomy-mcp-server":"dist/index.js"},"dist":{"shasum":"44080dca9d9a0d1abd9b20a2af8c464604e610fa","tarball":"https://registry.npmjs.org/@cyanheads/astronomy-mcp-server/-/astronomy-mcp-server-0.2.10.tgz","fileCount":107,"integrity":"sha512-LbO/ZirQh4xnNGT/m3hNmT8+i+R4uCZHsq2DexxX6VfCY9Nmz7g881outTDCZOzvGPa9LaDFonpzxV+lD4D/xw==","signatures":[{"sig":"MEQCIEHH24v6wtBbPU/f8ryE5F6PNChXJRxRI3vQt7wPzW6HAiBsV0LZwYwrnlo6dLGODEzb5pbm9dI+JCK7aTtFaH18Cw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDxcEg7+etBUXEWgZJQ8phHoXhW3aNzZjIlyY4OVKD0GQIhAJScg4fXGgsUHPdIpNuYZm4aoLzXVX/wcefCY92yzlPv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7055615},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"44080dca9d9a0d1abd9b20a2af8c464604e610fa","engines":{"bun":">=1.4.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/astronomy-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/astronomy-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/astronomy-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-LbO/ZirQh4xnNGT/m3hNmT8+i+R4uCZHsq2DexxX6VfCY9Nmz7g881outTDCZOzvGPa9LaDFonpzxV+lD4D/xw==","repository":{"url":"git+https://github.com/cyanheads/astronomy-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"What's in the sky, computed offline — planet and moon positions, rise/set, phases, eclipses, and seasons for any place and time via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.6.5","pino-pretty":"^13.1.3","satellite.js":"^7.1.0","astronomy-engine":"^2.1.19","@cyanheads/mcp-ts-core":"^0.13.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"ignore":"^7.0.9","vitest":"^5.0.1","depcheck":"^1.4.7","tsc-alias":"^1.9.5","typescript":"^7.0.2","@types/node":"^26.6.1","@biomejs/biome":"2.5.14","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/astronomy-mcp-server_0.2.10_1789839845566_0.27478380552565795","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@cyanheads/astronomy-mcp-server","version":"0.3.0","keywords":["astronomy","ephemeris","rise-set","moon-phase","eclipse","astronomy-engine","mcp","mcp-server","model-context-protocol","typescript","bun","stdio","streamable-http","ai-agent"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/astronomy-mcp-server@0.3.0","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/astronomy-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/astronomy-mcp-server/issues"},"bin":{"astronomy-mcp-server":"dist/index.js"},"dist":{"shasum":"c3f1ba947fc8dae7a06b795cc648af519c48997a","tarball":"https://registry.npmjs.org/@cyanheads/astronomy-mcp-server/-/astronomy-mcp-server-0.3.0.tgz","fileCount":107,"integrity":"sha512-5MTLmr9WTkDi2wgJZmrHtJ+DgKYUA70afSqOfTcd5WmF6VeQ7bARaoiEn3EIk3huGVNaILRIpxMk1ymRX/Vcfg==","signatures":[{"sig":"MEYCIQC0Ghai+dGGth//3M6hvgu6Gm5tpvZkwhlk99GIRrDvMQIhAKbZb+dQUHIbJ0ZzEsqUYDwQWXbZY42U5/pXT7uhAqB3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCcXj975ExuTkdFSh/SL21Uji51YmsW0YSUzYYQ8IiUKwIgZxEBNvsMrZjiTp6qXikTv6gAuMRhaCq7RY+sugSbvmc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":580399},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"c3f1ba947fc8dae7a06b795cc648af519c48997a","engines":{"bun":">=1.4.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/astronomy-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/astronomy-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/astronomy-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-5MTLmr9WTkDi2wgJZmrHtJ+DgKYUA70afSqOfTcd5WmF6VeQ7bARaoiEn3EIk3huGVNaILRIpxMk1ymRX/Vcfg==","repository":{"url":"git+https://github.com/cyanheads/astronomy-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"What's in the sky, computed offline — planet and moon positions, rise/set, phases, eclipses, and seasons for any place and time via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.6.5","pino-pretty":"^13.1.3","satellite.js":"^7.1.0","astronomy-engine":"^2.1.19","@cyanheads/mcp-ts-core":"^0.13.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"ignore":"^7.0.9","vitest":"^5.0.1","depcheck":"^1.4.7","tsc-alias":"^1.9.5","typescript":"^7.0.2","@types/node":"^26.6.2","@biomejs/biome":"2.5.14","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/astronomy-mcp-server_0.3.0_1790208088885_0.18116628247049982","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@cyanheads/astronomy-mcp-server","version":"0.3.1","keywords":["astronomy","ephemeris","rise-set","moon-phase","eclipse","astronomy-engine","mcp","mcp-server","model-context-protocol","typescript","bun","stdio","streamable-http","ai-agent"],"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","_id":"@cyanheads/astronomy-mcp-server@0.3.1","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"homepage":"https://github.com/cyanheads/astronomy-mcp-server#readme","bugs":{"url":"https://github.com/cyanheads/astronomy-mcp-server/issues"},"bin":{"astronomy-mcp-server":"dist/index.js"},"dist":{"shasum":"071051f8ecf0f644f4e1984576b49d4e6daf768e","tarball":"https://registry.npmjs.org/@cyanheads/astronomy-mcp-server/-/astronomy-mcp-server-0.3.1.tgz","fileCount":108,"integrity":"sha512-WYK/hQ2yjRWSQ53NFxYf3yq0c4tBaUDgX+Zt5+l2fBKr0vTMOyj2zgMOKx4ftYRYDKvXA12l1h+4RChm5hBJEg==","signatures":[{"sig":"MEYCIQCYA09Ut6Jrz0aQkGP5ktMufBPj+8fdUET5B6W+5id03QIhAKSf/2n4Kh6wegeaVZpg+HHlAN7iNacVXwAlTNSpYFni","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIG4dHhORjMIqIxGr6p9sa3eXuvnkLtI73Sseq2SLbFtEAiEAuHa0UCdD8o+WATRYzTP/DxayfFItKhTUsdnNFpFuGAA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":593040},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","shasum":"071051f8ecf0f644f4e1984576b49d4e6daf768e","engines":{"bun":">=1.4.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"mcpName":"io.github.cyanheads/astronomy-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/astronomy-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/astronomy-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"_integrity":"sha512-WYK/hQ2yjRWSQ53NFxYf3yq0c4tBaUDgX+Zt5+l2fBKr0vTMOyj2zgMOKx4ftYRYDKvXA12l1h+4RChm5hBJEg==","repository":{"url":"git+https://github.com/cyanheads/astronomy-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"What's in the sky, computed offline — planet and moon positions, rise/set, phases, eclipses, and seasons for any place and time via MCP. STDIO or Streamable HTTP.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.6.5","pino-pretty":"^13.1.3","satellite.js":"^7.1.0","astronomy-engine":"^2.1.19","@cyanheads/mcp-ts-core":"^0.13.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"ignore":"^7.0.9","vitest":"^5.0.1","depcheck":"^1.4.7","tsc-alias":"^1.9.5","typescript":"^7.0.2","@types/node":"^26.6.2","@biomejs/biome":"2.5.14","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/astronomy-mcp-server_0.3.1_1790210049323_0.6194005765710608","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"_id":"@cyanheads/astronomy-mcp-server@0.4.0","bin":{"astronomy-mcp-server":"dist/index.js"},"bugs":{"url":"https://github.com/cyanheads/astronomy-mcp-server/issues"},"dist":{"shasum":"245817ccd9eae708c5eb2abae8c048621ad14a34","tarball":"https://registry.npmjs.org/@cyanheads/astronomy-mcp-server/-/astronomy-mcp-server-0.4.0.tgz","fileCount":109,"integrity":"sha512-WbJHuismVyU0g7NCMylfU8xqQf7rLxIHv7o4GAlAyPwD/8vpikO31ypqOPVWeKc+yAGfuEsSrgRWCnvnaQanuQ==","signatures":[{"sig":"MEUCIQCTvbHw/sYGIrVJFQLXODapscrfglbLSvJUDgc4nxQS6QIgPaAPrWv4B+puJpudiY91mppfpeL1LQtFUPRMt8z4kPU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD/QDtn2b6S2jFfuMjKV3BRQlSFBHDkdJ4rKOivZaHKogIgQg3EfvtJuOfQKLtIPEu4LSCR47DoqN8YKvV76PwtYBE="}],"unpackedSize":609532},"main":"dist/index.js","name":"@cyanheads/astronomy-mcp-server","type":"module","types":"dist/index.d.ts","author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","shasum":"245817ccd9eae708c5eb2abae8c048621ad14a34","engines":{"bun":">=1.4.0","node":">=24.0.0"},"funding":[{"url":"https://github.com/sponsors/cyanheads","type":"github"},{"url":"https://www.buymeacoffee.com/cyanheads","type":"buy_me_a_coffee"}],"license":"Apache-2.0","mcpName":"io.github.cyanheads/astronomy-mcp-server","scripts":{"test":"vitest run","tree":"bun run scripts/tree.ts","build":"bun run scripts/build.ts","clean":"bun run scripts/clean.ts","start":"node dist/index.js","bundle":"bun run build && npx -y @anthropic-ai/mcpb pack . dist/astronomy-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/astronomy-mcp-server.mcpb","format":"biome check --write .","rebuild":"bun run scripts/clean.ts && bun run scripts/build.ts","devcheck":"bun run scripts/devcheck.ts","lint:mcp":"bun run scripts/lint-mcp.ts","start:http":"MCP_TRANSPORT_TYPE=http node dist/index.js","list-skills":"bun run scripts/list-skills.ts","publish-mcp":"mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish","start:stdio":"MCP_TRANSPORT_TYPE=stdio node dist/index.js","audit:refresh":"rm -f bun.lock && bun install && bun audit","format:unsafe":"biome check --write --unsafe .","lint:packaging":"bun run scripts/lint-packaging.ts","release:github":"bun run scripts/release-github.ts","changelog:build":"bun run scripts/build-changelog.ts","changelog:check":"bun run scripts/build-changelog.ts --check"},"version":"0.4.0","_npmUser":{"name":"cyanheads","email":"casey@caseyjhand.com"},"homepage":"https://github.com/cyanheads/astronomy-mcp-server#readme","keywords":["astronomy","ephemeris","rise-set","moon-phase","eclipse","astronomy-engine","mcp","mcp-server","model-context-protocol","typescript","bun","stdio","streamable-http","ai-agent"],"_integrity":"sha512-WbJHuismVyU0g7NCMylfU8xqQf7rLxIHv7o4GAlAyPwD/8vpikO31ypqOPVWeKc+yAGfuEsSrgRWCnvnaQanuQ==","repository":{"url":"git+https://github.com/cyanheads/astronomy-mcp-server.git","type":"git"},"_npmVersion":"10.8.3","description":"What's in the sky, computed offline — planet and moon positions, rise/set, phases, eclipses, and seasons for any place and time via MCP. STDIO or Streamable HTTP.","directories":{},"maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.6.5","pino-pretty":"^13.1.3","satellite.js":"^7.1.0","astronomy-engine":"^2.1.19","@cyanheads/mcp-ts-core":"^0.13.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"bun@1.4.0","devDependencies":{"ignore":"^7.0.9","vitest":"^5.0.1","depcheck":"^1.4.7","tsc-alias":"^1.9.5","typescript":"^7.0.2","@types/node":"^26.6.2","@biomejs/biome":"2.5.14","@socketsecurity/bun-security-scanner":"^1.1.2"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/astronomy-mcp-server_0.4.0_1790211599067_0.7585017929888851"}}},"time":{"created":"2026-06-28T04:16:05.812Z","modified":"2026-09-24T00:59:59.355Z","0.1.2":"2026-06-28T04:16:06.186Z","0.1.3":"2026-06-28T14:11:42.695Z","0.2.0":"2026-07-30T22:59:09.892Z","0.2.1":"2026-07-30T23:58:01.519Z","0.2.2":"2026-07-31T00:58:48.140Z","0.2.3":"2026-07-31T01:36:52.677Z","0.2.4":"2026-08-18T13:43:56.580Z","0.2.5":"2026-08-18T15:17:27.845Z","0.2.6":"2026-08-18T16:59:02.925Z","0.2.7":"2026-08-18T17:49:06.232Z","0.2.8":"2026-08-18T18:26:41.245Z","0.2.9":"2026-08-25T08:26:51.567Z","0.2.10":"2026-09-19T17:44:05.778Z","0.3.0":"2026-09-24T00:01:28.993Z","0.3.1":"2026-09-24T00:34:09.465Z","0.4.0":"2026-09-24T00:59:59.216Z"},"bugs":{"url":"https://github.com/cyanheads/astronomy-mcp-server/issues"},"author":"Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)","license":"Apache-2.0","homepage":"https://github.com/cyanheads/astronomy-mcp-server#readme","keywords":["astronomy","ephemeris","rise-set","moon-phase","eclipse","astronomy-engine","mcp","mcp-server","model-context-protocol","typescript","bun","stdio","streamable-http","ai-agent"],"repository":{"url":"git+https://github.com/cyanheads/astronomy-mcp-server.git","type":"git"},"description":"What's in the sky, computed offline — planet and moon positions, rise/set, phases, eclipses, and seasons for any place and time via MCP. STDIO or Streamable HTTP.","maintainers":[{"name":"cyanheads","email":"casey@caseyjhand.com"}],"readme":"<div align=\"center\">\n  <h1>@cyanheads/astronomy-mcp-server</h1>\n  <p><b>What's in the sky, computed offline — planet and moon positions, rise/set, phases, eclipses, and seasons for any place and time via MCP. STDIO or Streamable HTTP.</b>\n  <div>7 Tools • 1 Resource • 1 Prompt</div>\n  </p>\n</div>\n\n<div align=\"center\">\n\n[![Version](https://img.shields.io/badge/Version-0.4.0-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/astronomy-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^2.0.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/astronomy-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/astronomy-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^7.0.2-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.4.0-blueviolet.svg?style=flat-square)](https://bun.sh/)\n\n</div>\n\n<div align=\"center\">\n\n[![Install in Claude Desktop](https://img.shields.io/badge/Install_in-Claude_Desktop-D97757?style=for-the-badge&logo=anthropic&logoColor=white)](https://github.com/cyanheads/astronomy-mcp-server/releases/latest/download/astronomy-mcp-server.mcpb) [![Install in Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=astronomy-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvYXN0cm9ub215LW1jcC1zZXJ2ZXIiXX0=) [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22astronomy-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads%2Fastronomy-mcp-server%22%5D%7D)\n\n[![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-67E8F9?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)\n\n</div>\n\n<div align=\"center\">\n\n**Public Hosted Server:** [https://astronomy.caseyjhand.com/mcp](https://astronomy.caseyjhand.com/mcp)\n\n</div>\n\n---\n\n## Overview\n\nObservational astronomy computed in-process from [`astronomy-engine`](https://github.com/cosinekitty/astronomy) — sky positions, rise/set and twilight times, moon phases, and eclipse/conjunction/opposition events for any place and time, plus two optional network-backed extensions for small-body ephemerides and satellite passes. List what's visible right now, plan a dark-sky window, or search forward for the next sky event — deterministic and keyless for the five core tools, given the same body, time, and observer. Runs as a stdio process, a local Streamable HTTP server, or the public hosted endpoint above.\n\n### Tools\n\n| Tool | Description |\n|:---|:---|\n| `astronomy_get_sky_position` | Apparent position of one body or named star for an observer and instant — equatorial (RA/Dec), horizontal (alt/az), ecliptic, plus distance, magnitude, angular diameter, phase, angular distance from the Sun, and constellation. |\n| `astronomy_get_rise_set` | Rise, set, and culmination times for a body at a location, with maximum altitude at transit. For the Sun, also the three twilight pairs (civil/nautical/astronomical). |\n| `astronomy_get_moon_phase` | Moon phase for an instant: illuminated fraction, phase name, synodic age, phase longitude, and the next four quarter phases with timestamps. |\n| `astronomy_find_events` | Forward search for the next occurrences of one sky-event class: eclipses, equinoxes, solstices, moon quarters, oppositions, conjunctions, greatest elongations, and apsides. |\n| `astronomy_list_visible` | The one-call \"what's up right now\" answer: every naked-eye body (and optional bright stars) above the horizon, ranked, annotated, and gated by the Sun's altitude into daylight/twilight/dark. |\n| `astronomy_get_ephemeris` | *(gated extension)* Time-series ephemeris for a small body (asteroid/comet) or spacecraft via JPL Horizons — covers what the in-process major-body set cannot. Off by default. |\n| `astronomy_get_satellite_passes` | *(gated extension)* Visible passes of a satellite (by NORAD catalog number, or by a name resolved against the catalog) over an observer, from a CelesTrak GP element set propagated with SGP4 in-process. Off by default. |\n\n### Resources\n\n| Resource | Description |\n|:---|:---|\n| `astronomy://body/{body}` | Static reference card for a solar-system body — canonical name, type, mean radius (km), and naked-eye visibility. `{body}` is one of `sun`, `moon`, `mercury` … `pluto`. |\n\nAlso reachable via tools — `astronomy_get_sky_position` returns the same body metadata inline — so tool-only clients lose nothing.\n\n### Prompts\n\n| Prompt | Description |\n|:---|:---|\n| `astronomy_stargazing_plan` | Structures a \"plan tonight's stargazing from \\<place\\>\" workflow, chaining the tools in order and naming the cross-server geocoding and weather steps. |\n\nDesign reference: [`docs/design.md`](./docs/design.md).\n\n## Capability reference\n\n### `astronomy_get_sky_position` <sub>tool</sub>\n\n- Target one solar-system body (`body`) or a named bright star (`star`, takes precedence over `body`) — one of the two is required\n- `star` draws on a bundled 32-star catalog (about 30 of the brightest stars plus Polaris) by common name or Bayer designation, with the Greek letter spelled out or as a symbol and the constellation as genitive or IAU abbreviation — `Alpha Canis Majoris`, `Alpha CMa`, and `α CMa` all resolve to Sirius; a miss lists every catalog star\n- Returns equatorial (RA/Dec), refraction-corrected horizontal (alt/az), and ecliptic coordinates plus distance, magnitude, angular diameter, phase angle, illuminated fraction, `sun_elongation_degrees` (angular distance from the Sun), and constellation in one call\n- For a solar-system body, also inlines its `astronomy://body/{body}` reference card (type, mean radius, naked-eye visibility) — absent for a star, which has no card\n- `magnitude`, `angular_diameter_arcsec`, `phase_angle_degrees`, and `illuminated_fraction` are `null`, never fabricated, where the engine can't compute them\n- Default elevation 0 m, default time now; pass `timezone` for observer-local output alongside UTC\n\n---\n\n### `astronomy_get_rise_set` <sub>tool</sub>\n\n- Searches forward from `start` (default now) and returns the next `count` cycles — default 1, max 31\n- For `body: \"sun\"`, each cycle also carries the three twilight pairs (civil −6°, nautical −12°, astronomical −18°), each covering the night after that cycle's set: `dusk` that evening, `dawn` the following morning — so the dawn listed beside a sunrise is the next day's, and the dawn before it is in the previous cycle\n- Circumpolar or never-rises situations return `null` rise/set fields with an explanatory `note`, not an error\n- When the body is already up at `start`, that cycle's `rise` is `null` (it precedes the search) so a `set` is never reported earlier than its paired `rise`\n- Default elevation 0 m; pass `timezone` for observer-local times alongside UTC\n\n---\n\n### `astronomy_get_moon_phase` <sub>tool</sub>\n\n- Geocentric — no observer location needed\n- Returns illuminated fraction, phase name, synodic age in days, and the next four quarter phases (new/first/full/last) in one call\n- `phase_longitude_degrees` is the Moon–Sun ecliptic-longitude difference (0 new, 90 first quarter, 180 full, 270 last quarter) — not the Sun–body–observer `phase_angle_degrees` of `astronomy_get_sky_position`, which reads 0 at full moon\n- `time` defaults to now; pass `timezone` for observer-local timestamps alongside UTC\n\n---\n\n### `astronomy_find_events` <sub>tool</sub>\n\n- One `event` enum covers nine classes: `solar_eclipse`, `lunar_eclipse`, `equinox`, `solstice`, `moon_quarter`, `opposition`, `conjunction`, `max_elongation`, `perigee_apogee`\n- Both eclipse classes take an optional observer (`latitude` and `longitude` together — one alone is rejected):\n  - `solar_eclipse` without one returns global eclipses, with the peak's `peak_latitude_degrees`/`peak_longitude_degrees` for total and annular eclipses; with one it returns only eclipses visible from that point, with local contact times\n  - `lunar_eclipse` contact times are geocentric either way; an observer adds local circumstances\n  - Local circumstances are `local_visible` (the eclipsed body above the horizon at any contact) and `contact_altitudes_degrees` (its altitude at each contact), so a sunrise or sunset eclipse reads differently from a midday one\n- Every other class is geocentric and ignores a location\n- Body-relative events require `body`, gated to which bodies each applies to: `opposition` to mars through pluto, `conjunction` to any planet, `max_elongation` to mercury or venus, `perigee_apogee` to the moon, earth, or a planet\n- Returns the next `count` occurrences, default 1, max 20; searches stop at the end of 2100, and a notice says so when that returns fewer than `count`\n- `perigee_apogee` on earth returns perihelion/aphelion; `conjunction` on mercury or venus returns both the inferior and superior pass, labelled by `conjunction_kind`\n\n---\n\n### `astronomy_list_visible` <sub>tool</sub>\n\n- One call for every naked-eye solar-system body (plus, with `include_stars`, the bundled bright stars) above the horizon, ranked brightest-and-highest first\n- Each body carries a deterministic `visibility_note` computed from real magnitude and altitude, plus its `sun_elongation_degrees`\n- The note states when conditions hide or dim a body — daylight, civil twilight, or within 15° of the Sun (lost in glare); the Sun, the Moon, and a negative-magnitude Venus take no daylight or twilight caveat\n- Returns the whole-sky `sky_condition` (`daylight` / `civil_twilight` / `nautical_twilight` / `astronomical_twilight` / `dark`) and the Sun's altitude alongside the list\n- `time` is a single evaluation instant, not a window; `min_altitude` (default 0) filters out bodies grazing the horizon\n- Default elevation 0 m; pass `timezone` for observer-local times per body\n\n---\n\n### `astronomy_get_ephemeris` <sub>tool</sub>\n\n- Registered only when `ASTRONOMY_ENABLE_HORIZONS` is set; off by default\n- Time-series ephemeris for a small body or spacecraft via JPL Horizons — RA/Dec, distance, magnitude, and optional alt/az when observer `latitude`/`longitude` are both supplied (one alone is rejected)\n- `designation` should resolve to a single Horizons record: numbered asteroid as `\"433;\"`, periodic comet as `\"DES=1P;CAP\"`, spacecraft as a negative SPK-ID — a bare name matching nothing or several records is rejected, and one matching a single object can land on the wrong one (`\"Eros\"` resolves to Kerberos), so the result carries `target_name`, the object Horizons resolved\n- `start`/`stop` accept a `Z` or numeric UTC offset (a value with neither is read as UTC); Horizons receives the resolved UTC instant\n- No 1900–2100 limit applies, but a span outside the target's own Horizons data is rejected as `time_out_of_range`, and the message gives the bound Horizons reports (e.g. Mars ends after A.D. 2599-DEC-31); an unknown designation is `body_not_found`\n- `step` is a count plus unit (`m`/`h`/`d`/`mo`/`y`, e.g. `\"1h\"`); `stop` must be after `start` (defaults to a 24h span from now)\n- Truncates inline at 200 rows; the truncation notice names the exact `start` to resume from, one step past the last row returned\n\n---\n\n### `astronomy_get_satellite_passes` <sub>tool</sub>\n\n- Registered only when `ASTRONOMY_ENABLE_SATELLITES` is set; off by default\n- Identify the satellite by exactly one of `norad_id` or `name` — both or neither is rejected\n- `name` resolves the common names ISS / International Space Station (25544), Hubble / Hubble Space Telescope / HST (20580), and Tiangong / CSS / Chinese Space Station (48274) directly; any other name is a case-insensitive substring match against CelesTrak's catalog\n- Fetches the current GP element set from CelesTrak and propagates it with SGP4 in-process; only naked-eye-plausible passes (sunlit at peak, observer sky dark) are returned\n- A pass must rise inside the window: one already up at `start` is omitted, one still up when the window ends is reported through its set\n- `start` must be within about a month of the element set's epoch — older elements no longer describe the orbit, and an element set that won't propagate inside that window is rejected as a reentry\n- Searches the next `days` ahead, default 7, max 10; pass `timezone` for observer-local pass times\n\n---\n\n### `astronomy://body/{body}` <sub>resource</sub>\n\n- Static reference card as `application/json`: canonical name, type (`star`/`planet`/`moon`/`dwarf`), mean radius in km, naked-eye visibility\n- `{body}` is one of `sun`, `moon`, `mercury` … `pluto`; supports name completion\n- Also returned inline by `astronomy_get_sky_position` for solar-system bodies, so tool-only clients lose nothing\n\n---\n\n### `astronomy_stargazing_plan` <sub>prompt</sub>\n\n- Arguments: `location` required; `date` optional (`YYYY-MM-DD`), defaults to tonight\n- Returns one user message chaining the five core tools in order — sunset/dusk, moon phase and moon rise/set, then the ranked visible list with `include_stars` on\n- Names the cross-server geocoding and weather steps this server doesn't cover, and anchors every step to the observer's local night rather than UTC midnight\n\n## Features\n\nBuilt on [`@cyanheads/mcp-ts-core`](https://github.com/cyanheads/mcp-ts-core): stdio and Streamable HTTP transports, pluggable auth (`none` / `jwt` / `oauth`), swappable storage (`in-memory`, `filesystem`, `Supabase`, `Cloudflare KV/R2/D1`), structured logging with optional OpenTelemetry tracing.\n\nAstronomy-specific:\n\n- Keyless, offline, deterministic core — `astronomy-engine` is the source of truth for positional astronomy; no network, no rate limit, no API key for the five core tools, and the keyless core is pure JS with no native deps\n- Positions are accurate to sub-arcminute precision within the engine's ≈1900–2100 span; a `time`/`start` outside that range is rejected as `time_out_of_range`\n- Both UTC and observer-local time on every output when a `timezone` is supplied; the server never guesses a timezone from coordinates\n- Bundled bright-star catalog so `astronomy_list_visible` and `astronomy_get_sky_position` answer for named stars\n- Two gated extensions (off by default) reach beyond the major-body set — JPL Horizons small bodies and CelesTrak satellite passes — each with its own timeout/retry boundary; they degrade loudly and never silently fall back to the core\n- Does not geocode — resolve a place name to coordinates upstream (e.g. via an OpenStreetMap server) and pass an IANA `timezone` for observer-local output\n\nAgent-friendly output:\n\n- Preserves uncertainty — magnitude, angular diameter, phase, and illuminated fraction are `null` (never fabricated or zeroed) where the engine can't compute them, and `format()` renders \"unavailable\" rather than inventing a value\n- Deterministic visibility notes — `astronomy_list_visible`'s plain-language headline is computed from real magnitude, altitude, sky condition, and distance from the Sun, never a synthetic confidence score\n- Typed error contracts with recovery hints — out-of-range time, missing observer/body, unresolved designation — so callers can correct and retry\n- Rounded-plus-exact dual values — `format()` pairs a rounded display figure with its exact counterpart in brackets (e.g. `RA 4.4116 h [4.411597993526305]`), dropped only when the rounding already round-trips, so a `content[]`-only client never needs a second call to recover full precision\n\n## Getting started\n\n### Public Hosted Instance\n\nA public instance is available at `https://astronomy.caseyjhand.com/mcp` — no installation required. Point any MCP client at it via Streamable HTTP:\n\n```json\n{\n  \"mcpServers\": {\n    \"astronomy-mcp-server\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://astronomy.caseyjhand.com/mcp\"\n    }\n  }\n}\n```\n\n### Self-Hosted / Local\n\nAdd the following to your MCP client configuration file. The five core tools need no configuration; set `ASTRONOMY_ENABLE_HORIZONS` and/or `ASTRONOMY_ENABLE_SATELLITES` to `true` to register the gated extensions.\n\n```json\n{\n  \"mcpServers\": {\n    \"astronomy-mcp-server\": {\n      \"type\": \"stdio\",\n      \"command\": \"bunx\",\n      \"args\": [\"@cyanheads/astronomy-mcp-server@latest\"],\n      \"env\": {\n        \"MCP_TRANSPORT_TYPE\": \"stdio\",\n        \"MCP_LOG_LEVEL\": \"info\"\n      }\n    }\n  }\n}\n```\n\nOr with npx (no Bun required):\n\n```json\n{\n  \"mcpServers\": {\n    \"astronomy-mcp-server\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@cyanheads/astronomy-mcp-server@latest\"],\n      \"env\": {\n        \"MCP_TRANSPORT_TYPE\": \"stdio\",\n        \"MCP_LOG_LEVEL\": \"info\"\n      }\n    }\n  }\n}\n```\n\nOr with Docker:\n\n```json\n{\n  \"mcpServers\": {\n    \"astronomy-mcp-server\": {\n      \"type\": \"stdio\",\n      \"command\": \"docker\",\n      \"args\": [\"run\", \"-i\", \"--rm\", \"-e\", \"MCP_TRANSPORT_TYPE=stdio\", \"ghcr.io/cyanheads/astronomy-mcp-server:latest\"]\n    }\n  }\n}\n```\n\nFor Streamable HTTP, set the transport and start the server:\n\n```sh\nMCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http\n# Server listens at http://localhost:3010/mcp\n```\n\n### Prerequisites\n\n- [Bun v1.4.0](https://bun.sh/) or higher (or Node.js v24+).\n- No API key required — both the offline core and the two keyless extensions (JPL Horizons, CelesTrak) need no credentials.\n\n### Installation\n\n1. **Clone the repository:**\n\n```sh\ngit clone https://github.com/cyanheads/astronomy-mcp-server.git\n```\n\n2. **Navigate into the directory:**\n\n```sh\ncd astronomy-mcp-server\n```\n\n3. **Install dependencies:**\n\n```sh\nbun install\n```\n\n4. **Configure environment (optional):**\n\n```sh\ncp .env.example .env\n# edit .env only to enable the gated extensions or override a default\n```\n\n## Configuration\n\nAll configuration is optional and validated at startup via Zod schemas in `src/config/server-config.ts`. The core runs with no configuration at all.\n\n| Variable | Description | Default |\n|:---|:---|:---|\n| `ASTRONOMY_ENABLE_HORIZONS` | Register the `astronomy_get_ephemeris` tool (JPL Horizons). | `false` |\n| `ASTRONOMY_ENABLE_SATELLITES` | Register the `astronomy_get_satellite_passes` tool (CelesTrak + SGP4). | `false` |\n| `ASTRONOMY_HORIZONS_BASE_URL` | Override the JPL Horizons API endpoint. | `https://ssd.jpl.nasa.gov/api/horizons.api` |\n| `ASTRONOMY_CELESTRAK_BASE_URL` | Override the CelesTrak GP endpoint. | `https://celestrak.org/NORAD/elements/gp.php` |\n| `ASTRONOMY_DEFAULT_TIMEZONE` | Fallback IANA timezone when a tool call omits `timezone`. Unset = UTC-only output. | none |\n| `ASTRONOMY_REQUEST_TIMEOUT_MS` | HTTP timeout (ms) for Horizons and CelesTrak requests. | `15000` |\n| `ASTRONOMY_TLE_CACHE_TTL_MS` | In-process element-set cache TTL (ms) — respects CelesTrak's refetch guidance (~once/2h). | `7200000` |\n| `MCP_TRANSPORT_TYPE` | Transport: `stdio` or `http`. | `stdio` |\n| `MCP_HTTP_PORT` | Port for the HTTP server. | `3010` |\n| `MCP_AUTH_MODE` | Auth mode: `none`, `jwt`, or `oauth`. | `none` |\n| `MCP_LOG_LEVEL` | Log level (RFC 5424). | `info` |\n| `LOGS_DIR` | Directory for log files (Node.js only). | `<project-root>/logs` |\n| `STORAGE_PROVIDER_TYPE` | Storage backend. | `in-memory` |\n| `OTEL_ENABLED` | Enable [OpenTelemetry instrumentation](https://github.com/cyanheads/mcp-ts-core/tree/main/docs/telemetry). | `false` |\n\nSee [`.env.example`](./.env.example) for the full list of optional overrides.\n\n## Running the server\n\n### Local development\n\n- **Build and run:**\n\n  ```sh\n  # One-time build\n  bun run rebuild\n\n  # Run the built server\n  bun run start:stdio\n  # or\n  bun run start:http\n  ```\n\n- **Run checks and tests:**\n\n  ```sh\n  bun run devcheck   # Lint, format, typecheck, security\n  bun run test       # Vitest test suite\n  bun run lint:mcp   # Validate MCP definitions against spec\n  ```\n\n### Docker\n\n```sh\ndocker build -t astronomy-mcp-server .\ndocker run --rm -e MCP_TRANSPORT_TYPE=stdio astronomy-mcp-server\n```\n\nThe Dockerfile defaults to HTTP transport, stateless session mode, and logs to `/var/log/astronomy-mcp-server`. OpenTelemetry peer dependencies are installed by default — build with `--build-arg OTEL_ENABLED=false` to omit them.\n\n## Project structure\n\n| Directory | Purpose |\n|:---|:---|\n| `src/index.ts` | `createApp()` entry point — registers tools/resources/prompts and inits services. |\n| `src/config` | Server-specific environment variable parsing and validation with Zod. |\n| `src/mcp-server/tools` | Tool definitions (`*.tool.ts`). Five core tools plus two gated extensions. |\n| `src/mcp-server/resources` | Resource definitions (`*.resource.ts`). Body reference card. |\n| `src/mcp-server/prompts` | Prompt definitions (`*.prompt.ts`). Stargazing plan. |\n| `src/services/ephemeris` | The offline compute core — `astronomy-engine` wrapper, body-radius table, and bundled bright-star catalog. |\n| `src/services/horizons` | JPL Horizons HTTP client (gated extension). |\n| `src/services/satellite` | CelesTrak GP/OMM fetch + SGP4 propagation (gated extension). |\n| `tests/` | Unit and integration tests mirroring `src/`. |\n\n## Development guide\n\nSee [`CLAUDE.md`](./CLAUDE.md) for development guidelines and architectural rules. The short version:\n\n- Handlers throw, framework catches — no `try/catch` in tool logic\n- Use `ctx.log` for request-scoped logging, `ctx.state` for tenant-scoped storage\n- Register new tools and resources in the `createApp()` arrays in `src/index.ts`\n- Normalize raw engine/API values to the domain type; preserve uncertainty as `null` and never fabricate missing fields\n\n## Contributing\n\nIssues are welcome. Run checks and tests before submitting:\n\n```sh\nbun run devcheck\nbun run test\n```\n\n## License\n\nApache-2.0 — see [LICENSE](./LICENSE) for details.\n","readmeFilename":"README.md"}