UNPKG

privco-data-mcp

Version:

This package provides MCP (Multi-Channel Protocol) handlers for accessing PrivCo's data services.

160 lines (159 loc) 7.22 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createServer = createServer; const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js"); const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js"); const axios_1 = __importDefault(require("axios")); const deals_1 = require("./handlers/deals"); const finance_1 = require("./handlers/finance"); const identification_1 = require("./handlers/identification"); const investment_1 = require("./handlers/investment"); const ma_1 = require("./handlers/ma"); const people_1 = require("./handlers/people"); const profile_1 = require("./handlers/profile"); const search_1 = require("./handlers/search"); const vc_1 = require("./handlers/vc"); const response_1 = require("./utils/response"); function createServer() { const server = new mcp_js_1.McpServer({ name: "Privco Data MCP", version: "1.0.0", }); const apiKey = process.env.PRIVCO_API_KEY; if (!apiKey) { throw new Error("API key is not set"); } axios_1.default.defaults.headers.common["x-api-key"] = apiKey; // Register Search API server.registerTool(search_1.searchApiConfig.name, { title: search_1.searchApiConfig.title, description: search_1.searchApiConfig.description, inputSchema: search_1.searchApiConfig.inputSchema, }, async (params) => { if (!params.name && !params.website) { return (0, response_1.formatErrorResponse)("Please provide a name or website"); } const result = await search_1.searchApiConfig.handler(params); return (0, response_1.formatSuccessResponse)(result.data); }); // Register Profile API server.registerTool(profile_1.profileApiConfig.name, { title: profile_1.profileApiConfig.title, description: profile_1.profileApiConfig.description, inputSchema: profile_1.profileApiConfig.inputSchema, }, async (params) => { if (!params.profileId || !params.profileType) { return (0, response_1.formatErrorResponse)("Please provide an ID"); } const result = await profile_1.profileApiConfig.handler(params); return (0, response_1.formatSuccessResponse)(result.data); }); // Register Investment API server.registerTool(investment_1.investmentApiConfig.name, { title: investment_1.investmentApiConfig.title, description: investment_1.investmentApiConfig.description, inputSchema: investment_1.investmentApiConfig.inputSchema, }, async (params) => { if (!params.profileId || !params.profileType) { return (0, response_1.formatErrorResponse)("Please provide a company ID"); } const result = await investment_1.investmentApiConfig.handler(params); return (0, response_1.formatSuccessResponse)(result.data); }); // Register People API server.registerTool(people_1.peopleApiConfig.name, { title: people_1.peopleApiConfig.title, description: people_1.peopleApiConfig.description, inputSchema: people_1.peopleApiConfig.inputSchema, }, async (params) => { if (!params.profileId || !params.profileType) { return (0, response_1.formatErrorResponse)("Please provide a company ID"); } const result = await people_1.peopleApiConfig.handler(params); return (0, response_1.formatSuccessResponse)(result.data); }); // Register Financials APIs server.registerTool(finance_1.financialsApiConfig.name, { title: finance_1.financialsApiConfig.title, description: finance_1.financialsApiConfig.description, inputSchema: finance_1.financialsApiConfig.inputSchema, }, async (params) => { if (!params.companyId) { return (0, response_1.formatErrorResponse)("Please provide a company ID"); } const result = await finance_1.financialsApiConfig.handler(params); return (0, response_1.formatSuccessResponse)(result.data); }); server.registerTool(finance_1.revenueFinancialsApiConfig.name, { title: finance_1.revenueFinancialsApiConfig.title, description: finance_1.revenueFinancialsApiConfig.description, inputSchema: finance_1.revenueFinancialsApiConfig.inputSchema, }, async (params) => { if (!params.companyId) { return (0, response_1.formatErrorResponse)("Please provide a company ID"); } const result = await finance_1.revenueFinancialsApiConfig.handler(params); return (0, response_1.formatSuccessResponse)(result.data); }); // Register Identification API server.registerTool(identification_1.identificationApiConfig.name, { title: identification_1.identificationApiConfig.title, description: identification_1.identificationApiConfig.description, inputSchema: identification_1.identificationApiConfig.inputSchema, }, async (params) => { if (!params.name) { return (0, response_1.formatErrorResponse)("Please provide a company name"); } const result = await identification_1.identificationApiConfig.handler(params); return (0, response_1.formatSuccessResponse)(result.data); }); // Register Deals API server.registerTool(deals_1.dealsApiConfig.name, { title: deals_1.dealsApiConfig.title, description: deals_1.dealsApiConfig.description, inputSchema: deals_1.dealsApiConfig.inputSchema, }, async (params) => { if (!params.profileId || !params.profileType) { return (0, response_1.formatErrorResponse)("Please provide a company ID"); } const result = await deals_1.dealsApiConfig.handler(params); return (0, response_1.formatSuccessResponse)(result.data); }); // Register M&A API server.registerTool(ma_1.maApiConfig.name, { title: ma_1.maApiConfig.title, description: ma_1.maApiConfig.description, inputSchema: ma_1.maApiConfig.inputSchema, }, async (params) => { if (!params.profileId) { return (0, response_1.formatErrorResponse)("Please provide a company ID"); } const result = await ma_1.maApiConfig.handler(params); return (0, response_1.formatSuccessResponse)(result.data); }); // Register VC API server.registerTool(vc_1.vcApiConfig.name, { title: vc_1.vcApiConfig.title, description: vc_1.vcApiConfig.description, inputSchema: vc_1.vcApiConfig.inputSchema, }, async (params) => { if (!params.profileId) { return (0, response_1.formatErrorResponse)("Please provide a company ID"); } const result = await vc_1.vcApiConfig.handler(params); return (0, response_1.formatSuccessResponse)(result.data); }); return server; } /** * Entry point when running directly */ if (require.main === module) { const server = createServer(); const transport = new stdio_js_1.StdioServerTransport(); server.connect(transport); }