skynet-mcp
skynet-mcp
Kapselt die Debug-Befehle der DebugConsole des skynet-Spielserver-Frameworks als MCP (Model Context Protocol) Tools, sodass Coding-Agenten (wie opencode) die skynet-Debug-Konsole direkt über natürliche Sprache steuern können – ohne sich list / mem / call / inject und andere Befehle merken zu müssen.
用户: "看看现在 skynet 里跑了哪些服务"
AI: → 调用 list 工具
用户: "帮我把 watchdog 服务的卡住的任务栈打出来"
AI: → 调用 task 工具(地址来自 list 输出)Funktionen
32 MCP-Tools, die alle Befehle der Debug-Konsole abdecken (siehe Tool-Liste unten)
raw_commandFallback-Tool: leitet beliebige Befehlszeilen unverändert durch, kompatibel mit zukünftigen neuen Befehlen2 Ressourcen:
skynet://services(Live-Serviceliste),skynet://help(Befehlshilfe)1 Prompt-Vorlage:
skynet_troubleshoot(generiert Fehlerbehebungsschritte in der Reihenfolge "nur lesen → gefährlich")Befehle mit Nebenwirkungen (kill/exit/inject/call/signal/...) werden niemals automatisch wiederholt; bei Übertragungsfehlern von Nur-Lese-Befehlen wird einmal automatisch wiederholt.
Related MCP server: mc-mcp-server
Kommunikationsprinzip
Die skynet-Debug-Konsole unterstützt einen HTTP-Kanal (POST / HTTP/1.0, der Body ist die Befehlszeile, die Antwort ist roher Text + <CMD OK> / <CMD Error> Marker, danach wird die Verbindung geschlossen). Dieses Projekt konstruiert diese Anfrage manuell mit dem Standard-Socket:
Warum nicht http.client/requests: Die Antwort von skynet hat keine HTTP-Statuszeile (curl benötigt
--http0.9), Standard-HTTP-Clients können sie nicht parsen.Warum POST statt GET: Der Body von POST wird vom Server
docmd(body)unverändert als Befehlszeile ausgeführt, Anführungszeichen, Kommas und Schrägstrichpfade incall 3 "foo", 1, "bar"/inject 3 /home/x/patch.luawerden nicht durch URL-Kodierung beschädigt.
Projektstruktur
skynet-mcp/
├── skynet_mcp/
│ ├── main.py # FastMCP 入口(工具注册 + 资源 + 提示词)
│ ├── config.py # host/port/timeout(env + 命令行参数)
│ ├── backend.py # 裸 socket HTTP POST 通信层
│ ├── parser.py # 裸文本响应解析(去 Welcome/CMD 标记)
│ └── tools.py # 32 个工具定义
├── tests/ # mock console + 单元测试
├── examples/ # opencode 集成示例
└── scripts/smoke_test.pyInstallation (Linux, auf demselben Rechner wie skynet)
# 1. 获取代码(git clone,或拷贝已有目录到 ~/skynet-mcp)
mkdir -p ~/skynet-mcp && cp -r <代码路径>/* ~/skynet-mcp/
# 2. 创建 venv 并安装依赖(python3 需 >= 3.10)
cd ~/skynet-mcp
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/pip install -e .
# 3. 验证
.venv/bin/python scripts/smoke_test.py --port 8000Start
Der MCP-Server wird unabhängig über streamable-http gestartet (manuell oder von einem Prozessmanager wie systemd / supervisor verwaltet), lauscht auf einem festen Port und wird von Clients wie opencode über HTTP remote verbunden – nicht mehr automatisch vom Client als Unterprozess gestartet.
# WSL 内启动,默认监听 127.0.0.1:8765(Windows 侧经 WSL2 localhost 转发访问)
.venv/bin/python -m skynet_mcp.main
# 自定义 HTTP 监听端口
.venv/bin/python -m skynet_mcp.main --http-port 8765HTTP-Listener-Parameter:
Parameter | Standardwert | Beschreibung |
|
| HTTP-Listener-Adresse |
|
| HTTP-Listener-Port (unterscheidet sich vom skynet-Console-Port) |
Verbindungsparameter der skynet-Debug-Konsole:
Parameter | Umgebungsvariable | Standardwert |
|
|
|
|
|
|
|
|
|
Endpunkt-URL:
http://127.0.0.1:8765/mcp(MCP streamable-http Protokoll), Clients wie opencode / skynet-mcp-client verbinden sich über diesen Endpunkt.Sicherheit: Standardmäßig an
127.0.0.1gebunden und DNS-Rebinding-Schutz aktiviert; für Zugriff über mehrere Rechner--http-host 0.0.0.0verwenden und sicherstellen, dass das Netzwerk vertrauenswürdig ist (oder SSH-Tunnel verwenden), nicht öffentlich freigeben.
Anbindung an opencode
Starten Sie zuerst den MCP-Server unabhängig wie oben beschrieben und verbinden Sie sich dann mit type: "remote". Die Konfiguration muss auf der Seite geschrieben werden, auf der opencode läuft – opencode liest nur die globale Konfiguration ~/.config/opencode/opencode.json auf seiner eigenen Prozessseite plus die projektbezogene opencode.json im aktuellen Verzeichnis; opencode, das auf der Windows-Seite gestartet wird, sieht die Konfiguration in WSL nicht (erscheint als opencode mcp list zeigt No MCP servers configured).
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"skynet": {
"type": "remote",
"url": "http://127.0.0.1:8765/mcp",
"enabled": true
}
}
}opencode in WSL starten: Schreiben Sie
opencode.jsonim Projektstamm von WSL (im Repository enthalten) oder global~/.config/opencode/opencode.json.opencode auf der Windows-Seite starten (PowerShell / Desktop): Schreiben Sie die Windows-globale
C:\Users\Admin\.config\opencode\opencode.json(bei vorhandenem Inhalt wieinstructionszusammenführen und beibehalten) oder die projektbezogeneopencode.jsonim Startverzeichnis.urlbleibthttp://127.0.0.1:8765/mcp– die WSL2-localhost-Weiterleitung leitet127.0.0.1:8765von der Windows-Seite direkt an den in WSL lauschenden MCP-Prozess weiter, keine Änderung der MCP-Listener-Adresse erforderlich.Der MCP-Server muss unabhängig gestartet werden (manuell oder von einem Prozessmanager verwaltet), opencode startet keine Unterprozesse mehr automatisch; wenn der Server nicht läuft, zeigt opencode einen Verbindungsfehler an.
Für LAN/öffentlichen Zugriff muss MCP mit
--http-host 0.0.0.0neu gestartet werden – aber der Server hat keine Authentifizierung und gefährliche Befehle wiekill/inject/raw_command, daher wird nur ein SSH-Tunnel empfohlen (ssh -L 8765:127.0.0.1:8765 user@remote) oder Bearer-Token-Authentifizierung hinzufügen, nicht direkt öffentlich freigeben.
Nach den Änderungen opencode neu starten, im Chat /mcp eingeben, um zu bestätigen, dass skynet verbunden ist, und dann lassen Sie es "mit skynet-Tools alle aktuellen Dienste auflisten" für eine End-to-End-Verifikation. Vollständige Test- und Fehlerbehebungsschritte finden Sie in examples/opencode-mcp.md; Test-Prompts, die alle 32 Tools abdecken, finden Sie in examples/mcp-test-prompts.md.
Bereitstellungsmethoden
Direkte Verbindung in WSL/Linux (empfohlen): opencode, MCP-Prozess und skynet befinden sich alle in WSL, direkte Verbindung zu
127.0.0.1:<port>, keine Weiterleitung.SSH-Tunnel (entfernte Produktionsmaschine): Wenn MCP-Prozess und skynet auf verschiedenen Rechnern laufen,
ssh -L 8000:127.0.0.1:8000 user@remote, opencode verbindet sich mit lokalem Port 8000. Den Debug-Console-Port niemals direkt öffentlich freigeben.
Tool-Liste (32)
Tool | Basisbefehl | Beschreibung |
|
| Hilfe für alle Befehle |
|
| Alle Dienste und Adressen auflisten |
|
| Einzigartige Dienste und ausstehende Anfragen auflisten |
|
| Nachrichtenwarteschlange/ausstehende Anfragen/Gesamtnachrichten |
|
| Lua-Speicher der einzelnen Dienste |
|
| Erzwungenes GC für alle Dienste + Speicherbericht |
|
| Netzwerkverbindungsübersicht |
|
| C-Ebene / jemalloc-Speicher |
|
| Heap-Analyse |
| gleichnamig | Neuen Dienst starten (⚠) |
| gleichnamig | Dienst beenden (【gefährlich】) |
|
| Endlosschleife unterbrechen und Aufrufstapel erhalten (【gefährlich】) |
| gleichnamig | Aufrufstapel ausstehender Anfragen |
|
| Thread beenden (⚠) |
|
| Interne Dienstinformationen |
|
| Patch-Skript injizieren (【gefährlich】, Pfad aus Sicht von skynet) |
|
| Beliebige Debug-Protokoll-Befehle (⚠) |
|
| Roundtrip-Zeit |
|
| Protokoll-Trace |
| gleichnamig | Eingehende Nachrichten des Dienstes aufzeichnen |
|
| Lua-Schnittstelle des Dienstes aufrufen (【gefährlich】) |
| gleichnamig | Umgebungsvariablen lesen/schreiben |
| Durchleitung | Fallback für beliebige Befehle (【gefährlich】) |
Adressschreibweise: :01000001 (achtstelliges Hex), 1 (Kurzform), .Name (lokaler Dienstname).
Sicherheitshinweise
Die skynet-Debug-Konsole hat keine Authentifizierung und lauscht nur auf
127.0.0.1– für Remote-Nutzung SSH-Tunnel verwenden, Port nicht freigeben.【Gefährliche】Befehle (kill/exit/signal/inject/call/raw_command) beeinflussen laufende Dienste, in der Tool-Beschreibung markiert; Coding-Agent sollte vor dem Aufruf die Benutzerbestätigung einholen.
Der interaktive Befehl
debugbenötigt eine persistente Terminalsitzung, die der HTTP-Kanal nicht unterstützt, wurde explizit abgelehnt (bitte manuell mit telnet/nc verbinden).Der Skriptpfad von
injectist aus Sicht des skynet-Servers (MCP und skynet können sich auf unterschiedlichen Dateisystemen befinden).
Entwicklung und Tests
Reproduzierbare Prompts für End-to-End-Tests aller 32
skynet_*-Tools über opencode finden Sie inexamples/mcp-test-prompts.md; unten sind die Unit-/Smoke-Tests für Entwickler.
# 单元测试
python -m pytest tests/ -v
# 冒烟测试(先起 mock console)
python -m tests.mock_console # 打印 mock 端口
python scripts/smoke_test.py --port <mock端口>
# 或对真实 skynet 冒烟
python scripts/smoke_test.py --port 8000
# 手工验证(nc 直连真实 console)
printf 'POST / HTTP/1.0\r\nContent-Length: 4\r\n\r\nlist' | nc 127.0.0.1 8000Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Generate game-ready 3D models, textures, and audio from natural language, over MCP.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
One AI endpoint to search and call 22k+ MCP servers; 50+ hosted tools work instantly, no key.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables control of a Minecraft server through RCON commands via natural language, including game commands, chat-based AI interactions, and server management capabilities.6-
- AlicenseNot gradedqualityFmaintenanceEnables AI-driven interactions with Minecraft through a WebSocket-based server and MCP protocol, allowing external MCP clients and in-game chat to trigger AI tools.4MIT
- AlicenseNot gradedqualityBmaintenanceA Linux-native MCP server that gives AI assistants direct access to DMA-based memory operations for memory inspection, process analysis, reverse engineering, and game engine SDK extraction via natural language.13AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceLocal MCP server that gives AI agents 44 engine tools to build, run, and debug real 2D and 3D games through conversation.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/losophy/skynet-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server