mcp

Deploy files, sites, and Dockerfile apps to live URLs + private drives for agent memory.

我该使用它吗

质量与安全性

A
描述质量
95%
模式完整度
89%
命名质量
89%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

发现(3)

  • LOWTool 'get_site' description lacks action verb在 get_site 中
  • LOWTool 'drive_revoke_token' description lacks action verb在 drive_revoke_token 中
  • LOWTool 'drive_restore' description lacks action verb在 drive_restore 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~2,436token 数(工具定义)
~773 B典型响应大小
对注意力有中等影响(占 128k 上下文窗口的 1.90%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "mcp": {
      "url": "https://dataecho.ai/mcp"
    }
  }
}

远程端点

https://dataecho.ai/mcpstreamable-http

它能做什么

工具清单

工具(26)

🟢 只读🟡 写入🔴 删除⚪ 未知
⚪platform_info

DataEcho platform overview: what it can host, auth state of this connection, docs links. Call this first if unsure.

输入模式

{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
⚪request_login_code(email)

Start sign-in: email a one-time code to the user. Follow with verify_login_code.

输入模式

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "The user's email address"
    }
  },
  "required": [
    "email"
  ],
  "additionalProperties": false
}
🟡verify_login_code(email, code)

Complete sign-in with the emailed code. Returns the apiKey ONCE — configure it as the `Authorization: Bearer <key>` header of this MCP connection (and/or save to ~/.artifact/credentials for the CLI scripts). Never echo it into chat.

输入模式

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "Same email as request_login_code"
    },
    "code": {
      "type": "string",
      "description": "The one-time code from the email"
    }
  },
  "required": [
    "email",
    "code"
  ],
  "additionalProperties": false
}
🟡publish_site(files, slug, title, description, spa, ...)

Deploy files to a live URL. No slug → create a NEW site (works without auth; anonymous sites expire in 24h — always show the user the claimUrl). With slug → UPDATE that site (complete snapshot: send ALL files). A Dockerfile in the files makes it a server-side app (auth required; listen on process.env.PORT; persist under /data; poll app_status). Total payload ≤ 8 MB — for bigger sites use the dataecho skill scripts.

输入模式

{
  "type": "object",
  "properties": {
    "files": {
      "type": "array",
      "description": "Files to publish. Each file: { path, content (utf-8 text) OR contentBase64 (binary), contentType? }. The publish is a COMPLETE snapshot — omitted files are removed on update.",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Site-relative path, e.g. index.html or assets/app.js"
          },
          "content": {
            "type": "string",
            "description": "UTF-8 text content (use for html/css/js/json/text)"
          },
          "contentBase64": {
            "type": "string",
            "description": "Base64 content (use for binary files)"
          },
          "contentType": {
            "type": "string",
            "description": "Optional MIME type; guessed from the extension if omitted"
          }
        },
        "required": [
          "path"
        ],
        "additionalProperties": false
      }
    },
    "slug": {
      "type": "string",
      "description": "Existing site slug to update (omit to create a new site)"
    },
    "title": {
      "type": "string",
      "description": "Viewer page title (used when there's no index.html)"
    },
    "description": {
      "type": "string",
      "description": "Viewer page description"
    },
    "spa": {
      "type": "boolean",
      "description": "Enable SPA fallback routing (serve index.html for unknown paths)"
    },
    "ttlSeconds": {
      "type": "number",
      "description": "Expiry for authenticated sites, in seconds"
    },
    "claimToken": {
      "type": "string",
      "description": "Claim token — required to update an anonymous site without auth"
    }
  },
  "required": [
    "files"
  ],
  "additionalProperties": false
}
🟡claim_site(slug, claimToken)

Make a previously-anonymous site permanent under the authenticated account (requires auth + the claimToken from publish_site).

输入模式

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Site slug"
    },
    "claimToken": {
      "type": "string",
      "description": "Claim token returned by the anonymous publish"
    }
  },
  "required": [
    "slug",
    "claimToken"
  ],
  "additionalProperties": false
}
🟢list_sites

List all sites owned by the authenticated account.

输入模式

{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
🟢search_sites(query, limit)

Full-text search across the authenticated account's sites (names, metadata, and text content).

输入模式

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search query"
    },
    "limit": {
      "type": "number",
      "description": "Max results (optional)"
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}
🟢get_site(slug)

Full details + current file manifest of an owned site.

输入模式

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Site slug"
    }
  },
  "required": [
    "slug"
  ],
  "additionalProperties": false
}
🟡update_site_metadata(slug, title, description, spaMode, ttlSeconds, ...)

Patch site settings without redeploying: viewer title/description, SPA mode, TTL, password (string sets, null removes).

输入模式

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Site slug"
    },
    "title": {
      "type": "string",
      "description": "Viewer title"
    },
    "description": {
      "type": "string",
      "description": "Viewer description"
    },
    "spaMode": {
      "type": "boolean",
      "description": "SPA fallback routing"
    },
    "ttlSeconds": {
      "type": "number",
      "description": "Expiry in seconds (null-like 0 not allowed; omit to keep)"
    },
    "password": {
      "type": "string",
      "description": "Password-gate the site; pass an empty string to REMOVE the password"
    }
  },
  "required": [
    "slug"
  ],
  "additionalProperties": false
}
🔴delete_site(slug)

Permanently delete an owned site. Irreversible — confirm with the user first.

输入模式

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Site slug"
    }
  },
  "required": [
    "slug"
  ],
  "additionalProperties": false
}
🟡app_status(slug, logs)

Build/run status of a container app deployed via publish_site with a Dockerfile. Poll until status is `live` or `failed`.

输入模式

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Site slug"
    },
    "logs": {
      "type": "boolean",
      "description": "Include build logs"
    }
  },
  "required": [
    "slug"
  ],
  "additionalProperties": false
}
🟢list_drives

List the authenticated account's private cloud drives.

输入模式

{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
🟡create_drive(name)

Create a new private drive.

输入模式

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Drive name"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}
🟢drive_list_files(drive, prefix)

List files in a drive (by drive name or drv_… id), optionally under a path prefix.

输入模式

{
  "type": "object",
  "properties": {
    "drive": {
      "type": "string",
      "description": "Drive name or drv_… id"
    },
    "prefix": {
      "type": "string",
      "description": "Path prefix filter"
    }
  },
  "required": [
    "drive"
  ],
  "additionalProperties": false
}
🟢drive_read_file(drive, path)

Read a file from a drive. Text comes back as utf-8 `content`; binary as `contentBase64`. Files over 1 MB are refused (use the skill scripts).

输入模式

{
  "type": "object",
  "properties": {
    "drive": {
      "type": "string",
      "description": "Drive name or drv_… id"
    },
    "path": {
      "type": "string",
      "description": "File path in the drive"
    }
  },
  "required": [
    "drive",
    "path"
  ],
  "additionalProperties": false
}
🟡drive_write_file(drive, path, content, contentBase64, contentType, ...)

Write/overwrite one file in a drive (ETag-safe: pass ifMatch to assert the version you read, otherwise the current version is used automatically).

输入模式

{
  "type": "object",
  "properties": {
    "drive": {
      "type": "string",
      "description": "Drive name or drv_… id"
    },
    "path": {
      "type": "string",
      "description": "Destination path in the drive"
    },
    "content": {
      "type": "string",
      "description": "UTF-8 text content"
    },
    "contentBase64": {
      "type": "string",
      "description": "Base64 content for binary files"
    },
    "contentType": {
      "type": "string",
      "description": "Optional MIME type"
    },
    "ifMatch": {
      "type": "string",
      "description": "Optional ETag precondition"
    }
  },
  "required": [
    "drive",
    "path"
  ],
  "additionalProperties": false
}
🔴drive_delete_file(drive, path)

Delete one file from a drive.

输入模式

{
  "type": "object",
  "properties": {
    "drive": {
      "type": "string",
      "description": "Drive name or drv_… id"
    },
    "path": {
      "type": "string",
      "description": "File path"
    }
  },
  "required": [
    "drive",
    "path"
  ],
  "additionalProperties": false
}
⚪drive_move_file(drive, from, to)

Move/rename a file inside a drive.

输入模式

{
  "type": "object",
  "properties": {
    "drive": {
      "type": "string",
      "description": "Drive name or drv_… id"
    },
    "from": {
      "type": "string",
      "description": "Current path"
    },
    "to": {
      "type": "string",
      "description": "New path"
    }
  },
  "required": [
    "drive",
    "from",
    "to"
  ],
  "additionalProperties": false
}
⚪drive_share(drive, perms, pathPrefix, ttl, label)

Mint a scoped drive access token for another agent (perms read|write, optional path prefix + TTL like `7d`). The secret is returned ONCE.

输入模式

{
  "type": "object",
  "properties": {
    "drive": {
      "type": "string",
      "description": "Drive name or drv_… id"
    },
    "perms": {
      "type": "string",
      "description": "read (default) or write"
    },
    "pathPrefix": {
      "type": "string",
      "description": "Restrict the token to this path prefix"
    },
    "ttl": {
      "type": "string",
      "description": "Lifetime, e.g. 1h, 7d (omit for no expiry)"
    },
    "label": {
      "type": "string",
      "description": "Human label for the token"
    }
  },
  "required": [
    "drive"
  ],
  "additionalProperties": false
}
🟢drive_tokens(drive)

List active share tokens of a drive (secrets are never shown again).

输入模式

{
  "type": "object",
  "properties": {
    "drive": {
      "type": "string",
      "description": "Drive name or drv_… id"
    }
  },
  "required": [
    "drive"
  ],
  "additionalProperties": false
}
⚪drive_revoke_token(drive, tokenId)

Revoke a drive share token.

输入模式

{
  "type": "object",
  "properties": {
    "drive": {
      "type": "string",
      "description": "Drive name or drv_… id"
    },
    "tokenId": {
      "type": "string",
      "description": "dtok_… id from drive_tokens"
    }
  },
  "required": [
    "drive",
    "tokenId"
  ],
  "additionalProperties": false
}
🟡drive_history(drive)

Version timeline of a drive (every write is a restorable version).

输入模式

{
  "type": "object",
  "properties": {
    "drive": {
      "type": "string",
      "description": "Drive name or drv_… id"
    }
  },
  "required": [
    "drive"
  ],
  "additionalProperties": false
}
⚪drive_restore(drive, versionId)

Restore a drive to a prior version (commits a new version; nothing is lost).

输入模式

{
  "type": "object",
  "properties": {
    "drive": {
      "type": "string",
      "description": "Drive name or drv_… id"
    },
    "versionId": {
      "type": "string",
      "description": "dv_… id from drive_history"
    }
  },
  "required": [
    "drive",
    "versionId"
  ],
  "additionalProperties": false
}
🟡list_variables

List account variable NAMES (values are write-only — they are injected into proxy calls and container apps, never read back).

输入模式

{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
🟡set_variable(name, value, allowedUpstreams)

Create/update a write-only account secret (uppercase name). Injected as env vars into container apps and as ${VAR} into proxy calls. Optionally pin which upstream hosts may receive it.

输入模式

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "UPPER_SNAKE_CASE variable name"
    },
    "value": {
      "type": "string",
      "description": "Secret value (never readable back)"
    },
    "allowedUpstreams": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Optional allow-list of upstream hosts"
    }
  },
  "required": [
    "name",
    "value"
  ],
  "additionalProperties": false
}
🔴delete_variable(name)

Delete an account variable.

输入模式

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Variable name"
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}

推荐提示词

search_research
Search for information about [topic] using mcp
预期工具: search_sites
find_specific
Find [specific item] using mcp
预期工具: search_sites
retrieve_data
Get details about [item] from mcp
预期工具: get_site
fetch_info
Fetch [information type] using mcp
预期工具: get_site
list_items
List all [items] available in mcp
预期工具: list_sites

社区

评价此服务器

证据

最近观测

已验证未记录版本26 个工具
已验证未记录版本26 个工具