message / plugins /doc /mcp.py
hunian
refactor(plugins): 插件短名并统一 MCP tool 为 {plugin}-{tool}
cc826a1
Raw
History Blame Contribute Delete
2.08 kB
"""
文档合并拆分插件 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)