import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { EventSource } from "eventsource";
// Επιτρέπει self-signed πιστοποιητικά αν χρειαστεί
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
global.EventSource = EventSource;
// Διαβάζει το URL από το Environment Variable "MCP_SERVER_URL"
const serverUrlString = process.env.MCP_SERVER_URL;
if (!serverUrlString) {
console.error("Error: MCP_SERVER_URL is not defined in env");
process.exit(1);
}
const transport = new SSEClientTransport(new URL(serverUrlString), {
requestInit: {
headers: {
// Περνάει δυναμικά όλα τα headers που χρειάζεται το Dataverse
"x-dataverse-url": process.env["x-dataverse-url"] || "",
"x-dataverse-client-id": process.env["x-dataverse-client-id"] || "",
"x-dataverse-client-secret": process.env["x-dataverse-client-secret"] || "",
"x-dataverse-tenant-id": process.env["x-dataverse-tenant-id"] || "",
}
}
});
const stdio = new StdioServerTransport();
async function run() {
try {
await transport.start();
await stdio.start();
transport.onmessage = (msg) => stdio.send(msg);
stdio.onmessage = (msg) => transport.send(msg);
transport.onclose = () => process.exit(0);
stdio.onclose = () => process.exit(0);
} catch (error) {
console.error("Bridge Connection Error:", error);
process.exit(1);
}
}
run();