mcp-server-serper
Version:
Serper MCP Server supporting search and webpage scraping
42 lines (41 loc) • 1.65 kB
JavaScript
import { startSseAndStreamableHttpMcpServer } from "mcp-http-server";
import { program } from "commander";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { createServer } from "./server.js";
program
.name(process.env.NAME || "mcp-server-serper")
.description(process.env.DESCRIPTION || "MCP server for serper")
.version(process.env.VERSION || "0.0.1")
.option("--host <host>", "host to bind server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces.")
.option("--port <port>", "port to listen on for SSE and HTTP transport.")
.action(async (options) => {
try {
const createMcpServer = async (apiKey) => {
const server = createServer(apiKey);
return server;
};
if (options.port || options.host) {
await startSseAndStreamableHttpMcpServer({
host: options.host,
port: options.port,
// @ts-expect-error: CommonJS and ESM compatibility
createMcpServer: async (req) => {
const apiKey = req.headers["x-serper-api-key"];
return createMcpServer(apiKey);
},
});
}
else {
const server = await createMcpServer(process.env.SERPER_API_KEY || "");
const transport = new StdioServerTransport();
await server.connect(transport);
console.debug("Serper MCP Server running on stdio");
}
}
catch (error) {
console.error("Error: ", error);
process.exit(1);
}
});
program.parse();