#!/usr/bin/env node
import "dotenv/config";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { MealieClient } from "./client.js";
import { registerAllTools } from "./tools/index.js";
import { registerPrompts } from "./prompts/weekly-meal-plan.js";
async function main(): Promise<void> {
const baseUrl = process.env.MEALIE_BASE_URL;
const apiKey = process.env.MEALIE_API_KEY;
if (!baseUrl) {
console.error("Error: MEALIE_BASE_URL environment variable is required");
process.exit(1);
}
if (!apiKey) {
console.error("Error: MEALIE_API_KEY environment variable is required");
process.exit(1);
}
try {
const client = new MealieClient(baseUrl, apiKey);
await client.testConnection();
const server = new McpServer({
name: "mealie",
version: "1.0.0",
});
registerAllTools(server, client);
registerPrompts(server);
const transport = new StdioServerTransport();
await server.connect(transport);
console.error("Mealie MCP server started successfully");
} catch (error) {
const message = error instanceof Error ? error.message : "Unknown error";
console.error(`Failed to start server: ${message}`);
process.exit(1);
}
}
main();