@nic0xflamel/defillama-mcp-server
Version:
MCP server for the DefiLlama API
42 lines • 1.31 kB
JavaScript
import fs from 'node:fs';
import path from 'node:path';
import { MCPProxy } from './openapi-mcp-server/mcp/proxy.js';
export class ValidationError extends Error {
constructor(errors) {
super('OpenAPI validation failed');
this.errors = errors;
this.name = 'ValidationError';
}
}
async function loadOpenApiSpec(specPath, baseUrl) {
let rawSpec;
try {
rawSpec = fs.readFileSync(path.resolve(process.cwd(), specPath), 'utf-8');
}
catch (error) {
console.error('Failed to read OpenAPI specification file:', error.message);
process.exit(1);
}
// Parse and validate the OpenApi Spec
try {
const parsed = JSON.parse(rawSpec);
// Override baseUrl if specified.
if (baseUrl) {
parsed.servers[0].url = baseUrl;
}
return parsed;
}
catch (error) {
if (error instanceof ValidationError) {
throw error;
}
console.error('Failed to parse OpenAPI spec:', error.message);
process.exit(1);
}
}
export async function initProxy(specPath, baseUrl) {
const openApiSpec = await loadOpenApiSpec(specPath, baseUrl);
const proxy = new MCPProxy('DefiLlama API', openApiSpec);
return proxy;
}
//# sourceMappingURL=init-server.js.map