mira-app-server
Version:
Mira Server - standalone server application using mira-app-core
105 lines • 4.25 kB
JavaScript
"use strict";
/**
* libraries 模块工具
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.registerLibraryTools = registerLibraryTools;
const zod_1 = require("zod");
const helpers_1 = require("../helpers");
function registerLibraryTools(mcp, ctx) {
mcp.registerTool('libraries_list', {
description: '获取所有素材库列表',
inputSchema: {
status: zod_1.z
.enum(['active', 'inactive', 'error'])
.optional()
.describe('按状态筛选'),
},
}, async (args) => {
return (0, helpers_1.run)(async () => {
const client = ctx.getClient();
let list = await client.libraries().getAll();
if (args.status)
list = list.filter(l => l.status === args.status);
return list;
});
});
mcp.registerTool('libraries_get', {
description: '根据 ID 获取单个素材库详情',
inputSchema: { id: zod_1.z.string().describe('素材库 ID') },
}, async (args) => {
return (0, helpers_1.run)(async () => {
const client = ctx.getClient();
return await client.libraries().getById(args.id);
});
});
mcp.registerTool('libraries_create', {
description: '创建新的素材库',
inputSchema: {
name: zod_1.z.string().describe('素材库名称'),
path: zod_1.z.string().describe('素材库在磁盘上的目录路径'),
description: zod_1.z.string().optional().describe('描述'),
icon: zod_1.z.string().optional().describe('图标标识'),
pluginsDir: zod_1.z.string().optional().describe('自定义插件目录'),
enableHash: zod_1.z.boolean().optional().describe('是否启用 hash 校验(默认 true)'),
},
}, async (args) => {
return (0, helpers_1.run)(async () => {
const client = ctx.getClient();
const data = {
name: args.name,
path: args.path,
description: args.description || '',
};
if (args.icon)
data.icon = args.icon;
if (args.pluginsDir)
data.pluginsDir = args.pluginsDir;
data.customFields = { enableHash: args.enableHash !== false };
return await client.libraries().create(data);
});
});
mcp.registerTool('libraries_update', {
description: '更新素材库信息',
inputSchema: {
id: zod_1.z.string().describe('素材库 ID'),
name: zod_1.z.string().optional(),
description: zod_1.z.string().optional(),
enableHash: zod_1.z.boolean().optional(),
},
}, async (args) => {
return (0, helpers_1.run)(async () => {
const client = ctx.getClient();
const data = {};
if (args.name !== undefined)
data.name = args.name;
if (args.description !== undefined)
data.description = args.description;
if (args.enableHash !== undefined) {
data.customFields = { enableHash: args.enableHash };
}
return await client.libraries().update(args.id, data);
});
});
mcp.registerTool('libraries_delete', {
description: '删除素材库',
inputSchema: { id: zod_1.z.string().describe('素材库 ID') },
}, async (args) => {
return (0, helpers_1.run)(async () => {
const client = ctx.getClient();
return await client.libraries().delete(args.id);
});
});
for (const action of ['start', 'stop', 'restart']) {
mcp.registerTool(`libraries_${action}`, {
description: `${action === 'start' ? '启动' : action === 'stop' ? '停止' : '重启'}素材库服务`,
inputSchema: { id: zod_1.z.string().describe('素材库 ID') },
}, async (args) => {
return (0, helpers_1.run)(async () => {
const client = ctx.getClient();
return await client.libraries()[action](args.id);
});
});
}
}
//# sourceMappingURL=libraries.js.map