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 verbget_site에서
  • LOWTool 'drive_revoke_token' description lacks action verbdrive_revoke_token에서
  • LOWTool 'drive_restore' description lacks action verbdrive_restore에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~2,436토큰 (도구 정의)
~773 B일반적인 응답 크기
중간 정도의 주의 영향 (128k 컨텍스트의 1.90%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`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개