""" 文档合并拆分插件 MCP工具定义 """ from app.mcp.decorators import mcp_tool from pydantic import BaseModel, Field from typing import List from .core import do_merge, do_split class MergeInput(BaseModel): """文档合并输入参数""" files_base64: List[str] | None = Field( default=None, description="待合并文件的Base64编码列表" ) files_url: List[str] | None = Field( default=None, description="待合并文件的URL列表" ) output_format: str = Field(default="markdown", description="输出格式:markdown、text") class SplitInput(BaseModel): """文档拆分输入参数""" content_base64: str | None = Field(default=None, description="待拆分文档的Base64编码") content_url: str | None = Field(default=None, description="待拆分文档的URL") split_by: str = Field(default="line", description="拆分方式:line、paragraph、chunk") chunk_size: int = Field(default=100, ge=10, le=10000, description="chunk模式下的块大小") class MergeOutput(BaseModel): """合并输出结果""" success: bool = Field(description="操作是否成功") output_base64: str | None = Field(description="合并结果的Base64编码") message: str = Field(description="结果说明") class SplitOutput(BaseModel): """拆分输出结果""" success: bool = Field(description="操作是否成功") chunks_base64: List[str] | None = Field(description="拆分片段的Base64编码列表") message: str = Field(description="结果说明") @mcp_tool(name="doc-merge", title="文档合并", description="合并多个文档内容") async def doc_merge(params: MergeInput) -> MergeOutput: result = await do_merge(params.files_base64, params.output_format) return MergeOutput(**result) @mcp_tool(name="doc-split", title="文档拆分", description="拆分文档为多个片段") async def doc_split(params: SplitInput) -> SplitOutput: result = await do_split(params.content_base64, params.split_by, params.chunk_size) return SplitOutput(**result)