返回 MCP 目录
public公开dns本地运行

minemcp

MineMCP是一个Minecraft Paper插件,实现了Model Context Protocol(MCP)服务器,允许AI代理通过HTTP控制和监控Minecraft 1.21服务器,提供世界操作、命令执行、文件访问和服务器信息查询等功能。

article

README

🚀 MineMCP

MineMCP 是一款 Minecraft Paper 插件,它实现了 模型上下文协议 (MCP) 服务器,允许 AI 代理通过 HTTP 控制和监控 Minecraft 1.21 服务器。

🚀 快速开始

安装要求

  • Java 21 或更高版本
  • Minecraft 1.21 服务器
  • PaperPurpur 服务器软件(Spigot 可能可用,但未得到官方支持)

安装步骤

下载预构建的 JAR 文件

  1. 发布页面 下载最新版本。
  2. MineMCP-1.0.0-all.jar 文件放置在服务器的 plugins/ 文件夹中。
  3. 启动/重启你的服务器。
  4. plugins/MineMCP/config.yml 中配置令牌。

配置

首次运行后,编辑 plugins/MineMCP/config.yml 文件:

server:
  port: 3000
  token: "your-secret-token-here"  # 请将此值更改为安全的随机令牌!

重要提示:为了安全起见,请务必更改默认令牌!

生成安全令牌

# Linux/macOS
openssl rand -hex 32

# 或者使用任何密码生成器创建强令牌

启动服务器

  1. 启动安装了 MineMCP 的 Minecraft 服务器。
  2. MCP 服务器将自动在端口 3000 上启动(可配置)。
  3. 在控制台中查看:[MineMCP] MCP server started on port 3000

使用 MCP 客户端进行连接

使用带有 MCP 扩展的 VS Code

在项目中创建或编辑 .vscode/mcp.json 文件:

{
  "mcpServers": {
    "minecraft": {
      "url": "http://localhost:3000/sse?token=your-secret-token-here"
    }
  }
}

✨ 主要特性

世界操作

  • pose_block - 在指定坐标处放置一个方块
  • break_block - 在指定坐标处破坏一个方块
  • fill_block - 用方块填充一个区域

命令执行

  • execute_command - 执行任何 Minecraft 命令并捕获输出

文件系统

  • read_file - 从服务器读取文本文件
  • write_file - 向服务器写入文本文件
  • read_file_base64 - 以 Base64 格式读取二进制文件
  • write_file_base64 - 从 Base64 格式写入二进制文件
  • list_directory - 列出目录内容

服务器信息

  • list_plugins - 获取所有已安装的插件
  • get_logs - 获取最近的服务器日志
  • get_online_players - 列出所有在线玩家
  • get_player - 获取特定玩家的详细信息(健康状况、库存、位置、效果等)

💻 使用示例

执行命令

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "execute_command",
    "arguments": {
      "command": "time set day"
    }
  }
}

放置方块

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "pose_block",
    "arguments": {
      "world": "world",
      "x": 100,
      "y": 64,
      "z": 200,
      "material": "DIAMOND_BLOCK"
    }
  }
}

获取玩家信息

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "get_player",
    "arguments": {
      "player": "PlayerName",
      ...
    }
  }
}

🔧 技术细节

安全注意事项

  1. 令牌保护:切勿将令牌提交到版本控制系统。
  2. 网络安全:默认情况下,服务器绑定到 0.0.0.0(所有接口)。
  3. 防火墙规则:仅允许受信任的 IP 访问端口 3000。
  4. 文件系统访问:工具可以访问整个服务器目录,请谨慎使用。

贡献代码

欢迎贡献代码!请遵循以下步骤:

  1. 分叉此仓库。
  2. 创建一个功能分支 (git checkout -b feature/amazing-feature)。
  3. 提交你的更改 (git commit -m 'Add amazing feature')。
  4. 将更改推送到分支 (git push origin feature/amazing-feature)。
  5. 打开一个拉取请求。

添加新工具

  1. src/main/java/me/axeno/minemcp/tools/impl/ 中创建一个新类,继承 McpTool
  2. 实现所需的方法 (getSchema()execute())。
  3. ToolHandler.java 构造函数中注册该工具。

示例:

public class MyTool extends McpTool {
    public MyTool() {
        super("my_tool", "Description of my tool");
    }

    @Override
    public ObjectNode getSchema() {
        ObjectNode schema = mapper.createObjectNode();
        schema.put("type", "object");
        // Define your schema...
        return schema;
    }

    @Override
    public ObjectNode execute(JsonNode args) throws Exception {
        CompletableFuture<String> future = new CompletableFuture<>();
        
        Bukkit.getScheduler().runTask(MineMCP.getInstance(), () -> {
            try {
                // Your Bukkit operations here
                future.complete("Success!");
            } catch (Exception e) {
                future.completeExceptionally(e);
            }
        });
        
        String result = future.get(10, TimeUnit.SECONDS);
        return createTextResult(result);
    }
}

📄 许可证

本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。

📞 支持


为 Minecraft 和 AI 社区精心打造 ❤️

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端