server.ts•1.5 kB
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import {
CallToolRequestSchema,
ListToolsRequestSchema,
InitializedNotificationSchema,
} from "@modelcontextprotocol/sdk/types.js";
import {
scrapeProfileToolDefinition,
handleScrapeProfileTool,
} from './tools/index.js';
export function createStandaloneServer(): Server {
const serverInstance = new Server(
{
name: "linkedin-scraper",
version: "0.2.0",
},
{
capabilities: {
tools: {},
},
}
);
serverInstance.setNotificationHandler(InitializedNotificationSchema, async () => {
console.log('LinkedIn Scraper MCP client initialized');
});
serverInstance.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [scrapeProfileToolDefinition],
}));
serverInstance.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name, arguments: args } = request.params;
switch (name) {
case "scrape_linkedin_profile":
return await handleScrapeProfileTool(args);
default:
return {
content: [{ type: "text", text: `Unknown tool: ${name}` }],
isError: true,
};
}
});
return serverInstance;
}
export class LinkedInScraperServer {
getServer(): Server {
return createStandaloneServer();
}
}