@ankimcp/anki-mcp-server
Version:
Model Context Protocol server for Anki - enables AI assistants to interact with your Anki flashcards
56 lines • 2.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const core_1 = require("@nestjs/core");
const mcp_nest_1 = require("@rekog/mcp-nest");
const app_module_1 = require("./app.module");
const bootstrap_1 = require("./bootstrap");
const cli_output_1 = require("./cli/cli-output");
const config_1 = require("./config");
function parseStdioArgs() {
const args = process.argv.slice(2);
let readOnly = false;
let ankiConnect;
for (let i = 0; i < args.length; i++) {
if (args[i] === "--read-only") {
readOnly = true;
}
else if (args[i] === "--anki-connect" || args[i] === "-a") {
ankiConnect = args[i + 1];
i++;
if (ankiConnect === "") {
throw new Error("AnkiConnect URL cannot be empty. Omit --anki-connect/-a to use the default (http://localhost:8765) or the ANKI_CONNECT_URL env var.");
}
}
}
return { readOnly, ankiConnect };
}
const cli = (0, cli_output_1.createCli)(false);
async function bootstrap() {
const cliOptions = parseStdioArgs();
const configInput = (0, config_1.buildConfigInput)({
ankiConnect: cliOptions.ankiConnect,
readOnly: cliOptions.readOnly,
});
const pinoLogger = (0, bootstrap_1.createPinoLogger)(bootstrap_1.LOG_DESTINATION.STDERR, configInput.LOG_LEVEL || "info");
const loggerService = (0, bootstrap_1.createLoggerService)(pinoLogger);
const validatedConfig = config_1.configSchema.parse((0, config_1.transformEnvToConfig)(configInput));
const mcp = (0, bootstrap_1.createMcpStrategy)([new mcp_nest_1.StdioTransport()], validatedConfig.mcpServer);
const app = await core_1.NestFactory.createMicroservice(app_module_1.AppModule.forStdio(mcp, configInput), {
strategy: mcp,
logger: loggerService,
bufferLogs: true,
});
await app.listen();
if (cliOptions.readOnly) {
pinoLogger.info("MCP STDIO server started in READ-ONLY mode");
}
else {
pinoLogger.info("MCP STDIO server started successfully");
}
await new Promise(() => { });
}
bootstrap().catch((err) => {
cli.error(`Failed to start MCP STDIO server: ${err instanceof Error ? err.message : String(err)}`, err instanceof Error ? err : undefined);
process.exit(1);
});
//# sourceMappingURL=main-stdio.js.map