aqc-mcp 1.0.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 (48) hide show
  1. package/LICENSE +28 -0
  2. package/README.md +422 -0
  3. package/dist/index.d.ts +2 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +182 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/tools/ads.d.ts +4 -0
  8. package/dist/tools/ads.d.ts.map +1 -0
  9. package/dist/tools/ads.js +31 -0
  10. package/dist/tools/ads.js.map +1 -0
  11. package/dist/tools/alma.d.ts +4 -0
  12. package/dist/tools/alma.d.ts.map +1 -0
  13. package/dist/tools/alma.js +40 -0
  14. package/dist/tools/alma.js.map +1 -0
  15. package/dist/tools/call.d.ts +15 -0
  16. package/dist/tools/call.d.ts.map +1 -0
  17. package/dist/tools/call.js +31 -0
  18. package/dist/tools/call.js.map +1 -0
  19. package/dist/tools/gaia.d.ts +4 -0
  20. package/dist/tools/gaia.d.ts.map +1 -0
  21. package/dist/tools/gaia.js +31 -0
  22. package/dist/tools/gaia.js.map +1 -0
  23. package/dist/tools/index.d.ts +3 -0
  24. package/dist/tools/index.d.ts.map +1 -0
  25. package/dist/tools/index.js +72 -0
  26. package/dist/tools/index.js.map +1 -0
  27. package/dist/tools/simbad.d.ts +4 -0
  28. package/dist/tools/simbad.d.ts.map +1 -0
  29. package/dist/tools/simbad.js +29 -0
  30. package/dist/tools/simbad.js.map +1 -0
  31. package/dist/tools/vizier.d.ts +4 -0
  32. package/dist/tools/vizier.d.ts.map +1 -0
  33. package/dist/tools/vizier.js +38 -0
  34. package/dist/tools/vizier.js.map +1 -0
  35. package/dist/utils/executor.d.ts +12 -0
  36. package/dist/utils/executor.d.ts.map +1 -0
  37. package/dist/utils/executor.js +48 -0
  38. package/dist/utils/executor.js.map +1 -0
  39. package/package.json +38 -0
  40. package/src/index.ts +199 -0
  41. package/src/tools/ads.ts +41 -0
  42. package/src/tools/alma.ts +47 -0
  43. package/src/tools/gaia.ts +42 -0
  44. package/src/tools/index.ts +95 -0
  45. package/src/tools/simbad.ts +40 -0
  46. package/src/tools/vizier.ts +46 -0
  47. package/src/utils/executor.ts +59 -0
  48. package/tsconfig.json +20 -0
@@ -0,0 +1,4 @@
1
+ declare let executeAlmaQuery: (ra?: number, dec?: number, radius?: number, catalog?: string, lang?: string) => Promise<string>;
2
+ export declare function registerAlmaTools(server: any): void;
3
+ export { executeAlmaQuery };
4
+ //# sourceMappingURL=alma.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alma.d.ts","sourceRoot":"","sources":["../../src/tools/alma.ts"],"names":[],"mappings":"AAGA,QAAA,IAAI,gBAAgB,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAEvH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,QAuC5C;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { z } from 'zod';
2
+ import { executeAqc } from '../utils/executor.js';
3
+ let executeAlmaQuery;
4
+ export function registerAlmaTools(server) {
5
+ executeAlmaQuery = async (ra, dec, radius, catalog, lang) => {
6
+ const args = ['alma', 'query'];
7
+ if (ra !== undefined)
8
+ args.push('--ra', ra.toString());
9
+ if (dec !== undefined)
10
+ args.push('--dec', dec.toString());
11
+ if (radius !== undefined)
12
+ args.push('--radius', radius.toString());
13
+ if (catalog)
14
+ args.push('--catalog', catalog);
15
+ if (lang)
16
+ args.push('--lang', lang);
17
+ const result = await executeAqc(args);
18
+ if (!result.success) {
19
+ throw new Error(result.error);
20
+ }
21
+ return result.output || '';
22
+ };
23
+ server.tool('alma_query', 'Query ALMA archive for observations', {
24
+ ra: z.number().optional().describe('Right Ascension (degrees)'),
25
+ dec: z.number().optional().describe('Declination (degrees)'),
26
+ radius: z.number().optional().describe('Search radius (degrees)'),
27
+ catalog: z.string().optional().describe('Specific catalog to search'),
28
+ lang: z.enum(['en', 'zh']).optional().describe('Output language'),
29
+ }, async ({ ra, dec, radius, catalog, lang }) => {
30
+ const output = await executeAlmaQuery(ra, dec, radius, catalog, lang);
31
+ return {
32
+ content: [{
33
+ type: 'text',
34
+ text: output
35
+ }]
36
+ };
37
+ });
38
+ }
39
+ export { executeAlmaQuery };
40
+ //# sourceMappingURL=alma.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alma.js","sourceRoot":"","sources":["../../src/tools/alma.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,IAAI,gBAAkH,CAAC;AAEvH,MAAM,UAAU,iBAAiB,CAAC,MAAW;IAC3C,gBAAgB,GAAG,KAAK,EAAE,EAAW,EAAE,GAAY,EAAE,MAAe,EAAE,OAAgB,EAAE,IAAa,EAAE,EAAE;QACvG,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,IAAI,EAAE,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvD,IAAI,GAAG,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1D,IAAI,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,IAAI,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEpC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,qCAAqC,EACrC;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAC/D,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QACjE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACrE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KAClE,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAO,EAAE,EAAE;QAChD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAEtE,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM;iBACb,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
+ /**
3
+ * Call a registered MCP tool
4
+ */
5
+ export declare function callTool(server: Server, name: string, args: any): Promise<{
6
+ content: {
7
+ type: string;
8
+ text: any;
9
+ }[];
10
+ isError: boolean;
11
+ } | {
12
+ content: any;
13
+ isError?: undefined;
14
+ }>;
15
+ //# sourceMappingURL=call.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../src/tools/call.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE;;GAEG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;;;;;;;;;GA8BrE"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Call a registered MCP tool
3
+ */
4
+ export async function callTool(server, name, args) {
5
+ const tools = await listTools(server);
6
+ const tool = tools.tools.find(t => t.name === name);
7
+ if (!tool) {
8
+ return {
9
+ content: [{
10
+ type: 'text',
11
+ text: `Tool '${name}' not found. Available tools: ${tools.tools.map(t => t.name).join(', ')}`
12
+ }],
13
+ isError: true
14
+ };
15
+ }
16
+ // Execute the tool
17
+ const result = await tool.inputSchema.execute(args);
18
+ if (result.isError) {
19
+ return {
20
+ content: [{
21
+ type: 'text',
22
+ text: result.content[0].text
23
+ }],
24
+ isError: true
25
+ };
26
+ }
27
+ return {
28
+ content: result.content
29
+ };
30
+ }
31
+ //# sourceMappingURL=call.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call.js","sourceRoot":"","sources":["../../src/tools/call.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAc,EAAE,IAAY,EAAE,IAAS;IACpE,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAEpD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,SAAS,IAAI,iCAAiC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBAC9F,CAAC;YACF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,mBAAmB;IACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;iBAC7B,CAAC;YACF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ declare let executeGaiaConeSearch: (ra: number, dec: number, radius?: number, lang?: string) => Promise<string>;
2
+ export declare function registerGaiaTools(server: any): void;
3
+ export { executeGaiaConeSearch };
4
+ //# sourceMappingURL=gaia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaia.d.ts","sourceRoot":"","sources":["../../src/tools/gaia.ts"],"names":[],"mappings":"AAGA,QAAA,IAAI,qBAAqB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAExG,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,QAkC5C;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { z } from 'zod';
2
+ import { executeAqc } from '../utils/executor.js';
3
+ let executeGaiaConeSearch;
4
+ export function registerGaiaTools(server) {
5
+ executeGaiaConeSearch = async (ra, dec, radius, lang) => {
6
+ const args = ['gaia', 'cone-search', '--ra', ra.toString(), '--dec', dec.toString(), '--radius', (radius || 1).toString()];
7
+ if (lang)
8
+ args.push('--lang', lang);
9
+ const result = await executeAqc(args);
10
+ if (!result.success) {
11
+ throw new Error(result.error);
12
+ }
13
+ return result.output || '';
14
+ };
15
+ server.tool('gaia_cone_search', 'Query Gaia archive via cone search', {
16
+ ra: z.number().describe('Right Ascension (degrees)'),
17
+ dec: z.number().describe('Declination (degrees)'),
18
+ radius: z.number().optional().default(1).describe('Search radius (degrees)'),
19
+ lang: z.enum(['en', 'zh']).optional().describe('Output language'),
20
+ }, async ({ ra, dec, radius, lang }) => {
21
+ const output = await executeGaiaConeSearch(ra, dec, radius, lang);
22
+ return {
23
+ content: [{
24
+ type: 'text',
25
+ text: output
26
+ }]
27
+ };
28
+ });
29
+ }
30
+ export { executeGaiaConeSearch };
31
+ //# sourceMappingURL=gaia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaia.js","sourceRoot":"","sources":["../../src/tools/gaia.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,IAAI,qBAAmG,CAAC;AAExG,MAAM,UAAU,iBAAiB,CAAC,MAAW;IAC3C,qBAAqB,GAAG,KAAK,EAAE,EAAU,EAAE,GAAW,EAAE,MAAe,EAAE,IAAa,EAAE,EAAE;QACxF,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3H,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEpC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,oCAAoC,EACpC;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QACpD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACjD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAC5E,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KAClE,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAO,EAAE,EAAE;QACvC,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAElE,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM;iBACb,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function listTools(mcpServer: McpServer): Promise<void>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAsB,SAAS,CAAC,SAAS,EAAE,SAAS,iBA0FnD"}
@@ -0,0 +1,72 @@
1
+ import { executeAqc } from '../utils/executor.js';
2
+ export async function listTools(mcpServer) {
3
+ // SIMBAD - simbad object NAME
4
+ mcpServer.registerTool('simbad_query', {
5
+ description: 'Query the SIMBAD astronomical database for an object',
6
+ }, async ({ object_name, lang }) => {
7
+ const args = ['simbad', 'object', object_name];
8
+ if (lang)
9
+ args.push('--lang', lang);
10
+ const result = await executeAqc(args);
11
+ if (!result.success)
12
+ throw new Error(result.error);
13
+ return { content: [{ type: 'text', text: result.output || '' }] };
14
+ });
15
+ // VizieR - vizier object TARGET RADIUS
16
+ mcpServer.registerTool('vizier_query', {
17
+ description: 'Query the VizieR catalog database for an object or coordinates',
18
+ }, async ({ target, radius, catalog, lang }) => {
19
+ const args = ['vizier', 'object', target, radius];
20
+ if (catalog)
21
+ args.push('--catalog', catalog);
22
+ if (lang)
23
+ args.push('--lang', lang);
24
+ const result = await executeAqc(args);
25
+ if (!result.success)
26
+ throw new Error(result.error);
27
+ return { content: [{ type: 'text', text: result.output || '' }] };
28
+ });
29
+ // ALMA - alma object OBJECT_NAME
30
+ mcpServer.registerTool('alma_query', {
31
+ description: 'Query the ALMA archive for observations of an object',
32
+ }, async ({ object_name, lang }) => {
33
+ const args = ['alma', 'object', object_name];
34
+ if (lang)
35
+ args.push('--lang', lang);
36
+ const result = await executeAqc(args);
37
+ if (!result.success)
38
+ throw new Error(result.error);
39
+ return { content: [{ type: 'text', text: result.output || '' }] };
40
+ });
41
+ // ADS - ads query [QUERY_STRING]
42
+ mcpServer.registerTool('ads_query', {
43
+ description: 'Query NASA Astrophysics Data System for papers and bibliographic information',
44
+ }, async ({ query, latest, review, lang }) => {
45
+ const args = ['ads', 'query'];
46
+ if (latest)
47
+ args.push('--latest');
48
+ if (review)
49
+ args.push('--review');
50
+ if (query)
51
+ args.push(query);
52
+ if (lang)
53
+ args.push('--lang', lang);
54
+ const result = await executeAqc(args);
55
+ if (!result.success)
56
+ throw new Error(result.error);
57
+ return { content: [{ type: 'text', text: result.output || '' }] };
58
+ });
59
+ // Gaia - gaia cone-search TARGET --radius RADIUS
60
+ mcpServer.registerTool('gaia_cone_search', {
61
+ description: 'Query Gaia archive via cone search around an object or coordinates',
62
+ }, async ({ target, radius, lang }) => {
63
+ const args = ['gaia', 'cone-search', target, '--radius', radius || '10arcsec'];
64
+ if (lang)
65
+ args.push('--lang', lang);
66
+ const result = await executeAqc(args);
67
+ if (!result.success)
68
+ throw new Error(result.error);
69
+ return { content: [{ type: 'text', text: result.output || '' }] };
70
+ });
71
+ }
72
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ declare let executeSimbadQuery: (identifier: string, lang?: string) => Promise<string>;
2
+ export declare function registerSimbadTools(server: any): void;
3
+ export { executeSimbadQuery };
4
+ //# sourceMappingURL=simbad.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simbad.d.ts","sourceRoot":"","sources":["../../src/tools/simbad.ts"],"names":[],"mappings":"AAGA,QAAA,IAAI,kBAAkB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE/E,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,GAAG,QAgC9C;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { z } from 'zod';
2
+ import { executeAqc } from '../utils/executor.js';
3
+ let executeSimbadQuery;
4
+ export function registerSimbadTools(server) {
5
+ executeSimbadQuery = async (identifier, lang) => {
6
+ const args = ['simbad', 'query', '--identifier', identifier];
7
+ if (lang)
8
+ args.push('--lang', lang);
9
+ const result = await executeAqc(args);
10
+ if (!result.success) {
11
+ throw new Error(result.error);
12
+ }
13
+ return result.output || '';
14
+ };
15
+ server.tool('simbad_query', 'Query the SIMBAD astronomical database for an object identifier', {
16
+ identifier: z.string().describe('Object identifier (e.g., "M31", "NGC 1234")'),
17
+ lang: z.enum(['en', 'zh']).optional().describe('Output language'),
18
+ }, async ({ identifier, lang }) => {
19
+ const output = await executeSimbadQuery(identifier, lang);
20
+ return {
21
+ content: [{
22
+ type: 'text',
23
+ text: output
24
+ }]
25
+ };
26
+ });
27
+ }
28
+ export { executeSimbadQuery };
29
+ //# sourceMappingURL=simbad.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simbad.js","sourceRoot":"","sources":["../../src/tools/simbad.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,IAAI,kBAA0E,CAAC;AAE/E,MAAM,UAAU,mBAAmB,CAAC,MAAW;IAC7C,kBAAkB,GAAG,KAAK,EAAE,UAAkB,EAAE,IAAa,EAAE,EAAE;QAC/D,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;QAC7D,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEpC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,cAAc,EACd,iEAAiE,EACjE;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QAC9E,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KAClE,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAO,EAAE,EAAE;QAClC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE1D,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM;iBACb,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ declare let executeVizierQuery: (catalog: string, ra?: number, dec?: number, radius?: number, lang?: string) => Promise<string>;
2
+ export declare function registerVizierTools(server: any): void;
3
+ export { executeVizierQuery };
4
+ //# sourceMappingURL=vizier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vizier.d.ts","sourceRoot":"","sources":["../../src/tools/vizier.ts"],"names":[],"mappings":"AAGA,QAAA,IAAI,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAExH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,GAAG,QAsC9C;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { z } from 'zod';
2
+ import { executeAqc } from '../utils/executor.js';
3
+ let executeVizierQuery;
4
+ export function registerVizierTools(server) {
5
+ executeVizierQuery = async (catalog, ra, dec, radius, lang) => {
6
+ const args = ['vizier', 'query', '--catalog', catalog];
7
+ if (ra !== undefined)
8
+ args.push('--ra', ra.toString());
9
+ if (dec !== undefined)
10
+ args.push('--dec', dec.toString());
11
+ if (radius !== undefined)
12
+ args.push('--radius', radius.toString());
13
+ if (lang)
14
+ args.push('--lang', lang);
15
+ const result = await executeAqc(args);
16
+ if (!result.success) {
17
+ throw new Error(result.error);
18
+ }
19
+ return result.output || '';
20
+ };
21
+ server.tool('vizier_query', 'Query the VizieR catalog database for a specific catalog', {
22
+ catalog: z.string().describe('Catalog identifier (e.g., "VII/118")'),
23
+ ra: z.number().optional().describe('Right Ascension (degrees)'),
24
+ dec: z.number().optional().describe('Declination (degrees)'),
25
+ radius: z.number().optional().describe('Search radius (degrees)'),
26
+ lang: z.enum(['en', 'zh']).optional().describe('Output language'),
27
+ }, async ({ catalog, ra, dec, radius, lang }) => {
28
+ const output = await executeVizierQuery(catalog, ra, dec, radius, lang);
29
+ return {
30
+ content: [{
31
+ type: 'text',
32
+ text: output
33
+ }]
34
+ };
35
+ });
36
+ }
37
+ export { executeVizierQuery };
38
+ //# sourceMappingURL=vizier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vizier.js","sourceRoot":"","sources":["../../src/tools/vizier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,IAAI,kBAAmH,CAAC;AAExH,MAAM,UAAU,mBAAmB,CAAC,MAAW;IAC7C,kBAAkB,GAAG,KAAK,EAAE,OAAe,EAAE,EAAW,EAAE,GAAY,EAAE,MAAe,EAAE,IAAa,EAAE,EAAE;QACxG,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,EAAE,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvD,IAAI,GAAG,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1D,IAAI,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEpC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,cAAc,EACd,0DAA0D,EAC1D;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QACpE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAC/D,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QACjE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KAClE,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAO,EAAE,EAAE;QAChD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAExE,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM;iBACb,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface AqcResult {
2
+ success: boolean;
3
+ output?: string;
4
+ error?: string;
5
+ }
6
+ /**
7
+ * Execute astroquery-cli command
8
+ * @param args Command arguments (e.g., ['simbad', 'object', 'M31'])
9
+ * @returns Execution result
10
+ */
11
+ export declare function executeAqc(args: string[]): Promise<AqcResult>;
12
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/utils/executor.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAsCnE"}
@@ -0,0 +1,48 @@
1
+ import { exec } from 'child_process';
2
+ import { promisify } from 'util';
3
+ import { fileURLToPath } from 'url';
4
+ import { dirname, join } from 'path';
5
+ const execAsync = promisify(exec);
6
+ const __filename = fileURLToPath(import.meta.url);
7
+ const __dirname = dirname(__filename);
8
+ /**
9
+ * Execute astroquery-cli command
10
+ * @param args Command arguments (e.g., ['simbad', 'object', 'M31'])
11
+ * @returns Execution result
12
+ */
13
+ export async function executeAqc(args) {
14
+ try {
15
+ // Determine the CLI project root (parent of astroquery-mcp)
16
+ const cliRoot = join(__dirname, '..', '..', '..');
17
+ // Build command - use poetry run from CLI root directory
18
+ const command = `cd ${cliRoot} && poetry run aqc ${args.join(' ')}`;
19
+ // Pass through ADS_API_KEY if set
20
+ const env = { ...process.env };
21
+ if (process.env.ADS_API_KEY) {
22
+ env.ADS_API_KEY = process.env.ADS_API_KEY;
23
+ }
24
+ const { stdout, stderr } = await execAsync(command, {
25
+ maxBuffer: 10 * 1024 * 1024, // 10MB buffer
26
+ timeout: 60000, // 60s timeout
27
+ env,
28
+ shell: '/bin/bash'
29
+ });
30
+ if (stderr && !stdout) {
31
+ return {
32
+ success: false,
33
+ error: stderr
34
+ };
35
+ }
36
+ return {
37
+ success: true,
38
+ output: stdout || stderr
39
+ };
40
+ }
41
+ catch (error) {
42
+ return {
43
+ success: false,
44
+ error: error.message || String(error)
45
+ };
46
+ }
47
+ }
48
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/utils/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAClC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAQtC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAc;IAC7C,IAAI,CAAC;QACH,4DAA4D;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAElD,yDAAyD;QACzD,MAAM,OAAO,GAAG,MAAM,OAAO,sBAAsB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAEpE,kCAAkC;QAClC,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YAC5B,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;QAC5C,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE;YAClD,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,cAAc;YAC3C,OAAO,EAAE,KAAK,EAAE,cAAc;YAC9B,GAAG;YACH,KAAK,EAAE,WAAW;SACnB,CAAC,CAAC;QAEH,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACtB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,MAAM;aACd,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,MAAM,IAAI,MAAM;SACzB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC;SACtC,CAAC;IACJ,CAAC;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "aqc-mcp",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for astroquery-cli with HTTP and SSE support",
5
+ "keywords": ["mcp", "astroquery", "astronomy", "sse", "http", "simbad", "vizier", "gaia", "alma", "ads"],
6
+ "homepage": "https://github.com/inoribea/aqc-mcp",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/inoribea/aqc-mcp.git"
10
+ },
11
+ "bugs": {
12
+ "url": "https://github.com/inoribea/aqc-mcp/issues"
13
+ },
14
+ "author": "inoribea",
15
+ "license": "BSD-3-Clause",
16
+ "main": "dist/index.js",
17
+ "type": "module",
18
+ "scripts": {
19
+ "build": "tsc",
20
+ "start": "node dist/index.js",
21
+ "dev": "tsc && node dist/index.js",
22
+ "watch": "tsc --watch"
23
+ },
24
+ "dependencies": {
25
+ "@modelcontextprotocol/sdk": "^1.0.4",
26
+ "express": "^4.18.2",
27
+ "cors": "^2.8.5"
28
+ },
29
+ "devDependencies": {
30
+ "@types/express": "^4.17.21",
31
+ "@types/node": "^20.10.0",
32
+ "@types/cors": "^2.8.17",
33
+ "typescript": "^5.3.3"
34
+ },
35
+ "engines": {
36
+ "node": ">=18.0.0"
37
+ }
38
+ }