rulesync
Version:
Unified AI rules management CLI tool that generates configuration files for various AI development tools
67 lines (64 loc) • 1.87 kB
JavaScript
import {
shouldIncludeServer
} from "./chunk-VI6SBYFB.js";
// src/generators/mcp/cursor.ts
function generateCursorMcp(config) {
const cursorConfig = {
mcpServers: {}
};
for (const [serverName, server] of Object.entries(config.mcpServers)) {
if (!shouldIncludeServer(server, "cursor")) continue;
const cursorServer = {};
if (server.command) {
cursorServer.command = server.command;
if (server.args) cursorServer.args = server.args;
} else if (server.url || server.httpUrl) {
const url = server.httpUrl || server.url;
if (url) {
cursorServer.url = url;
}
if (server.httpUrl || server.transport === "http") {
cursorServer.type = "streamable-http";
} else if (server.transport === "sse" || server.type === "sse") {
cursorServer.type = "sse";
}
}
if (server.env) {
cursorServer.env = server.env;
}
if (server.cwd) {
cursorServer.cwd = server.cwd;
}
cursorConfig.mcpServers[serverName] = cursorServer;
}
return JSON.stringify(cursorConfig, null, 2);
}
function generateCursorMcpConfiguration(mcpServers, baseDir = "") {
const filepath = baseDir ? `${baseDir}/.cursor/mcp.json` : ".cursor/mcp.json";
const config = {
mcpServers: {}
};
for (const [serverName, server] of Object.entries(mcpServers)) {
if (!shouldIncludeServer(server, "cursor")) {
continue;
}
const { targets: _targets, ...serverConfig } = server;
const cursorServer = { ...serverConfig };
if (serverConfig.httpUrl !== void 0) {
cursorServer.url = serverConfig.httpUrl;
delete cursorServer.httpUrl;
}
config.mcpServers[serverName] = cursorServer;
}
return [
{
filepath,
content: `${JSON.stringify(config, null, 2)}
`
}
];
}
export {
generateCursorMcp,
generateCursorMcpConfiguration
};