UNPKG

feishu-mcp

Version:

Model Context Protocol server for Feishu integration

27 lines (26 loc) 1.67 kB
import { formatErrorMessage } from '../../../utils/error.js'; import { Logger } from '../../../utils/logger.js'; import { errorResponse } from '../../document/tools/toolHelpers.js'; import { getUsers } from '../toolApi/index.js'; import { UserSearchQueriesSchema, GetFeishuUsersUserIdsParamSchema, } from '../../../types/memberSchema.js'; /** * 注册飞书成员 MCP 工具 * get_feishu_users:统一按「名称搜索」或「ID 批量获取」两种方式查询用户 */ export function registerMemberTools(server, feishuService) { server.tool('get_feishu_users', 'Get Feishu users by either (1) name search or (2) user IDs. Provide exactly one: queries [{ query, pageToken? }, ...] (1–20 items; pageToken per query for pagination), OR userIdsParam [{ id, idType }, ...] (1–50 items) to batch get by ID. Returns user list with basic info: open_id, user_id, name, department_ids, email, mobile, status, avatar, etc.', { queries: UserSearchQueriesSchema.optional(), userIdsParam: GetFeishuUsersUserIdsParamSchema.optional(), }, async ({ queries, userIdsParam }) => { try { const params = queries != null && queries.length > 0 ? { queries } : { userIdsParam: userIdsParam }; const result = await getUsers(params, feishuService); const text = Array.isArray(result) ? JSON.stringify(result, null, 2) : JSON.stringify(result, null, 2); return { content: [{ type: 'text', text }] }; } catch (error) { Logger.error('get_feishu_users 失败:', error); return errorResponse(`get_feishu_users 失败: ${formatErrorMessage(error)}`); } }); }