@larksuiteoapi/lark-mcp
Version:
Feishu/Lark OpenAPI MCP
48 lines (47 loc) • 1.41 kB
TypeScript
import * as lark from '@larksuiteoapi/node-sdk';
import { ProjectName, ToolName } from '../tools';
import { CallToolResult } from '@modelcontextprotocol/sdk/types';
export type ToolNameCase = 'snake' | 'camel' | 'kebab' | 'dot';
export declare enum TokenMode {
AUTO = "auto",
USER_ACCESS_TOKEN = "user_access_token",
TENANT_ACCESS_TOKEN = "tenant_access_token"
}
export interface McpHandlerOptions {
userAccessToken?: string;
tool?: McpTool;
}
export type McpHandler = (client: lark.Client, params: any, options: McpHandlerOptions) => Promise<CallToolResult> | CallToolResult;
/**
* MCP工具类型定义
*/
export interface McpTool {
project: string;
name: string;
description: string;
schema: any;
sdkName?: string;
path?: string;
httpMethod?: string;
accessTokens?: string[];
supportFileUpload?: boolean;
supportFileDownload?: boolean;
customHandler?: McpHandler;
}
/**
* 注册工具选项
*/
export interface ToolsFilterOptions {
language?: 'zh' | 'en';
allowTools?: ToolName[];
allowProjects?: ProjectName[];
tokenMode?: TokenMode;
}
export type LarkClientOptions = Partial<ConstructorParameters<typeof lark.Client>[0]>;
export interface LarkMcpToolOptions extends LarkClientOptions {
client?: lark.Client;
appId?: string;
appSecret?: string;
toolsOptions?: ToolsFilterOptions;
tokenMode?: TokenMode;
}