| """ |
| 文件缓存插件 MCP工具定义 |
| """ |
|
|
| from app.mcp.decorators import mcp_tool |
| from pydantic import BaseModel, Field |
|
|
| from .core import do_set, do_get, do_delete, do_set_text, do_get_text, do_set_from_url |
|
|
|
|
| class SetInput(BaseModel): |
| """设置缓存输入参数""" |
| key: str = Field(description="缓存键名") |
| value_base64: str = Field(description="缓存值的Base64编码") |
| ttl_seconds: int = Field(default=3600, ge=60, le=86400, description="过期时间(秒)") |
|
|
|
|
| class GetInput(BaseModel): |
| """获取缓存输入参数""" |
| key: str = Field(description="缓存键名") |
|
|
|
|
| class DeleteInput(BaseModel): |
| """删除缓存输入参数""" |
| key: str = Field(description="缓存键名") |
|
|
|
|
| class CacheOutput(BaseModel): |
| """缓存操作输出结果""" |
| success: bool = Field(description="操作是否成功") |
| value: str | None = Field(default=None, description="缓存值(仅get操作)") |
| message: str = Field(description="结果说明") |
|
|
|
|
| @mcp_tool(name="cache-set", title="设置缓存", description="设置缓存值,支持TTL") |
| async def cache_set(params: SetInput) -> CacheOutput: |
| result = await do_set(params.key, params.value_base64, params.ttl_seconds) |
| return CacheOutput(**result) |
|
|
|
|
| @mcp_tool(name="cache-get", title="获取缓存", description="获取缓存值") |
| async def cache_get(params: GetInput) -> CacheOutput: |
| result = await do_get(params.key) |
| return CacheOutput(**result) |
|
|
|
|
| @mcp_tool(name="cache-delete", title="删除缓存", description="删除缓存值") |
| async def cache_delete(params: DeleteInput) -> CacheOutput: |
| result = await do_delete(params.key) |
| return CacheOutput(**result) |
|
|
|
|
| |
|
|
|
|
| class SetTextInput(BaseModel): |
| """设置文本缓存输入参数""" |
| key: str = Field(description="缓存键名") |
| text_content: str = Field(description="文本内容(UTF-8)") |
| ttl_seconds: int = Field(default=3600, ge=60, le=86400, description="过期时间(秒)") |
|
|
|
|
| class SetFromUrlInput(BaseModel): |
| """从URL设置缓存输入参数""" |
| key: str = Field(description="缓存键名") |
| url: str = Field(description="文件URL地址") |
| ttl_seconds: int = Field(default=3600, ge=60, le=86400, description="过期时间(秒)") |
|
|
|
|
| class TextCacheOutput(BaseModel): |
| """文本缓存操作输出结果""" |
| success: bool = Field(description="操作是否成功") |
| text: str | None = Field(default=None, description="文本内容(仅get_text操作)") |
| message: str = Field(description="结果说明") |
|
|
|
|
| @mcp_tool(name="cache-text", title="设置文本缓存", description="直接缓存文本内容,自动编码") |
| async def cache_set_text(params: SetTextInput) -> TextCacheOutput: |
| result = await do_set_text(params.key, params.text_content, params.ttl_seconds) |
| return TextCacheOutput(**result) |
|
|
|
|
| @mcp_tool(name="cache-readtext", title="获取文本缓存", description="获取文本缓存,自动解码为UTF-8") |
| async def cache_get_text(params: GetInput) -> TextCacheOutput: |
| result = await do_get_text(params.key) |
| return TextCacheOutput(**result) |
|
|
|
|
| @mcp_tool(name="cache-url", title="URL缓存", description="从URL下载文件并缓存") |
| async def cache_set_from_url(params: SetFromUrlInput) -> CacheOutput: |
| result = await do_set_from_url(params.key, params.url, params.ttl_seconds) |
| return CacheOutput(**result) |