@interstellar-tools/mcp 1.0.0 → 1.1.0
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/README.md +21 -16
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +3 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/manoeuvres.d.ts.map +1 -1
- package/dist/tools/manoeuvres.js +66 -2
- package/dist/tools/manoeuvres.js.map +1 -1
- package/dist/tools/shared.d.ts +4 -0
- package/dist/tools/shared.d.ts.map +1 -1
- package/dist/tools/shared.js +6 -0
- package/dist/tools/shared.js.map +1 -1
- package/dist/tools/state-vectors.d.ts +3 -0
- package/dist/tools/state-vectors.d.ts.map +1 -0
- package/dist/tools/state-vectors.js +76 -0
- package/dist/tools/state-vectors.js.map +1 -0
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -68,22 +68,27 @@ returned as `{ "rad": …, "deg": … }`.
|
|
|
68
68
|
|
|
69
69
|
## Tools
|
|
70
70
|
|
|
71
|
-
| Tool | What it computes
|
|
72
|
-
| ---------------------------- |
|
|
73
|
-
| `gravitational_parameter` | μ = G·(M + m) from masses
|
|
74
|
-
| `circular_speed` | Circular orbit speed at radius r
|
|
75
|
-
| `escape_speed` | Escape speed at radius r
|
|
76
|
-
| `vis_viva_speed` | Speed at radius r on an orbit with semi-major axis a
|
|
77
|
-
| `kepler_period` | Orbital period from semi-major axis
|
|
78
|
-
| `peri_apoapsis_radii` | Periapsis and apoapsis radii from a and e
|
|
79
|
-
| `sphere_of_influence_radius` | Laplace sphere of influence
|
|
80
|
-
| `
|
|
81
|
-
| `
|
|
82
|
-
| `
|
|
83
|
-
| `
|
|
84
|
-
| `
|
|
85
|
-
| `
|
|
86
|
-
| `
|
|
71
|
+
| Tool | What it computes |
|
|
72
|
+
| ---------------------------- | --------------------------------------------------------------- |
|
|
73
|
+
| `gravitational_parameter` | μ = G·(M + m) from masses |
|
|
74
|
+
| `circular_speed` | Circular orbit speed at radius r |
|
|
75
|
+
| `escape_speed` | Escape speed at radius r |
|
|
76
|
+
| `vis_viva_speed` | Speed at radius r on an orbit with semi-major axis a |
|
|
77
|
+
| `kepler_period` | Orbital period from semi-major axis |
|
|
78
|
+
| `peri_apoapsis_radii` | Periapsis and apoapsis radii from a and e |
|
|
79
|
+
| `sphere_of_influence_radius` | Laplace sphere of influence |
|
|
80
|
+
| `state_to_elements` | Orbital elements from a position and velocity |
|
|
81
|
+
| `elements_to_state` | Position and velocity from orbital elements |
|
|
82
|
+
| `hohmann_transfer` | Both burns, total Δv and transfer time |
|
|
83
|
+
| `rocket_delta_v` | Tsiolkovsky rocket equation from Isp and masses |
|
|
84
|
+
| `plane_change_delta_v` | Δv for a pure inclination change |
|
|
85
|
+
| `solve_lambert` | Velocities for a transfer between two positions in a given time |
|
|
86
|
+
| `hyperbolic_departure` | Δv, C3 and eccentricity to leave or be captured with a given v∞ |
|
|
87
|
+
| `solve_kepler` | Eccentric anomaly from mean anomaly and eccentricity |
|
|
88
|
+
| `convert_anomaly` | Mean ↔ eccentric ↔ true anomaly (elliptic orbits) |
|
|
89
|
+
| `convert_time` | Duration between units, attoseconds to gigayears |
|
|
90
|
+
| `convert_distance` | Distance between units, metres to gigaparsecs |
|
|
91
|
+
| `find_body` | Look up planets, moons, stars, comets, … by name or id |
|
|
87
92
|
|
|
88
93
|
All tools are pure and offline: no network access, no side effects.
|
|
89
94
|
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYpE,eAAO,MAAM,WAAW,uBAAuB,CAAC;AAEhD,kFAAkF;AAClF,eAAO,MAAM,cAAc,EAAE,MAEpB,CAAC;AAEV;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,QAAO,SAkB/B,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -5,6 +5,7 @@ import { registerAnomalyTools } from './tools/anomalies.js';
|
|
|
5
5
|
import { registerDistanceTools } from './tools/distance.js';
|
|
6
6
|
import { registerManoeuvreTools } from './tools/manoeuvres.js';
|
|
7
7
|
import { registerOrbitTools } from './tools/orbits.js';
|
|
8
|
+
import { registerStateVectorTools } from './tools/state-vectors.js';
|
|
8
9
|
import { registerTimeTools } from './tools/time.js';
|
|
9
10
|
export const SERVER_NAME = 'interstellar-tools';
|
|
10
11
|
/** The published package version, read from `package.json` so it never drifts. */
|
|
@@ -23,9 +24,10 @@ export const SERVER_VERSION = createRequire(import.meta.url)('../package.json').
|
|
|
23
24
|
*/
|
|
24
25
|
export const createServer = () => {
|
|
25
26
|
const server = new McpServer({ name: SERVER_NAME, version: SERVER_VERSION }, {
|
|
26
|
-
instructions: 'Deterministic orbital mechanics calculations. Every field with a unit ends with it: r_m is metres, mu_m3_s2 is m³/s², v_m_s is m/s, T_d is days. Dimensionless fields such as e have no suffix. Angles are given as { value, unit: "deg" | "rad" } and returned as { rad, deg }. Dataset distances are in au or km: use convert_distance before passing them to tools that take metres. Prefer these tools over mental arithmetic.'
|
|
27
|
+
instructions: 'Deterministic orbital mechanics calculations. Every field with a unit ends with it: r_m is metres, mu_m3_s2 is m³/s², v_m_s is m/s, T_d is days. Dimensionless fields such as e have no suffix. Angles are given as { value, unit: "deg" | "rad" } and returned as { rad, deg }. Vectors are [x, y, z] arrays in an inertial frame centred on the body. Dataset distances are in au or km: use convert_distance before passing them to tools that take metres. Prefer these tools over mental arithmetic.'
|
|
27
28
|
});
|
|
28
29
|
registerOrbitTools(server);
|
|
30
|
+
registerStateVectorTools(server);
|
|
29
31
|
registerManoeuvreTools(server);
|
|
30
32
|
registerAnomalyTools(server);
|
|
31
33
|
registerTimeTools(server);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,CAAC,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAEhD,kFAAkF;AAClF,MAAM,CAAC,MAAM,cAAc,GAAW,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAClE,iBAAiB,CAClB,CAAC,OAAO,CAAC;AAEV;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAc,EAAE;IAC1C,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,EAC9C;QACE,YAAY,EACV,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,CAAC,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAEhD,kFAAkF;AAClF,MAAM,CAAC,MAAM,cAAc,GAAW,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAClE,iBAAiB,CAClB,CAAC,OAAO,CAAC;AAEV;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAc,EAAE;IAC1C,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,EAC9C;QACE,YAAY,EACV,2eAA2e;KAC9e,CACF,CAAC;IAEF,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvB,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manoeuvres.d.ts","sourceRoot":"","sources":["../../src/tools/manoeuvres.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manoeuvres.d.ts","sourceRoot":"","sources":["../../src/tools/manoeuvres.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE,eAAO,MAAM,sBAAsB,GAAI,QAAQ,SAAS,SAgLvD,CAAC"}
|
package/dist/tools/manoeuvres.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SECONDS_PER_DAY } from '@interstellar-tools/constants';
|
|
2
|
-
import { hohmannTransfer, planeChangeDeltaV, rocketDeltaVFromIsp } from '@interstellar-tools/equations';
|
|
2
|
+
import { characteristicEnergyC3, circularSpeed, hohmannTransfer, hyperbolicEccentricity, hyperbolicPeriapsisSpeed, planeChangeDeltaV, rocketDeltaVFromIsp, solveLambert } from '@interstellar-tools/equations';
|
|
3
3
|
import { z } from 'zod';
|
|
4
|
-
import { angleSchema, muSchema, PURE_TOOL, result, toRadians } from './shared.js';
|
|
4
|
+
import { angleSchema, muSchema, PURE_TOOL, result, toRadians, vectorOutputSchema, vectorSchema } from './shared.js';
|
|
5
5
|
const directionSchema = z.enum(['prograde', 'retrograde', 'none']);
|
|
6
6
|
export const registerManoeuvreTools = (server) => {
|
|
7
7
|
server.registerTool('hohmann_transfer', {
|
|
@@ -69,5 +69,69 @@ export const registerManoeuvreTools = (server) => {
|
|
|
69
69
|
outputSchema: { dv_m_s: z.number() },
|
|
70
70
|
annotations: PURE_TOOL
|
|
71
71
|
}, ({ v_m_s, delta_i }) => result({ dv_m_s: planeChangeDeltaV(v_m_s, toRadians(delta_i)) }));
|
|
72
|
+
server.registerTool('solve_lambert', {
|
|
73
|
+
title: 'Lambert’s problem',
|
|
74
|
+
description: 'Find the orbit from position r1 to position r2 in time dt (Lambert’s problem), single revolution, for ellipses and hyperbolas alike. Returns the velocities at both ends. Positions are in an inertial frame centred on the body. For the burns, subtract the velocity of the orbit you leave from v1, and v2 from the velocity of the orbit you join. Positions 0° or 180° apart are an error: the transfer plane is undefined. Feed v1 to state_to_elements for the transfer orbit.',
|
|
75
|
+
inputSchema: {
|
|
76
|
+
r1_m: vectorSchema('Start position [x, y, z], in metres.'),
|
|
77
|
+
r2_m: vectorSchema('End position [x, y, z], in metres.'),
|
|
78
|
+
dt_s: z.number().positive().describe('Time of flight, in seconds.'),
|
|
79
|
+
mu_m3_s2: muSchema,
|
|
80
|
+
prograde: z
|
|
81
|
+
.boolean()
|
|
82
|
+
.default(true)
|
|
83
|
+
.describe('true (default): fly counterclockwise seen from +z. false: clockwise.')
|
|
84
|
+
},
|
|
85
|
+
outputSchema: {
|
|
86
|
+
v1_m_s: vectorOutputSchema,
|
|
87
|
+
v2_m_s: vectorOutputSchema,
|
|
88
|
+
speed1_m_s: z.number(),
|
|
89
|
+
speed2_m_s: z.number()
|
|
90
|
+
},
|
|
91
|
+
annotations: PURE_TOOL
|
|
92
|
+
}, ({ r1_m, r2_m, dt_s, mu_m3_s2, prograde }) => {
|
|
93
|
+
const { v1, v2 } = solveLambert(r1_m, r2_m, dt_s, mu_m3_s2, {
|
|
94
|
+
prograde
|
|
95
|
+
});
|
|
96
|
+
return result({
|
|
97
|
+
v1_m_s: v1,
|
|
98
|
+
v2_m_s: v2,
|
|
99
|
+
speed1_m_s: Math.hypot(...v1),
|
|
100
|
+
speed2_m_s: Math.hypot(...v2)
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
server.registerTool('hyperbolic_departure', {
|
|
104
|
+
title: 'Hyperbolic departure or capture',
|
|
105
|
+
description: 'The burn from a circular parking orbit of radius rp onto the hyperbola that leaves the body with excess speed v∞, made at periapsis. The same Δv captures an arriving v∞ into that circular orbit. Also returns C3 = v∞², the launch-energy figure, and the hyperbola’s eccentricity. For an interplanetary transfer, v∞ is the difference between the planet’s velocity and the transfer orbit’s (from solve_lambert).',
|
|
106
|
+
inputSchema: {
|
|
107
|
+
v_inf_m_s: z
|
|
108
|
+
.number()
|
|
109
|
+
.positive()
|
|
110
|
+
.describe('Hyperbolic excess speed v∞, in m/s.'),
|
|
111
|
+
rp_m: z
|
|
112
|
+
.number()
|
|
113
|
+
.positive()
|
|
114
|
+
.describe('Periapsis radius, the parking orbit’s radius from the body’s centre, in metres.'),
|
|
115
|
+
mu_m3_s2: muSchema
|
|
116
|
+
},
|
|
117
|
+
outputSchema: {
|
|
118
|
+
vp_m_s: z.number(),
|
|
119
|
+
v_circular_m_s: z.number(),
|
|
120
|
+
dv_m_s: z.number(),
|
|
121
|
+
c3_m2_s2: z.number(),
|
|
122
|
+
e: z.number()
|
|
123
|
+
},
|
|
124
|
+
annotations: PURE_TOOL
|
|
125
|
+
}, ({ v_inf_m_s, rp_m, mu_m3_s2 }) => {
|
|
126
|
+
const vp = hyperbolicPeriapsisSpeed(v_inf_m_s, rp_m, mu_m3_s2);
|
|
127
|
+
const vc = circularSpeed(rp_m, mu_m3_s2);
|
|
128
|
+
return result({
|
|
129
|
+
vp_m_s: vp,
|
|
130
|
+
v_circular_m_s: vc,
|
|
131
|
+
dv_m_s: vp - vc,
|
|
132
|
+
c3_m2_s2: characteristicEnergyC3(v_inf_m_s),
|
|
133
|
+
e: hyperbolicEccentricity(v_inf_m_s, rp_m, mu_m3_s2)
|
|
134
|
+
});
|
|
135
|
+
});
|
|
72
136
|
};
|
|
73
137
|
//# sourceMappingURL=manoeuvres.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manoeuvres.js","sourceRoot":"","sources":["../../src/tools/manoeuvres.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"manoeuvres.js","sourceRoot":"","sources":["../../src/tools/manoeuvres.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/shared.d.ts
CHANGED
|
@@ -12,6 +12,10 @@ export declare const angleSchema: z.ZodObject<{
|
|
|
12
12
|
}>;
|
|
13
13
|
}, z.core.$strip>;
|
|
14
14
|
export type AngleInputType = z.infer<typeof angleSchema>;
|
|
15
|
+
/** A 3D vector input, such as a position or a velocity. */
|
|
16
|
+
export declare const vectorSchema: (description: string) => z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
17
|
+
/** A 3D vector output. */
|
|
18
|
+
export declare const vectorOutputSchema: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
|
|
15
19
|
/** Angle output carrying both radians and degrees. */
|
|
16
20
|
export declare const angleOutputSchema: z.ZodObject<{
|
|
17
21
|
rad: z.ZodNumber;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,0EAA0E;AAC1E,eAAO,MAAM,QAAQ,aAKlB,CAAC;AAEJ,0DAA0D;AAC1D,eAAO,MAAM,WAAW;;;;;;iBAKuD,CAAC;AAEhF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzD,sDAAsD;AACtD,eAAO,MAAM,iBAAiB;;;iBAG5B,CAAC;AAEH,eAAO,MAAM,SAAS,GAAI,iBAAiB,cAAc,KAAG,OACR,CAAC;AAErD,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM;;;CAGrC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtD,MAAM,CAAC,KACN,cAAc,GAAG;IAAE,iBAAiB,EAAE,CAAC,CAAA;CAGxC,CAAC;AAEH,uFAAuF;AACvF,eAAO,MAAM,SAAS;;;;;CAKZ,CAAC"}
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,0EAA0E;AAC1E,eAAO,MAAM,QAAQ,aAKlB,CAAC;AAEJ,0DAA0D;AAC1D,eAAO,MAAM,WAAW;;;;;;iBAKuD,CAAC;AAEhF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzD,2DAA2D;AAC3D,eAAO,MAAM,YAAY,GAAI,aAAa,MAAM,8DAGtB,CAAC;AAE3B,0BAA0B;AAC1B,eAAO,MAAM,kBAAkB,2DAAgD,CAAC;AAEhF,sDAAsD;AACtD,eAAO,MAAM,iBAAiB;;;iBAG5B,CAAC;AAEH,eAAO,MAAM,SAAS,GAAI,iBAAiB,cAAc,KAAG,OACR,CAAC;AAErD,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM;;;CAGrC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtD,MAAM,CAAC,KACN,cAAc,GAAG;IAAE,iBAAiB,EAAE,CAAC,CAAA;CAGxC,CAAC;AAEH,uFAAuF;AACvF,eAAO,MAAM,SAAS;;;;;CAKZ,CAAC"}
|
package/dist/tools/shared.js
CHANGED
|
@@ -12,6 +12,12 @@ export const angleSchema = z
|
|
|
12
12
|
unit: z.enum(['deg', 'rad'])
|
|
13
13
|
})
|
|
14
14
|
.describe('Angle with explicit unit, e.g. { "value": 28.5, "unit": "deg" }.');
|
|
15
|
+
/** A 3D vector input, such as a position or a velocity. */
|
|
16
|
+
export const vectorSchema = (description) => z
|
|
17
|
+
.tuple([z.number().finite(), z.number().finite(), z.number().finite()])
|
|
18
|
+
.describe(description);
|
|
19
|
+
/** A 3D vector output. */
|
|
20
|
+
export const vectorOutputSchema = z.tuple([z.number(), z.number(), z.number()]);
|
|
15
21
|
/** Angle output carrying both radians and degrees. */
|
|
16
22
|
export const angleOutputSchema = z.object({
|
|
17
23
|
rad: z.number(),
|
package/dist/tools/shared.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAGtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,0EAA0E;AAC1E,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC;KACtB,MAAM,EAAE;KACR,QAAQ,EAAE;KACV,QAAQ,CACP,wKAAwK,CACzK,CAAC;AAEJ,0DAA0D;AAC1D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC;KACzB,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE;IAC1B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7B,CAAC;KACD,QAAQ,CAAC,kEAAkE,CAAC,CAAC;AAIhF,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;CAChB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAkB,EAAW,EAAE,CACpE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAiB,CAAC;AAErD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC;IAC3C,GAAG;IACH,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE;CAC3B,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,IAAO,EACoC,EAAE,CAAC,CAAC;IAC/C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IAChE,iBAAiB,EAAE,IAAI;CACxB,CAAC,CAAC;AAEH,uFAAuF;AACvF,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,YAAY,EAAE,IAAI;IAClB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,KAAK;CACZ,CAAC"}
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAGtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,0EAA0E;AAC1E,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC;KACtB,MAAM,EAAE;KACR,QAAQ,EAAE;KACV,QAAQ,CACP,wKAAwK,CACzK,CAAC;AAEJ,0DAA0D;AAC1D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC;KACzB,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE;IAC1B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;CAC7B,CAAC;KACD,QAAQ,CAAC,kEAAkE,CAAC,CAAC;AAIhF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,WAAmB,EAAE,EAAE,CAClD,CAAC;KACE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;KACtE,QAAQ,CAAC,WAAW,CAAC,CAAC;AAE3B,0BAA0B;AAC1B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAEhF,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;CAChB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAkB,EAAW,EAAE,CACpE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAiB,CAAC;AAErD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC;IAC3C,GAAG;IACH,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE;CAC3B,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,IAAO,EACoC,EAAE,CAAC,CAAC;IAC/C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IAChE,iBAAiB,EAAE,IAAI;CACxB,CAAC,CAAC;AAEH,uFAAuF;AACvF,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,YAAY,EAAE,IAAI;IAClB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,KAAK;CACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-vectors.d.ts","sourceRoot":"","sources":["../../src/tools/state-vectors.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE,eAAO,MAAM,wBAAwB,GAAI,QAAQ,SAAS,SAyFzD,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { elementsToState, stateToElements } from '@interstellar-tools/equations';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { angleOutput, angleOutputSchema, angleSchema, muSchema, PURE_TOOL, result, toRadians, vectorOutputSchema, vectorSchema } from './shared.js';
|
|
4
|
+
export const registerStateVectorTools = (server) => {
|
|
5
|
+
server.registerTool('state_to_elements', {
|
|
6
|
+
title: 'State vector to orbital elements',
|
|
7
|
+
description: 'Classical orbital elements (a, e, i, Ω, ω, ν) from a position and velocity in an inertial frame centred on the body. Works for ellipses and hyperbolas. For a circular orbit ω is 0 and ν is measured from the node; for an equatorial one Ω is 0. Returns the periapsis radius, the specific energy, and the period if the orbit is elliptic.',
|
|
8
|
+
inputSchema: {
|
|
9
|
+
r_m: vectorSchema('Position [x, y, z], in metres.'),
|
|
10
|
+
v_m_s: vectorSchema('Velocity [vx, vy, vz], in m/s.'),
|
|
11
|
+
mu_m3_s2: muSchema
|
|
12
|
+
},
|
|
13
|
+
outputSchema: {
|
|
14
|
+
a_m: z.number(),
|
|
15
|
+
e: z.number(),
|
|
16
|
+
i: angleOutputSchema,
|
|
17
|
+
raan: angleOutputSchema,
|
|
18
|
+
argp: angleOutputSchema,
|
|
19
|
+
nu: angleOutputSchema,
|
|
20
|
+
rp_m: z.number(),
|
|
21
|
+
energy_m2_s2: z.number(),
|
|
22
|
+
T_s: z.number().optional()
|
|
23
|
+
},
|
|
24
|
+
annotations: PURE_TOOL
|
|
25
|
+
}, ({ r_m, v_m_s, mu_m3_s2 }) => {
|
|
26
|
+
const { a, e, i, raan, argp, nu } = stateToElements(r_m, v_m_s, mu_m3_s2);
|
|
27
|
+
return result({
|
|
28
|
+
a_m: a,
|
|
29
|
+
e,
|
|
30
|
+
i: angleOutput(i),
|
|
31
|
+
raan: angleOutput(raan),
|
|
32
|
+
argp: angleOutput(argp),
|
|
33
|
+
nu: angleOutput(nu),
|
|
34
|
+
rp_m: a * (1 - e),
|
|
35
|
+
energy_m2_s2: -mu_m3_s2 / (2 * a),
|
|
36
|
+
...(e < 1 && { T_s: 2 * Math.PI * Math.sqrt(a ** 3 / mu_m3_s2) })
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
server.registerTool('elements_to_state', {
|
|
40
|
+
title: 'Orbital elements to state vector',
|
|
41
|
+
description: 'Position and velocity in an inertial frame centred on the body, from classical orbital elements. Use a > 0 with e < 1 for an ellipse and a < 0 with e > 1 for a hyperbola; parabolas (e = 1) are not supported.',
|
|
42
|
+
inputSchema: {
|
|
43
|
+
a_m: z
|
|
44
|
+
.number()
|
|
45
|
+
.finite()
|
|
46
|
+
.refine((a) => a !== 0, 'a must be non-zero')
|
|
47
|
+
.describe('Semi-major axis, in metres. Positive for elliptic, negative for hyperbolic.'),
|
|
48
|
+
e: z
|
|
49
|
+
.number()
|
|
50
|
+
.nonnegative()
|
|
51
|
+
.refine((e) => e !== 1, 'e must not be 1 (parabolic)')
|
|
52
|
+
.describe('Eccentricity, e ≥ 0 and e ≠ 1.'),
|
|
53
|
+
i: angleSchema.describe('Inclination, in [0°, 180°].'),
|
|
54
|
+
raan: angleSchema.describe('Right ascension of the ascending node Ω.'),
|
|
55
|
+
argp: angleSchema.describe('Argument of periapsis ω.'),
|
|
56
|
+
nu: angleSchema.describe('True anomaly ν.'),
|
|
57
|
+
mu_m3_s2: muSchema
|
|
58
|
+
},
|
|
59
|
+
outputSchema: {
|
|
60
|
+
r_m: vectorOutputSchema,
|
|
61
|
+
v_m_s: vectorOutputSchema
|
|
62
|
+
},
|
|
63
|
+
annotations: PURE_TOOL
|
|
64
|
+
}, ({ a_m, e, i, raan, argp, nu, mu_m3_s2 }) => {
|
|
65
|
+
const { r, v } = elementsToState({
|
|
66
|
+
a: a_m,
|
|
67
|
+
e,
|
|
68
|
+
i: toRadians(i),
|
|
69
|
+
raan: toRadians(raan),
|
|
70
|
+
argp: toRadians(argp),
|
|
71
|
+
nu: toRadians(nu)
|
|
72
|
+
}, mu_m3_s2);
|
|
73
|
+
return result({ r_m: r, v_m_s: v });
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=state-vectors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-vectors.js","sourceRoot":"","sources":["../../src/tools/state-vectors.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@interstellar-tools/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Model Context Protocol (MCP) server exposing interstellar-tools orbital mechanics equations and celestial body datasets to AI assistants.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|
|
@@ -56,11 +56,11 @@
|
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"@interstellar-tools/constants": "^1.0.0",
|
|
59
|
-
"@interstellar-tools/equations": "^1.
|
|
59
|
+
"@interstellar-tools/equations": "^1.8.0",
|
|
60
60
|
"@interstellar-tools/temporal": "^1.0.0",
|
|
61
61
|
"@interstellar-tools/types": "^1.0.0",
|
|
62
|
-
"@modelcontextprotocol/sdk": "1.
|
|
63
|
-
"zod": "4.6.
|
|
62
|
+
"@modelcontextprotocol/sdk": "1.32.2",
|
|
63
|
+
"zod": "4.6.7"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
66
|
"@types/node": "^24.19.2",
|