"""多维表格应用工具"""
import lark_oapi as lark
from lark_oapi.api.bitable.v1 import (
CreateAppRequest,
CopyAppRequest,
CopyAppRequestBody,
)
from mcp.server.fastmcp import FastMCP
from ..client import get_client
from ..exceptions import handle_feishu_error
def register_bitable_app_tools(mcp: FastMCP):
"""注册多维表格应用工具"""
@mcp.tool()
@handle_feishu_error
def create_bitable_app(name: str, folder_token: str = "") -> str:
"""
创建多维表格应用
参数:
name: 多维表格名称
folder_token: (可选) 文件夹token,指定创建位置
返回:
JSON格式的应用信息,包含app_token等
"""
client = get_client()
request = (
CreateAppRequest.builder()
.request_body(
lark.App.builder().name(name).folder_token(folder_token).build()
)
.build()
)
response = client.bitable.v1.app.create(request)
return lark.JSON.marshal(response.data, indent=4)
@mcp.tool()
@handle_feishu_error
def copy_bitable_app(app_token: str, name: str, folder_token: str = "") -> str:
"""
复制多维表格应用
参数:
app_token: 要复制的多维表格token
name: 新多维表格的名称
folder_token: (可选) 文件夹token,指定创建位置
返回:
JSON格式的应用信息
"""
client = get_client()
request = (
CopyAppRequest.builder()
.app_token(app_token)
.request_body(
CopyAppRequestBody.builder()
.name(name)
.folder_token(folder_token)
.build()
)
.build()
)
response = client.bitable.v1.app.copy(request)
return lark.JSON.marshal(response.data, indent=4)