@xiaolaa2/ableton-copilot-mcp
Version:
Ableton Live MCP depend on Ableton JS
46 lines • 1.59 kB
JavaScript
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { logger } from '../main.js';
export class FactoryContainer {
static _tools = [];
static get tools() {
return this._tools;
}
}
export async function startServer(
// eslint-disable-next-line @typescript-eslint/no-unused-vars
prop) {
try {
const server = new McpServer({
name: 'ableton-copilot-mcp',
version: '0.0.1',
}, {
capabilities: {
tools: {},
resources: {},
}
});
// Register all tools
const startTime = performance.now();
let registeredCount = 0;
for (const factory of FactoryContainer.tools) {
try {
factory(server);
registeredCount++;
}
catch (error) {
logger.error(`Failed to register tool: ${error instanceof Error ? error.message : String(error)}`);
}
}
const endTime = performance.now();
logger.info(`Successfully registered ${registeredCount} tools in ${(endTime - startTime).toFixed(2)}ms`);
const transport = new StdioServerTransport();
await server.connect(transport);
logger.info('MCP server started successfully');
}
catch (error) {
logger.error(`Failed to start MCP server: ${error instanceof Error ? error.message : String(error)}`);
throw error;
}
}
//# sourceMappingURL=core.js.map