SpinupWP MCP by usefulapi
Read SpinupWP servers, sites and events; purge caches, restart services, run git deploys.
我该使用它吗
质量与安全性
发现(3)
- LOW在 spinupwp_list_site_path_redirects 中
- LOW在 spinupwp_list_storage_providers 中
- LOW在 spinupwp_correct_file_permissions 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"spinupwp": {
"url": "https://spinupwp.usefulapi.io/mcp"
}
}
}远程端点
https://spinupwp.usefulapi.io/mcpstreamable-http它能做什么
工具清单
工具(19)
🟢spinupwp_list_servers(page, limit)
List the servers in your SpinupWP team: name, provider, region, size, IP, Ubuntu version, disk space, connection status and whether a reboot or upgrade is required. GET /servers.
输入模式
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢spinupwp_get_server(server_id)
One server by id: provider, size, disk usage, database server, connection status, reboot/upgrade-required flags and install notes. GET /servers/{id}.
输入模式
{
"type": "object",
"properties": {
"server_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "SpinupWP server id (from spinupwp_list_servers)."
}
},
"required": [
"server_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢spinupwp_list_sites(server_id, page, limit)
List sites across your servers (or one server): domain, PHP version, WordPress flag, HTTPS, page cache, backups, pending WordPress core/theme/plugin updates, git deploy settings and status. Deploy-trigger URLs are hidden. GET /sites.
输入模式
{
"type": "object",
"properties": {
"server_id": {
"description": "Only sites on this server id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢spinupwp_get_site(site_id)
One site by id with its full settings: domains, PHP version, page cache, HTTPS, nginx options, database reference, backup schedule and storage, WordPress update counts, git repo/branch/deploy script, basic-auth username, cron and SpinupWP subdomain. The git deploy-trigger URL is hidden. GET /sites/{id}.
输入模式
{
"type": "object",
"properties": {
"site_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "SpinupWP site id (from spinupwp_list_sites)."
}
},
"required": [
"site_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢spinupwp_list_site_domains(site_id, page, limit)
The additional domains of a site, with their redirect settings (enabled, type, destination). GET /sites/{id}/domains.
输入模式
{
"type": "object",
"properties": {
"site_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "SpinupWP site id."
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"site_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢spinupwp_list_site_path_redirects(site_id, page, limit)
The path redirects configured on a site (from, to, type permanent/redirect). GET /sites/{id}/path-redirects.
输入模式
{
"type": "object",
"properties": {
"site_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "SpinupWP site id."
},
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"site_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢spinupwp_list_events(page, limit)
List recent events (the activity log: provisioning, restarts, deploys, cache purges) with who started them, status (queued, creating, updating, deleting, deployed, failed) and timestamps. Long command output is shortened; read one event for its full output. GET /events.
输入模式
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢spinupwp_get_event(event_id)
One event by id, with status and command output. Use it to see whether a purge, restart or deploy (which reply with an event_id) has finished or failed. GET /events/{id}.
输入模式
{
"type": "object",
"properties": {
"event_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "SpinupWP event id (the event_id a write tool returned)."
}
},
"required": [
"event_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢spinupwp_list_storage_providers(page, limit)
The backup storage providers connected to the team (id, service, name). GET /storage-providers.
输入模式
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢spinupwp_list_team_ssh_keys(page, limit)
The team's saved SSH public keys (id, name, fingerprint, public key). Public keys only; read-only. GET /ssh-keys.
输入模式
{
"type": "object",
"properties": {
"page": {
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴spinupwp_purge_page_cache(site_id)
WRITE: purge the nginx page cache of one site. Pages are rebuilt on the next visit, so the site may be slower for a moment; nothing is lost. Asynchronous: returns an event_id. POST /sites/{id}/page-cache/purge.
输入模式
{
"type": "object",
"properties": {
"site_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "SpinupWP site id."
}
},
"required": [
"site_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴spinupwp_purge_object_cache(site_id)
WRITE: flush the Redis object cache of one site (the site must have object caching). The cache refills on demand. Asynchronous: returns an event_id. POST /sites/{id}/object-cache/purge.
输入模式
{
"type": "object",
"properties": {
"site_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "SpinupWP site id."
}
},
"required": [
"site_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴spinupwp_correct_file_permissions(site_id)
WRITE: reset a site's files and folders to the permissions and ownership SpinupWP recommends (usually after a manual upload as the wrong user). Can take a while on big sites. Asynchronous: returns an event_id. POST /sites/{id}/file-permissions/correct.
输入模式
{
"type": "object",
"properties": {
"site_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "SpinupWP site id."
}
},
"required": [
"site_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴spinupwp_deploy_site_git(site_id)
WRITE: pull the latest commit of the site's connected git branch and run its deploy script on the server. This changes the live site's files (and may run build/migration commands); it fails if git is not connected. Asynchronous: returns an event_id. POST /sites/{id}/git/deploy.
输入模式
{
"type": "object",
"properties": {
"site_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "SpinupWP site id (a site with git connected)."
}
},
"required": [
"site_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴spinupwp_restart_nginx(server_id)
WRITE: restart nginx (web server) on one server. Visitors may see a brief interruption. Asynchronous: returns an event_id. POST /servers/{id}/services/nginx/restart.
输入模式
{
"type": "object",
"properties": {
"server_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "SpinupWP server id."
}
},
"required": [
"server_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴spinupwp_restart_php(server_id)
WRITE: restart PHP-FPM (every PHP version) on one server. Running PHP requests can fail or be cut off while it restarts. Asynchronous: returns an event_id. POST /servers/{id}/services/php/restart.
输入模式
{
"type": "object",
"properties": {
"server_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "SpinupWP server id."
}
},
"required": [
"server_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴spinupwp_restart_mysql(server_id)
WRITE: restart MySQL (database) on one server. All sites on the server lose database access for a short time; running queries are interrupted. Asynchronous: returns an event_id. POST /servers/{id}/services/mysql/restart.
输入模式
{
"type": "object",
"properties": {
"server_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "SpinupWP server id."
}
},
"required": [
"server_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴spinupwp_restart_redis(server_id)
WRITE: restart Redis (object cache) on one server. Cached objects are lost and rebuilt on demand. Asynchronous: returns an event_id. POST /servers/{id}/services/redis/restart.
输入模式
{
"type": "object",
"properties": {
"server_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "SpinupWP server id."
}
},
"required": [
"server_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴spinupwp_reboot_server(server_id)
WRITE: reboot a whole server. Every site on it is offline for the duration (typically a minute or two). Use it when spinupwp_get_server shows reboot_required. Asynchronous: returns an event_id. POST /servers/{id}/reboot.
输入模式
{
"type": "object",
"properties": {
"server_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "SpinupWP server id."
}
},
"required": [
"server_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社区
证据