@openephemeris/mcp-server 3.5.1 → 3.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/README.md +4 -4
- package/config/dev-allowlist.json +20 -10
- package/dist/server-sse.js +2 -2
- package/dist/tools/dev.js +6 -0
- package/package.json +18 -10
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,15 @@ Version numbering follows [Semantic Versioning](https://semver.org/).
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## [3.5.1] — 2026-03-31
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- Added `mcp-server`, `modelcontextprotocol`, `model-context-protocol` to package.json keywords for registry discovery
|
|
14
|
+
- Fixed `OE_API_KEY` → `OPENEPHEMERIS_API_KEY` in registry submission guide
|
|
15
|
+
- Corrected GitHub links from `MeridianMap` to `Spirit-River` org
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
10
19
|
## [3.5.0] — 2026-03-28
|
|
11
20
|
|
|
12
21
|
### Added
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# OpenEphemeris MCP Server
|
|
2
2
|
|
|
3
|
-
[](https://status.openephemeris.com/)
|
|
4
4
|
|
|
5
5
|
Model Context Protocol server for OpenEphemeris. This package exposes typed astrology tools and an allowlist-gated generic proxy (`dev.call`) for MCP-compatible clients.
|
|
6
6
|
|
|
@@ -224,8 +224,8 @@ OpenEphemeris API
|
|
|
224
224
|
|
|
225
225
|
Generated by `npm run sync:readme` from `config/dev-allowlist.json` and the live tool registry.
|
|
226
226
|
|
|
227
|
-
- Allowlisted operations: **
|
|
228
|
-
- Methods: `GET=4`, `POST=
|
|
227
|
+
- Allowlisted operations: **22**
|
|
228
|
+
- Methods: `GET=4`, `POST=18`, `PUT=0`, `PATCH=0`, `DELETE=0`
|
|
229
229
|
- Registered tools (`OPENEPHEMERIS_PROFILE=dev`): **48**
|
|
230
230
|
- Typed tools: `auth_login`, `auth_logout`, `auth_status`, `chinese_bazi`, `dev_call`, `dev_list_allowed`, `electional_aspect_search`, `electional_moment_analysis`, `electional_station_tracker`, `ephemeris_angles_points`, `ephemeris_aspect_check`, `ephemeris_bi_wheel`, `ephemeris_chart_wheel`, `ephemeris_composite`, `ephemeris_composite_midpoint`, `ephemeris_dignities`, `ephemeris_electional`, `ephemeris_fixed_stars`, `ephemeris_hermetic_lots`, `ephemeris_house_cusps`, `ephemeris_lunar_return`, `ephemeris_midpoints`, `ephemeris_moon_phase`, `ephemeris_natal_batch`, `ephemeris_natal_chart`, `ephemeris_natal_transits`, `ephemeris_next_eclipse`, `ephemeris_overlay`, `ephemeris_planet_position`, `ephemeris_planetary_return`, `ephemeris_progressed_chart`, `ephemeris_relocation`, `ephemeris_retrograde_status`, `ephemeris_solar_return`, `ephemeris_synastry`, `ephemeris_transits`, `hd_opposition`, `hd_planetary_return`, `human_design_chart`, `human_design_composite`, `human_design_penta`, `vedic_chart`, `venus_eight_year_star`, `venus_elongations`, `venus_phase`, `venus_star_points`, `venus_star_points_conjunctions`, `venus_stations`
|
|
231
231
|
- Generic tools:
|
|
@@ -234,7 +234,7 @@ Generated by `npm run sync:readme` from `config/dev-allowlist.json` and the live
|
|
|
234
234
|
|
|
235
235
|
| Family | Operations | Example |
|
|
236
236
|
|---|---:|---|
|
|
237
|
-
| `acg` |
|
|
237
|
+
| `acg` | 4 | `POST /acg/ccg`, `POST /acg/hits` |
|
|
238
238
|
| `comparative` | 5 | `POST /comparative/composite`, `POST /comparative/composite/midpoint` |
|
|
239
239
|
| `electional` | 4 | `GET /electional/aspect-search`, `GET /electional/find-window` |
|
|
240
240
|
| `ephemeris` | 1 | `POST /ephemeris/relocation` |
|
|
@@ -19,6 +19,14 @@
|
|
|
19
19
|
"method": "POST",
|
|
20
20
|
"path": "/acg/ccg"
|
|
21
21
|
},
|
|
22
|
+
{
|
|
23
|
+
"method": "POST",
|
|
24
|
+
"path": "/acg/hits"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"method": "POST",
|
|
28
|
+
"path": "/acg/local-space"
|
|
29
|
+
},
|
|
22
30
|
{
|
|
23
31
|
"method": "POST",
|
|
24
32
|
"path": "/acg/power-lines"
|
|
@@ -96,8 +104,8 @@
|
|
|
96
104
|
"path": "/visualization/chart-wheel"
|
|
97
105
|
}
|
|
98
106
|
],
|
|
99
|
-
"last_generated_at": "2026-
|
|
100
|
-
"openapi_sha256": "
|
|
107
|
+
"last_generated_at": "2026-04-02T14:37:22.841Z",
|
|
108
|
+
"openapi_sha256": "fd75c2b6eae40884622067c1489e61a2d35b9cce9cd57943e989210a6728a197",
|
|
101
109
|
"candidates_get": [
|
|
102
110
|
{
|
|
103
111
|
"method": "GET",
|
|
@@ -469,6 +477,14 @@
|
|
|
469
477
|
],
|
|
470
478
|
"operationId": "features_acg_features_post"
|
|
471
479
|
},
|
|
480
|
+
{
|
|
481
|
+
"method": "POST",
|
|
482
|
+
"path": "/acg/heatmap/composite",
|
|
483
|
+
"tags": [
|
|
484
|
+
"Astrocartography"
|
|
485
|
+
],
|
|
486
|
+
"operationId": "AcgHeatmapCompositeAcgHeatmapCompositePost"
|
|
487
|
+
},
|
|
472
488
|
{
|
|
473
489
|
"method": "POST",
|
|
474
490
|
"path": "/acg/hermetic-lines",
|
|
@@ -629,14 +645,6 @@
|
|
|
629
645
|
],
|
|
630
646
|
"operationId": "calculate_harmonics_ephemeris_harmonics_post"
|
|
631
647
|
},
|
|
632
|
-
{
|
|
633
|
-
"method": "POST",
|
|
634
|
-
"path": "/ephemeris/heatmap/score",
|
|
635
|
-
"tags": [
|
|
636
|
-
"Ephemeris"
|
|
637
|
-
],
|
|
638
|
-
"operationId": "HeatmapScoreEphemerisHeatmapScorePost"
|
|
639
|
-
},
|
|
640
648
|
{
|
|
641
649
|
"method": "POST",
|
|
642
650
|
"path": "/ephemeris/hermetic-lots",
|
|
@@ -979,6 +987,8 @@
|
|
|
979
987
|
"errors": [],
|
|
980
988
|
"warnings": [
|
|
981
989
|
"Non-GET allowlisted: POST /acg/ccg",
|
|
990
|
+
"Non-GET allowlisted: POST /acg/hits",
|
|
991
|
+
"Non-GET allowlisted: POST /acg/local-space",
|
|
982
992
|
"Non-GET allowlisted: POST /acg/power-lines",
|
|
983
993
|
"Non-GET allowlisted: POST /comparative/composite/midpoint",
|
|
984
994
|
"Non-GET allowlisted: POST /comparative/composite",
|
package/dist/server-sse.js
CHANGED
|
@@ -144,7 +144,7 @@ async function main() {
|
|
|
144
144
|
app.use((_req, res, next) => {
|
|
145
145
|
res.setHeader("Access-Control-Allow-Origin", "*");
|
|
146
146
|
res.setHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
|
|
147
|
-
res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, X-API-Key, X-
|
|
147
|
+
res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, X-API-Key, X-OpenEphemeris-API-Key");
|
|
148
148
|
if (_req.method === "OPTIONS") {
|
|
149
149
|
res.status(204).end();
|
|
150
150
|
return;
|
|
@@ -190,7 +190,7 @@ async function main() {
|
|
|
190
190
|
// Extract API key from query param or header
|
|
191
191
|
const apiKey = req.query.apiKey ||
|
|
192
192
|
req.headers["x-api-key"] ||
|
|
193
|
-
req.headers["x-
|
|
193
|
+
req.headers["x-openephemeris-api-key"] ||
|
|
194
194
|
req.headers["authorization"]?.replace(/^Bearer\s+/i, "");
|
|
195
195
|
if (!apiKey) {
|
|
196
196
|
res.status(401).json({
|
package/dist/tools/dev.js
CHANGED
|
@@ -165,6 +165,12 @@ registerTool({
|
|
|
165
165
|
query.format = "llm";
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
|
+
// Auto-inject format=png for visualization endpoints when no format specified.
|
|
169
|
+
// MCP image handlers only accept PNG/JPG/GIF/WEBP — SVG won't render inline.
|
|
170
|
+
const isVisualizationPath = pathname.startsWith("/visualization/") || pathname.startsWith("/comparative/visualization/");
|
|
171
|
+
if (isVisualizationPath && !query.format) {
|
|
172
|
+
query.format = "png";
|
|
173
|
+
}
|
|
168
174
|
return await backendClient.request(method, pathname, {
|
|
169
175
|
params: query,
|
|
170
176
|
data: body,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openephemeris/mcp-server",
|
|
3
|
-
"version": "3.5.
|
|
3
|
+
"version": "3.5.2",
|
|
4
4
|
"description": "Model Context Protocol server for the Open Ephemeris astronomical computation API",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -42,6 +42,9 @@
|
|
|
42
42
|
},
|
|
43
43
|
"keywords": [
|
|
44
44
|
"mcp",
|
|
45
|
+
"mcp-server",
|
|
46
|
+
"modelcontextprotocol",
|
|
47
|
+
"model-context-protocol",
|
|
45
48
|
"astrology",
|
|
46
49
|
"astronomy",
|
|
47
50
|
"ephemeris",
|
|
@@ -52,22 +55,27 @@
|
|
|
52
55
|
"swiss ephemeris"
|
|
53
56
|
],
|
|
54
57
|
"author": "Open Ephemeris",
|
|
58
|
+
"homepage": "https://openephemeris.com",
|
|
59
|
+
"repository": {
|
|
60
|
+
"type": "git",
|
|
61
|
+
"url": "https://github.com/Spirit-River/openephemeris-MCP.git"
|
|
62
|
+
},
|
|
55
63
|
"license": "MIT",
|
|
56
64
|
"engines": {
|
|
57
65
|
"node": ">=18.0.0"
|
|
58
66
|
},
|
|
59
67
|
"dependencies": {
|
|
60
|
-
"@modelcontextprotocol/sdk": "
|
|
61
|
-
"axios": "
|
|
62
|
-
"express": "
|
|
63
|
-
"zod": "
|
|
68
|
+
"@modelcontextprotocol/sdk": "1.24.3",
|
|
69
|
+
"axios": "1.13.2",
|
|
70
|
+
"express": "5.1.0",
|
|
71
|
+
"zod": "4.1.13"
|
|
64
72
|
},
|
|
65
73
|
"devDependencies": {
|
|
66
|
-
"@types/express": "
|
|
67
|
-
"@types/node": "
|
|
68
|
-
"tsx": "
|
|
69
|
-
"typescript": "
|
|
70
|
-
"vitest": "
|
|
74
|
+
"@types/express": "5.0.3",
|
|
75
|
+
"@types/node": "25.0.1",
|
|
76
|
+
"tsx": "4.21.0",
|
|
77
|
+
"typescript": "5.9.3",
|
|
78
|
+
"vitest": "4.0.15"
|
|
71
79
|
},
|
|
72
80
|
"packageManager": "pnpm@10.27.0+sha512.72d699da16b1179c14ba9e64dc71c9a40988cbdc65c264cb0e489db7de917f20dcf4d64d8723625f2969ba52d4b7e2a1170682d9ac2a5dcaeaab732b7e16f04a"
|
|
73
81
|
}
|