@andrea9293/mcp-gemini-prompt-enhancer
Version:
A Model Context Protocol (MCP) server that provides a prompt optimization service for Large Language Models (LLMs) using Google Gemini, with advanced prompt engineering thanks to 22365_3_Prompt_Engineering_v7.pdf authored by Lee Boonstra
61 lines (60 loc) • 2.24 kB
JavaScript
import { FastMCP } from "fastmcp";
import { registerTools, registerRemoteTools } from "../core/tools.js";
import * as services from "../core/services/index.js";
// Create and start the MCP server
async function startServer() {
try {
// Create a new FastMCP server instance
const server = new FastMCP({
name: "MCP Prompt Enhancer",
version: "1.0.0"
});
registerTools(server);
await services.UtilsService.ensurePdfExistsService();
// Log server information
console.error(`MCP Server initialized`);
console.error("Server is ready to handle requests");
return server;
}
catch (error) {
console.error("Failed to initialize server:", error);
process.exit(1);
}
}
async function startRemoteServer() {
try {
// Create a new FastMCP server instance
const server = new FastMCP({
name: "MCP Prompt Enhancer",
version: "1.0.0",
authenticate: async (request) => {
const urlParams = new URL("http://dummy" + request.url);
const apiKey = urlParams.searchParams.get("apiKey");
console.error("Received Gemini API Key:", apiKey);
if (!apiKey) {
throw new Response(null, {
status: 401,
statusText: "gemini api key is required",
});
}
console.error("Authenticated with Gemini API Key:", apiKey);
// Whatever you return here will be accessible in the `context.session` object.
return {
geminiApiKey: apiKey,
};
},
});
registerRemoteTools(server);
await services.UtilsService.ensurePdfExistsService();
// Log server information
console.error(`Remote MCP Server initialized`);
console.error("Remote Server is ready to handle requests");
return server;
}
catch (error) {
console.error("Failed to initialize server:", error);
process.exit(1);
}
}
// Export the server creation function
export { startServer, startRemoteServer };