About MineMCP
MineMCP is an MCP server in the Gaming category: an MCP server implementation bridging AI agents and an Minecraft server.
Install
git clone https://github.com/AxenoDev/MineMCPThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about MineMCP
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
MineMCP
A Minecraft Paper plugin that implements the Model Context Protocol (MCP) server, enabling AI agents to control and monitor a Minecraft 1.21 server via HTTP.
🛠️ Available Tools
World Manipulation
pose_block- Place a block at specific coordinatesbreak_block- Break a block at specific coordinatesfill_block- Fill a region with blocks
Command Execution
execute_command- Execute any Minecraft command with output capture
File System
read_file- Read text files from the serverwrite_file- Write text files to the serverread_file_base64- Read binary files as Base64write_file_base64- Write binary files from Base64list_directory- List directory contents
Server Information
list_plugins- Get all installed pluginsget_logs- Retrieve recent server logsget_online_players- List all online playersget_player- Get detailed information about a specific player (health, inventory, location, effects, etc.)
📋 Requirements
- Java 21 or higher
- Minecraft 1.21 server
- Paper or Purpur server software (Spigot may work but not officially supported)
🚀 Installation
Download Pre-built JAR
- Download the latest release from the Releases page
- Place
MineMCP-1.0.0-all.jarin your server'splugins/folder - Start/restart your server
- Configure the token in
plugins/MineMCP/config.yml
⚙️ Configuration
After the first run, edit plugins/MineMCP/config.yml:
server:
port: 3000
token: "your-secret-token-here" # Change this to a secure random token!
Important: Always change the default token for security!
Generating a Secure Token
# Linux/macOS
openssl rand -hex 32
# Or use any password generator to create a strong token
🔌 Usage
Starting the Server
- Start your Minecraft server with MineMCP installed
- The MCP server will automatically start on port 3000 (configurable)
- Check the console for:
[MineMCP] MCP server started on port 3000
Connecting with an MCP Client
Using VS Code with MCP Extension
Create or edit .vscode/mcp.json in your project:
{
"mcpServers": {
"minecraft": {
"url": "http://localhost:3000/sse?token=your-secret-token-here"
}
}
}
📚 API Examples
Execute a Command
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "execute_command",
"arguments": {
"command": "time set day"
}
}
}
Place a Block
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "pose_block",
"arguments": {
"world": "world",
"x": 100,
"y": 64,
"z": 200,
"material": "DIAMOND_BLOCK"
}
}
}
Get Player Information
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "get_player",
"arguments": {
"player": "PlayerName",
...
}
}
}
🔒 Security Considerations
- Token Protection: Never commit your token to version control
- Network Security: By default, the server binds to
0.0.0.0(all interfaces) - Firewall Rules: Restrict port 3000 access to trusted IPs only
- File System Access: Tools have access to the entire server directory - use with caution
🤝 Contributing
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Adding a New Tool
- Create a new class extending
McpToolinsrc/main/java/me/axeno/minemcp/tools/impl/ - Implement the required methods (
getSchema()andexecute()) - Register the tool in
ToolHandler.javaconstructor
Example:
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);
}
}
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
📞 Support
- Issues: GitHub Issues
Made with ❤️ for the Minecraft and AI communities
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.