最后更新时间:2026-09-22 18:43:11
这 8 个工具只作用于每次调用时 conf.ThemeRootDir() 解析出的当前主题,不接受主题名或任意绝对根目录。
create_theme_file创建文件,目标已存在时返回冲突错误,父目录会递归创建。
{
"name": "create_theme_file",
"arguments": {
"path": "views/example.html",
"content": "Hello
"
}
}成功返回:
{
"path": "views/example.html"
}文件使用 UTF-8 内容,权限为 0644,父目录权限为 0755。
edit_theme_file完整替换已有普通文件内容:
{
"name": "edit_theme_file",
"arguments": {
"path": "views/example.html",
"content": "Updated
"
}
}不能编辑目录、符号链接或不存在的文件。
delete_theme_file删除主题内的单个普通文件:
{
"name": "delete_theme_file",
"arguments": {
"path": "views/legacy.html"
}
}成功返回被删除的路径:{"path": "views/legacy.html"}。
static/old 这类目录会被拒绝),需要清理目录时请先逐个删除其中的文件,再用目录工具处理。read_theme_file、edit_theme_file、rename_theme_path 保持一致。create_theme_file。type 为 delete),失败尝试同样留痕。create_theme_directory创建主题目录及不存在的多级父目录:
{
"name": "create_theme_directory",
"arguments": {
"path": "static/assets/icons"
}
}目录已存在时返回冲突错误。
delete_theme_directory删除主题内的空目录:
{
"name": "delete_theme_directory",
"arguments": {
"path": "static/legacy-assets"
}
}成功返回被删除的路径:{"path": "static/legacy-assets"}。
delete_theme_file,再自底向上逐层调本工具。. 会被拒绝)。type 为 delete)。read_theme_file读取主题内已有普通文件的内容:
{
"name": "read_theme_file",
"arguments": {
"path": "views/example.html"
}
}成功返回:
{
"path": "views/example.html",
"content": "Hello
"
}不能读取目录或符号链接;单个文件上限 4 MiB,超限返回 theme file is too large。
list_theme_directory列出主题内某个目录的直接子项,path 传空字符串表示主题根目录:
{
"name": "list_theme_directory",
"arguments": {
"path": "views"
}
}成功返回:
{
"path": "views",
"entries": [
{ "name": "partials", "path": "views/partials", "directory": true },
{ "name": "example.html", "path": "views/example.html", "directory": false }
]
}目录排在文件前面,同类型按名称升序;符号链接会被跳过。目录不存在返回 404,目标不是目录返回 409。
rename_theme_path重命名主题内的文件或目录,from 为原路径,to 为新路径,两个字段都必填:
{
"name": "rename_theme_path",
"arguments": {
"from": "views/example.html",
"to": "views/home.html"
}
}成功返回:{"path": "views/home.html"}。
static/a → static/a/icons)返回 400,不会落成 500。change_name 为 path,记录变更前后的路径。以下路径会被拒绝:
. 或 ..。../outside 等词法穿越路径。upload_fileMCP 参数是 JSON,因此文件内容使用标准 Base64;图片、文档、音视频、压缩包等常见类型都可以上传。
{
"name": "upload_file",
"arguments": {
"filename": "example.png",
"content_type": "image/png",
"data": "BASE64_FILE_CONTENT"
}
}PNG 示例:
{
"name": "upload_file",
"arguments": {
"filename": "pixel.png",
"content_type": "image/png",
"data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII="
}
}成功返回:
{
"name": "example.png",
"path": "/uploads/2026/08/22/123456789.png"
}filename 必填,且必须带扩展名;不能包含 /、\ 或 ..。data 必须是标准 Base64 字符串。content_type 建议填写正确的 MIME 类型。jpg/jpeg/png/gif/webp/bmp/ico、文档 pdf/doc/docx/xls/xlsx/ppt/pptx/txt/md/csv/json/xml、压缩包 zip/rar/7z/gz/tar、音视频 mp3/wav/mp4/webm。其他扩展名会被拒绝。外部文件上传接口支持 PNG、JPEG、GIF、WebP、PDF、ZIP 和其他允许的文件类型。
POST /api/api_file_upload
Content-Type: multipart/form-data
Authorization: Bearer YOUR_USER_TOKEN文件字段名称必须是 file:
curl -X POST "http://127.0.0.1:8000/api/api_file_upload" \
-H "Authorization: Bearer YOUR_USER_TOKEN" \
-F "file=@./example.png;filename=example.png;type=image/png"成功响应示例:
{
"code": 200,
"msg": "ok",
"data": {
"name": "example.png",
"path": "/uploads/2026/08/22/123456789.png"
}
}file 时返回文件解析错误。