structurize-mcp
Version:
Anthropic MCP Server for generating structured CSV files from natural language descriptions
91 lines (90 loc) • 2.94 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
// 使用最新的 MCP SDK 导入方式
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
const zod_1 = require("zod");
const csvGenerator_1 = require("./csvGenerator");
const yargs_1 = __importDefault(require("yargs"));
const helpers_1 = require("yargs/helpers");
// 解析命令行参数
const argv = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
.option('gemini-api-key', {
alias: 'k',
type: 'string',
description: 'Gemini API Key',
demandOption: false
})
.option('csv-dir', {
alias: 'd',
type: 'string',
description: 'CSV 文件保存目录',
demandOption: false
})
.help()
.alias('help', 'h')
.parseSync();
// 提取命令行参数
const apiKey = argv['gemini-api-key'];
const csvDir = argv['csv-dir'];
// 记录启动参数
console.log('启动参数:');
console.log(`- CSV 保存目录: ${csvDir || '默认目录'}`);
console.log(`- Gemini API Key: ${apiKey ? '已提供' : '未提供'}`);
// 创建 MCP Server 实例
const mcpServer = new mcp_js_1.McpServer({
name: 'structurize-mcp',
version: '1.2.0',
});
// 参数定义
const csvToolParams = {
title: zod_1.z.string(),
structure: zod_1.z.string(),
data: zod_1.z.string(),
delimiter: zod_1.z.string().optional(),
};
// 注册生成 CSV 文件的工具
mcpServer.tool('generate-csv', csvToolParams, async (params) => {
try {
const { title, structure, data, delimiter = ',' } = params;
// 调用 CSV 生成函数,传递命令行参数
const result = await (0, csvGenerator_1.generateCSV)(title, structure, data, delimiter, csvDir, apiKey);
return {
content: [
{
type: 'text',
text: `CSV 文件已成功生成!\n文件路径: ${result.filePath}\n行数: ${result.rowCount}\n列数: ${result.columnCount}`,
},
],
};
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
return {
content: [
{
type: 'text',
text: `生成 CSV 文件时出错: ${errorMessage}`,
},
],
};
}
});
// 主函数
async function main() {
try {
// 启动 MCP Server
const transport = new stdio_js_1.StdioServerTransport();
await mcpServer.connect(transport);
console.log('MCP 服务器已启动,等待请求...');
}
catch (error) {
console.error('服务器启动失败:', error);
process.exit(1);
}
}
// 执行主函数
main();