skript-mcp
Enables interaction with a Minecraft server using Skript scripting language. Provides tools for checking and reloading Skript files, executing Minecraft commands, and retrieving server logs.
README
Skript MCP
This project exposes a small MCP server backed by a permanently running Paper server. Paper, Skript, and the installed addons are the parser: the Python code does not attempt to understand Skript syntax itself.
The default image contains this compatibility profile:
| Component | Version |
|---|---|
| Java | 21 |
| Paper | 1.21.4 build 232 |
| Skript | 2.14.3 |
| SkBee | 3.16.1 |
| skript-reflect | 2.6.3 |
| skript-gui | 1.4.0 |
Every downloaded jar is checked during the image build. Override all related
URLs and checksums together in .env to use another authoritative profile.
Never update only one addon without verifying the complete set.
Skript 2.14.3 is intentional for the 1.21.4 profile. SkBee 3.16.1 is the last
SkBee release for Minecraft 1.21.4, and newer Skript 2.15/2.16 releases collide
with its Adventure audience type registration. Newer Skript requires moving
the whole profile to a newer Minecraft and SkBee release.
Start Paper
Run the setup script. It checks Docker and uv, creates .env with a random
RCON password, installs dependencies, builds Paper, and verifies RCON:
./setup.sh
For manual setup, create a local environment file and replace the password with a long random value containing only letters, numbers, dots, underscores, or hyphens:
cp .env.example .env
docker compose build
docker compose up -d --wait
Set PUID and PGID in .env to the output of id -u and id -g. They
default to 1000 and let Paper read the host-created mode-0600 temporary files.
Paper logs are mounted at runtime/logs. Host scripts are mounted directly at
/server/plugins/Skript/scripts from scripts. World and plugin-generated data
remain disposable container state. Only RCON is published, and it is bound to
127.0.0.1:25575; the gameplay port is not published.
Check startup and plugin versions with:
docker compose logs paper
docker compose exec paper sh -c 'nc -z 127.0.0.1 25575'
Run the MCP server
Install and run it with uv:
uv sync
uv run --env-file .env skript-mcp
The MCP process reads these environment variables:
| Variable | Default |
|---|---|
RCON_PASSWORD |
Required |
RCON_HOST |
127.0.0.1 |
RCON_PORT |
25575 |
SKRIPT_SCRIPTS_DIR |
scripts |
MINECRAFT_LOG_PATH |
runtime/logs/latest.log |
RCON_TIMEOUT |
5 seconds |
RELOAD_TIMEOUT |
30 seconds |
MAX_SCRIPT_BYTES |
1048576 |
For OpenCode, add a local MCP entry and pass the same RCON password through the environment:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"skript": {
"type": "local",
"command": ["uv", "run", "--directory", "/absolute/path/to/skript-mcp", "--env-file", "/absolute/path/to/skript-mcp/.env", "skript-mcp"],
"enabled": true,
"environment": {}
}
}
}
Restart OpenCode after changing its configuration.
Tools
skript_check_file(path)validates an existing.skfile by path. Relative paths are resolved underSKRIPT_SCRIPTS_DIR; absolute paths are accepted when they point inside that directory. It reloads the complete script set so functions and other shared definitions from sibling scripts are available.skript_reload_file(path)reloads one existing path insideSKRIPT_SCRIPTS_DIRwithout reloading its siblings.minecraft_command(command)runs a privileged command over local RCON.minecraft_logs(lines=200)returns a bounded tail oflatest.log.skript_reset()removes only stale__mcp_check_<uuid>.skfiles.
Reload operations are serialized. Diagnostics are parsed primarily from the
RCON response because Skript deliberately redirects command diagnostics away
from normal server logging; bytes appended to latest.log after the operation
offset are captured and merged as a secondary source.
Safety
skript_check_file performs a real reload of every enabled script, not a
sandboxed parse. Source containing on load handlers or addon behavior can
modify the world, files, or external systems. Only check trusted scripts, and
treat minecraft_command and the RCON password as full administrator access.
Run unit tests with:
uv run pytest
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.