diff --git a/package.json b/package.json index 94e83bf6f..f1cc544e5 100644 --- a/package.json +++ b/package.json @@ -255,6 +255,7 @@ "./sources/map-features": "./src/sources/overpassFeatures.js", "./tools": "./src/tools/index.js", "./tools/mcp": "./src/tools/mcp/index.js", + "./tools/panel": "./src/tools/panel.js", "./tools/services": "./src/tools/services.js", "./view": "./src/view/index.js" } diff --git a/server/mcp/server.js b/server/mcp/server.js index 20a0745ec..0926c865e 100644 --- a/server/mcp/server.js +++ b/server/mcp/server.js @@ -7,8 +7,10 @@ import { coreTools, catalogForSurface, } from '../../src/tools/index.js'; -import { panelRuntime } from '../../src/app/globePanelRuntime.js'; -import { createGlobePanelResource } from '../../src/tools/globePanel.js'; +import { + createGlobePanelResource, + panelRuntime, +} from '../../src/tools/panel.js'; import { createMcpServer } from '../../src/tools/mcp/index.js'; import { DEFAULT_API_BASE, createLocalToolServices } from './services.js'; diff --git a/src/tools/globePanel.test.mjs b/src/tools/globePanel.test.mjs index 378a1472c..964ca0a64 100644 --- a/src/tools/globePanel.test.mjs +++ b/src/tools/globePanel.test.mjs @@ -122,3 +122,14 @@ test('a view that only follows an aircraft is framed where the aircraft is', asy /not reported now/.test(error.message), ); }); + +test('the package exports the panel resource and its runtime together', async () => { + const panel = await import('gods-eye-view/tools/panel'); + const resource = panel.createGlobePanelResource({ + runtime: panel.panelRuntime, + panelKey: 'key', + }); + assert.equal(resource.uri, panel.GLOBE_PANEL_URI); + assert.equal(panel.PANEL_BASE, '/panel/'); + assert.match(resource.text, /panelRuntime|function/); +}); diff --git a/src/tools/panel.js b/src/tools/panel.js new file mode 100644 index 000000000..5a2a0afbf --- /dev/null +++ b/src/tools/panel.js @@ -0,0 +1,12 @@ +/** + * The MCP Apps globe panel for MCP servers that compose Core's tools: the + * panel resource and the script its page runs. A server serves the panel + * build at PANEL_BASE and passes the same key to the resource and to the + * tool services (see src/tools/services.js). + */ +export { + GLOBE_PANEL_URI, + PANEL_BASE, + createGlobePanelResource, +} from './globePanel.js'; +export { panelRuntime } from '../app/globePanelRuntime.js';