Initial commit: Suno MCP server with 24 tools, proxy support, and opencode skill

This commit is contained in:
OpenCode
2026-07-13 11:31:28 +07:00
commit 10548187f4
32 changed files with 4031 additions and 0 deletions
+49
View File
@@ -0,0 +1,49 @@
#!/usr/bin/env node
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
const client_js_1 = require("./client.js");
const handlers_js_1 = require("./handlers.js");
const tools_js_1 = require("./tools.js");
function main() {
const apiKey = process.env.SUNO_API_KEY;
if (!apiKey) {
console.error('SUNO_API_KEY environment variable is required');
process.exit(1);
}
const client = new client_js_1.SunoClient(apiKey);
const handlers = new handlers_js_1.ToolHandlers(client);
const server = new index_js_1.Server({
name: 'suno-mcp-server',
version: '1.0.0',
}, {
capabilities: {
tools: {},
},
});
server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
return { tools: tools_js_1.TOOLS };
});
server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
try {
const result = await handlers.handle(request.params.name, request.params.arguments ?? {});
return result;
}
catch (error) {
const message = error instanceof Error ? error.message : String(error);
return {
content: [{ type: 'text', text: `Error: ${message}` }],
isError: true,
};
}
});
const transport = new stdio_js_1.StdioServerTransport();
server.connect(transport).catch((error) => {
console.error('Failed to start MCP server:', error);
process.exit(1);
});
}
main();
//# sourceMappingURL=index.js.map