MCAPKS 开放接口

通过 HTTP 接口获取我的世界国际版(基岩版)的全部收录版本与各网盘下载地址。所有接口均为 GET 请求,返回 UTF-8 编码的 JSON,无需申请 Key、无需鉴权。

v1.0 JSON / UTF-8 免鉴权 https://mcapks.net

概览

可用

接口以只读方式提供站内版本数据,适合用于第三方启动器、下载工具或版本监控脚本。

请求根地址

Base URL
https://mcapks.net/api/

特性

全量版本

一次拿到站内收录的全部版本号、发布日期与安装包体积。

多网盘直链

同一版本可返回夸克、123云盘、百度、迅雷、UC 等多个来源。

区分架构

支持 v8a / v7a 两种架构,缺失时自动回退并在响应中标明。

零成本接入

无需 Token、无频率限制,直接 GET 即可,请合理调用。

通用响应结构

response
{
  "success": true,      // 请求是否成功,客户端应以此字段判断
  "data": { },          // 业务数据,仅 success 为 true 时存在
  "message": "获取成功"  // 提示文案
}
接口的 HTTP 状态码始终为 200,业务成败请以响应体中的 success 字段判断,失败时读取 error.codeerror.message

获取版本列表

稳定
GET https://mcapks.net/api/get-vslist.php

返回站内收录的全部我的世界基岩版版本,按入库顺序倒序排列(最新版本在前)。一次性返回全量数据,暂不支持分页与筛选。

请求参数

该接口无需任何参数。

响应字段

字段 类型 说明
data.total int 本次返回的版本条数
data.versions[].version string 完整版本号,如 1.21.51.02
data.versions[].beta bool 是否为测试版(Beta / Preview)
data.versions[].date string 发布日期,通常为 YYYY-MM-DD;三天内入库的版本可能返回“今天 HH:ii”这类相对时间
data.versions[].size string 安装包体积,带单位,如 158.6 MB

响应示例

200 OK · application/json
{
  "success": true,
  "data": {
    "total": 236,
    "versions": [
      {
        "version": "1.21.51.02",
        "beta": false,
        "date": "2024-12-05",
        "size": "158.6 MB"
      },
      {
        "version": "1.21.50.29",
        "beta": true,
        "date": "2024-11-28",
        "size": "157.2 MB"
      }
    ]
  },
  "message": "获取成功"
}
  • 返回体积较大(数百条记录),建议客户端做本地缓存,不要在列表页高频轮询。
  • date 为展示用文案而非标准时间格式,需要精确时间排序时请以数组顺序为准。

在线调试

response

获取下载链接

稳定
GET https://mcapks.net/api/get-download.php

根据版本号返回该版本可用的网盘下载地址。同一版本可能同时提供多个网盘来源,返回顺序即推荐顺序。

请求参数

参数名 类型 必需 默认值 说明
version string 必填 完整版本号,需与版本列表接口返回的 version 完全一致
type string 可选 v8a 目标架构,可选 v8a(arm64-v8a)或 v7a(armeabi-v7a)。该版本没有 v8a 安装包时会自动回退到 v7a,实际架构以响应中的 data.type 为准

响应字段

字段 类型 说明
data.version string 请求的版本号
data.type string 实际返回的架构:v8av7a
data.downloads[].name string 网盘名称,取值范围:夸克网盘 / 123云盘 / 光鸭网盘 / 百度网盘 / 城通网盘 / 迅雷网盘 / UC网盘
data.downloads[].url string 下载地址或网盘分享页地址
data.downloads[].password string 提取码,仅部分网盘返回(如百度网盘),其余来源不含该字段

响应示例

200 OK · application/json
{
  "success": true,
  "data": {
    "version": "1.21.51.02",
    "type": "v8a",
    "downloads": [
      {
        "name": "夸克网盘",
        "url": "https://pan.quark.cn/s/xxxxxxxxxxxx"
      },
      {
        "name": "123云盘",
        "url": "https://www.123pan.com/s/xxxxxxxxxxxx"
      },
      {
        "name": "百度网盘",
        "url": "https://pan.baidu.com/s/xxxxxxxxxxxx?pwd=KLPZ",
        "password": "KLPZ"
      },
      {
        "name": "迅雷网盘",
        "url": "https://pan.xunlei.com/s/xxxxxxxxxxxx"
      }
    ]
  },
  "message": "获取成功"
}
  • downloads 只包含后台已配置的网盘,数量与顺序会随版本变化,请遍历数组而不要按固定下标取值。
  • password 为可选字段,读取前请先判断是否存在。
  • 网盘分享链接可能因失效而被替换,请勿长期缓存下载地址。

在线调试

response

错误处理

接口不使用 HTTP 状态码表达业务错误,请求异常时 HTTP 仍为 200,请按下表处理。

错误码

业务码 场景 返回形式
400 version 参数为空 返回标准 JSON 错误结构,见下方示例
版本不存在 当前实现直接输出纯文本 未找到该版本并非 JSON,解析前请做容错
500 服务器 / 数据库异常 可能返回 PHP 错误信息而非 JSON,建议按“无法解析即失败”处理

错误响应示例

error
{
  "success": false,
  "error": {
    "code": 400,
    "message": "版本号不能为空"
  }
}
务必做解析容错。当请求的版本不存在时,/api/get-download.php 会直接输出纯文本 未找到该版本,此时 JSON.parse() 会抛异常。推荐先取 text(),再 try/catch 解析,见下方调用示例。

调用示例

以下示例已包含错误兜底逻辑,可直接复制使用。

cURL
# 获取全部版本
curl 'https://mcapks.net/api/get-vslist.php'

# 获取指定版本的下载链接
curl 'https://mcapks.net/api/get-download.php?version=1.21.51.02&type=v8a'
JavaScript
const BASE = 'https://mcapks.net';

// 获取版本列表
async function getVersions() {
  const res = await fetch(`${BASE}/api/get-vslist.php`);
  const json = await res.json();
  if (!json.success) throw new Error(json.error?.message || '请求失败');
  return json.data.versions;
}

// 获取下载链接
async function getDownloads(version, type = 'v8a') {
  const url = `${BASE}/api/get-download.php?version=${encodeURIComponent(version)}&type=${type}`;
  const res = await fetch(url);
  const text = await res.text();

  let json;
  try {
    json = JSON.parse(text);   // 版本不存在时返回纯文本,需要兜底
  } catch (e) {
    throw new Error(text.trim() || '返回内容无法解析');
  }
  if (!json.success) throw new Error(json.error?.message || '请求失败');
  return json.data.downloads;
}

getDownloads('1.21.51.02').then(list => {
  list.forEach(item => console.log(item.name, item.url, item.password ?? ''));
});
Python
import requests

BASE = 'https://mcapks.net'


def get_versions():
    r = requests.get(f'{BASE}/api/get-vslist.php', timeout=10)
    data = r.json()
    if not data.get('success'):
        raise RuntimeError(data.get('error', {}).get('message', '请求失败'))
    return data['data']['versions']


def get_downloads(version, arch='v8a'):
    r = requests.get(
        f'{BASE}/api/get-download.php',
        params={'version': version, 'type': arch},
        timeout=10,
    )
    try:
        data = r.json()          # 版本不存在时返回纯文本,需要兜底
    except ValueError:
        raise RuntimeError(r.text.strip() or '返回内容无法解析')
    if not data.get('success'):
        raise RuntimeError(data.get('error', {}).get('message', '请求失败'))
    return data['data']['downloads']


for item in get_downloads('1.21.51.02'):
    print(item['name'], item['url'], item.get('password', ''))
接口若有异常或你希望新增字段,欢迎在站内反馈。请合理控制调用频率,避免影响正常用户访问。