32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
|
|
import type { SceneBridge } from './bridge/scene-bridge'
|
|
import { createSceneOperations, type SceneOperations } from './operations'
|
|
import { registerPrompts } from './prompts'
|
|
import { registerResources } from './resources'
|
|
import type { SceneStore } from './storage/types'
|
|
import { registerTools } from './tools'
|
|
import { registerVisionTools } from './tools/vision'
|
|
|
|
export type CreatePascalMcpServerOptions = {
|
|
bridge: SceneBridge
|
|
operations?: SceneOperations
|
|
/** Required for persistence tools. Hosted apps and CLIs inject their own store. */
|
|
store?: SceneStore
|
|
name?: string
|
|
version?: string
|
|
}
|
|
|
|
export function createPascalMcpServer(opts: CreatePascalMcpServerOptions): McpServer {
|
|
const server = new McpServer({
|
|
name: opts.name ?? 'pascal-mcp',
|
|
version: opts.version ?? '0.1.0',
|
|
})
|
|
const operations =
|
|
opts.operations ?? createSceneOperations({ bridge: opts.bridge, store: opts.store })
|
|
registerTools(server, operations)
|
|
registerVisionTools(server, operations)
|
|
registerResources(server, operations)
|
|
registerPrompts(server, operations)
|
|
return server
|
|
}
|