astronomy-oracle 0.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.
Files changed (61) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +142 -0
  3. package/data/NGC.csv +13970 -0
  4. package/data/addendum.csv +65 -0
  5. package/dist/astro/coordinates.d.ts +20 -0
  6. package/dist/astro/coordinates.d.ts.map +1 -0
  7. package/dist/astro/coordinates.js +45 -0
  8. package/dist/astro/coordinates.js.map +1 -0
  9. package/dist/astro/time.d.ts +20 -0
  10. package/dist/astro/time.d.ts.map +1 -0
  11. package/dist/astro/time.js +53 -0
  12. package/dist/astro/time.js.map +1 -0
  13. package/dist/astro/visibility.d.ts +25 -0
  14. package/dist/astro/visibility.d.ts.map +1 -0
  15. package/dist/astro/visibility.js +119 -0
  16. package/dist/astro/visibility.js.map +1 -0
  17. package/dist/data/catalog.d.ts +20 -0
  18. package/dist/data/catalog.d.ts.map +1 -0
  19. package/dist/data/catalog.js +127 -0
  20. package/dist/data/catalog.js.map +1 -0
  21. package/dist/data/parse-coordinates.d.ts +13 -0
  22. package/dist/data/parse-coordinates.d.ts.map +1 -0
  23. package/dist/data/parse-coordinates.js +39 -0
  24. package/dist/data/parse-coordinates.js.map +1 -0
  25. package/dist/format.d.ts +20 -0
  26. package/dist/format.d.ts.map +1 -0
  27. package/dist/format.js +204 -0
  28. package/dist/format.js.map +1 -0
  29. package/dist/index.d.ts +6 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +21 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/lib/search.d.ts +11 -0
  34. package/dist/lib/search.d.ts.map +1 -0
  35. package/dist/lib/search.js +21 -0
  36. package/dist/lib/search.js.map +1 -0
  37. package/dist/register-tools.d.ts +6 -0
  38. package/dist/register-tools.d.ts.map +1 -0
  39. package/dist/register-tools.js +12 -0
  40. package/dist/register-tools.js.map +1 -0
  41. package/dist/server.d.ts +6 -0
  42. package/dist/server.d.ts.map +1 -0
  43. package/dist/server.js +14 -0
  44. package/dist/server.js.map +1 -0
  45. package/dist/tools/lookup-object.d.ts +6 -0
  46. package/dist/tools/lookup-object.d.ts.map +1 -0
  47. package/dist/tools/lookup-object.js +82 -0
  48. package/dist/tools/lookup-object.js.map +1 -0
  49. package/dist/tools/plan-session.d.ts +6 -0
  50. package/dist/tools/plan-session.d.ts.map +1 -0
  51. package/dist/tools/plan-session.js +118 -0
  52. package/dist/tools/plan-session.js.map +1 -0
  53. package/dist/tools/search-objects.d.ts +6 -0
  54. package/dist/tools/search-objects.d.ts.map +1 -0
  55. package/dist/tools/search-objects.js +108 -0
  56. package/dist/tools/search-objects.js.map +1 -0
  57. package/dist/types.d.ts +72 -0
  58. package/dist/types.d.ts.map +1 -0
  59. package/dist/types.js +28 -0
  60. package/dist/types.js.map +1 -0
  61. package/package.json +43 -0
@@ -0,0 +1,108 @@
1
+ /**
2
+ * search_objects tool — filter and browse the celestial object catalog.
3
+ */
4
+ import { z } from "zod";
5
+ import { getCatalog } from "../data/catalog.js";
6
+ import { OBJECT_TYPES } from "../types.js";
7
+ import { formatSearchResults } from "../format.js";
8
+ const typeKeys = Object.keys(OBJECT_TYPES).filter((k) => k !== "NonEx" && k !== "Dup");
9
+ export function registerSearchObjects(server) {
10
+ server.tool("search_objects", "Search and filter the celestial object catalog by type, constellation, magnitude, angular size, or catalog membership. Returns a formatted table of matching objects sorted by brightness.", {
11
+ type: z
12
+ .enum(typeKeys)
13
+ .optional()
14
+ .describe("Object type code (e.g. G=Galaxy, PN=Planetary Nebula, OCl=Open Cluster)"),
15
+ constellation: z
16
+ .string()
17
+ .optional()
18
+ .describe("IAU constellation abbreviation (e.g. Ori, And, Sgr)"),
19
+ maxMagnitude: z
20
+ .number()
21
+ .optional()
22
+ .describe("Maximum (faintest) visual magnitude to include"),
23
+ minMagnitude: z
24
+ .number()
25
+ .optional()
26
+ .describe("Minimum (brightest) visual magnitude to include"),
27
+ minSize: z
28
+ .number()
29
+ .optional()
30
+ .describe("Minimum angular size in arcminutes"),
31
+ catalog: z
32
+ .enum(["messier", "caldwell", "ngc", "ic"])
33
+ .optional()
34
+ .describe("Filter by catalog membership"),
35
+ limit: z
36
+ .number()
37
+ .min(1)
38
+ .max(100)
39
+ .optional()
40
+ .describe("Maximum number of results (default 20, max 100)"),
41
+ }, async (params) => {
42
+ const store = await getCatalog();
43
+ const { type, constellation, maxMagnitude, minMagnitude, minSize, catalog: catalogFilter, limit, } = params;
44
+ const maxResults = limit ?? 20;
45
+ let results = [...store.all.values()];
46
+ // Filter by type
47
+ if (type) {
48
+ results = results.filter((obj) => obj.type === type);
49
+ }
50
+ // Filter by constellation
51
+ if (constellation) {
52
+ const lc = constellation.toLowerCase();
53
+ results = results.filter((obj) => obj.constellation.toLowerCase() === lc);
54
+ }
55
+ // Filter by max magnitude (faintest)
56
+ if (maxMagnitude !== undefined) {
57
+ results = results.filter((obj) => obj.magnitude !== null && obj.magnitude <= maxMagnitude);
58
+ }
59
+ // Filter by min magnitude (brightest)
60
+ if (minMagnitude !== undefined) {
61
+ results = results.filter((obj) => obj.magnitude !== null && obj.magnitude >= minMagnitude);
62
+ }
63
+ // Filter by minimum angular size
64
+ if (minSize !== undefined) {
65
+ results = results.filter((obj) => obj.majorAxis !== null && obj.majorAxis >= minSize);
66
+ }
67
+ // Filter by catalog
68
+ if (catalogFilter) {
69
+ switch (catalogFilter) {
70
+ case "messier":
71
+ results = results.filter((obj) => obj.messier !== null);
72
+ break;
73
+ case "ngc":
74
+ results = results.filter((obj) => obj.name.startsWith("NGC"));
75
+ break;
76
+ case "ic":
77
+ results = results.filter((obj) => obj.name.startsWith("IC"));
78
+ break;
79
+ case "caldwell":
80
+ // Caldwell objects have "C" in otherIdentifiers — approximate
81
+ results = results.filter((obj) => obj.otherIdentifiers !== null &&
82
+ /\bC\d+\b/.test(obj.otherIdentifiers));
83
+ break;
84
+ }
85
+ }
86
+ // Sort by magnitude (brightest first, nulls last)
87
+ results.sort((a, b) => {
88
+ if (a.magnitude === null && b.magnitude === null)
89
+ return 0;
90
+ if (a.magnitude === null)
91
+ return 1;
92
+ if (b.magnitude === null)
93
+ return -1;
94
+ return a.magnitude - b.magnitude;
95
+ });
96
+ // Apply limit
97
+ results = results.slice(0, maxResults);
98
+ return {
99
+ content: [
100
+ {
101
+ type: "text",
102
+ text: formatSearchResults(results),
103
+ },
104
+ ],
105
+ };
106
+ });
107
+ }
108
+ //# sourceMappingURL=search-objects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-objects.js","sourceRoot":"","sources":["../../src/tools/search-objects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Core data types for the astronomy-oracle MCP server.
3
+ */
4
+ /** Map of OpenNGC object type codes to human-readable names. */
5
+ export declare const OBJECT_TYPES: {
6
+ readonly "*": "Star";
7
+ readonly "**": "Double Star";
8
+ readonly "*Ass": "Stellar Association";
9
+ readonly OCl: "Open Cluster";
10
+ readonly GCl: "Globular Cluster";
11
+ readonly "Cl+N": "Cluster + Nebula";
12
+ readonly G: "Galaxy";
13
+ readonly GPair: "Galaxy Pair";
14
+ readonly GTrpl: "Galaxy Triplet";
15
+ readonly GGroup: "Galaxy Group";
16
+ readonly PN: "Planetary Nebula";
17
+ readonly HII: "HII Region";
18
+ readonly DrkN: "Dark Nebula";
19
+ readonly EmN: "Emission Nebula";
20
+ readonly Neb: "Nebula";
21
+ readonly RfN: "Reflection Nebula";
22
+ readonly SNR: "Supernova Remnant";
23
+ readonly Nova: "Nova";
24
+ readonly NonEx: "Non-Existent";
25
+ readonly Dup: "Duplicate";
26
+ readonly Other: "Other";
27
+ };
28
+ /** Valid object type codes from the OpenNGC catalog. */
29
+ export type ObjectTypeCode = keyof typeof OBJECT_TYPES;
30
+ /** A parsed celestial object from the catalog. */
31
+ export interface CelestialObject {
32
+ name: string;
33
+ type: ObjectTypeCode;
34
+ typeName: string;
35
+ ra: number;
36
+ dec: number;
37
+ constellation: string;
38
+ magnitude: number | null;
39
+ surfaceBrightness: number | null;
40
+ majorAxis: number | null;
41
+ minorAxis: number | null;
42
+ positionAngle: number | null;
43
+ hubbleType: string | null;
44
+ messier: string | null;
45
+ ngcCrossRef: string | null;
46
+ icCrossRef: string | null;
47
+ commonName: string | null;
48
+ otherIdentifiers: string | null;
49
+ }
50
+ /** Supported catalog identifiers. */
51
+ export type Catalog = "messier" | "caldwell" | "ngc" | "ic";
52
+ /** Visibility information for an object at a given time and location. */
53
+ export interface VisibilityInfo {
54
+ altitude: number;
55
+ azimuth: number;
56
+ riseTime: Date | null;
57
+ transitTime: Date | null;
58
+ setTime: Date | null;
59
+ isCircumpolar: boolean;
60
+ neverRises: boolean;
61
+ }
62
+ /** Time window within an observing session. */
63
+ export type SessionWindow = "evening" | "midnight" | "predawn";
64
+ /** An object scored and scheduled within an observing session. */
65
+ export interface SessionObject {
66
+ object: CelestialObject;
67
+ peakAltitude: number;
68
+ transitTime: Date;
69
+ window: SessionWindow;
70
+ score: number;
71
+ }
72
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gEAAgE;AAChE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;CAsBf,CAAC;AAEX,wDAAwD;AACxD,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,YAAY,CAAC;AAEvD,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,qCAAqC;AACrC,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC;AAE5D,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,+CAA+C;AAC/C,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAE/D,kEAAkE;AAClE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,eAAe,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,IAAI,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf"}
package/dist/types.js ADDED
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Core data types for the astronomy-oracle MCP server.
3
+ */
4
+ /** Map of OpenNGC object type codes to human-readable names. */
5
+ export const OBJECT_TYPES = {
6
+ "*": "Star",
7
+ "**": "Double Star",
8
+ "*Ass": "Stellar Association",
9
+ OCl: "Open Cluster",
10
+ GCl: "Globular Cluster",
11
+ "Cl+N": "Cluster + Nebula",
12
+ G: "Galaxy",
13
+ GPair: "Galaxy Pair",
14
+ GTrpl: "Galaxy Triplet",
15
+ GGroup: "Galaxy Group",
16
+ PN: "Planetary Nebula",
17
+ HII: "HII Region",
18
+ DrkN: "Dark Nebula",
19
+ EmN: "Emission Nebula",
20
+ Neb: "Nebula",
21
+ RfN: "Reflection Nebula",
22
+ SNR: "Supernova Remnant",
23
+ Nova: "Nova",
24
+ NonEx: "Non-Existent",
25
+ Dup: "Duplicate",
26
+ Other: "Other",
27
+ };
28
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gEAAgE;AAChE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,aAAa;IACnB,MAAM,EAAE,qBAAqB;IAC7B,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,kBAAkB;IACvB,MAAM,EAAE,kBAAkB;IAC1B,CAAC,EAAE,QAAQ;IACX,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,gBAAgB;IACvB,MAAM,EAAE,cAAc;IACtB,EAAE,EAAE,kBAAkB;IACtB,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,aAAa;IACnB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,mBAAmB;IACxB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,cAAc;IACrB,GAAG,EAAE,WAAW;IAChB,KAAK,EAAE,OAAO;CACN,CAAC"}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "astronomy-oracle",
3
+ "version": "0.1.0",
4
+ "description": "Celestial object catalog and observing session planner MCP server",
5
+ "mcpName": "io.github.gregario/astronomy-oracle",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/gregario/astronomy-oracle.git"
9
+ },
10
+ "type": "module",
11
+ "bin": {
12
+ "astronomy-oracle": "dist/index.js"
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "data",
17
+ "README.md",
18
+ "LICENSE"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc && chmod 755 dist/index.js",
22
+ "dev": "tsx src/index.ts",
23
+ "lint": "tsc --noEmit",
24
+ "test": "vitest run",
25
+ "test:watch": "vitest",
26
+ "inspect": "npx @modelcontextprotocol/inspector node dist/index.js",
27
+ "prepublishOnly": "npm run build && npm test"
28
+ },
29
+ "dependencies": {
30
+ "@modelcontextprotocol/sdk": "^1.12",
31
+ "zod": "^3.25"
32
+ },
33
+ "devDependencies": {
34
+ "@types/node": "^22.0.0",
35
+ "tsx": "^4.0.0",
36
+ "typescript": "^5.7.0",
37
+ "vitest": "^3.0.0"
38
+ },
39
+ "engines": {
40
+ "node": ">=18"
41
+ },
42
+ "license": "MIT"
43
+ }