MCP on My SAMP

MCP on My SAMP

Enables AI agents to start, control, and verify local open.mp/SA-MP game servers via MCP stdio, using a headless RakClient to send allowed slash commands and assert round-trip responses.

Category
访问服务器

README

MCP on My SAMP

<p align="center"> <strong>AI-native testing bridge untuk server open.mp / SA-MP</strong><br> Jalankan, kendalikan, dan verifikasi game server lokal melalui MCP. </p>

<p align="center"> <a href="https://github.com/marhenrik635-oss/mcponmysamp/actions"><img src="https://img.shields.io/github/actions/workflow/status/marhenrik635-oss/mcponmysamp/ci.yml?style=for-the-badge&label=CI" alt="CI"></a> <img src="https://img.shields.io/badge/Python-3.10%2B-3776AB?style=for-the-badge&logo=python&logoColor=white" alt="Python 3.10+"><br> <img src="https://img.shields.io/badge/MCP-stdio-7C3AED?style=for-the-badge" alt="MCP stdio"> <img src="https://img.shields.io/badge/open.mp%20%2F%20SA--MP-local%20testing-00A86B?style=for-the-badge" alt="Local testing only"> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-F59E0B?style=for-the-badge" alt="MIT License"></a> </p>

Scope: local server atau server yang kamu miliki/izinkan. Bukan tool untuk public-server automation.


Apa yang bisa dilakukan?

MCP on My SAMP membuat AI agent dapat menguji server game dengan workflow yang dapat diulang:

  • start / stop / cek status open.mp;
  • start / stop / cek status headless RakClient;
  • menunggu client benar-benar Spawned;
  • mengirim command slash yang diizinkan;
  • membaca history output client;
  • memverifikasi response server sudah diterima client;
  • menemukan command dari source Pawn gamemode;
  • menolak command di luar allowlist.

Tidak menyediakan flood, spam, lag injection, arbitrary RCON, atau automation ke server publik.

Alur kerja

flowchart LR
    A[AI Agent] -->|MCP stdio| B[MCP on My SAMP]
    B --> C[open.mp Server]
    B --> D[Headless RakClient]
    D -->|UDP localhost| C
    C -->|server response| D
    D --> B
    B -->|assertion| A

Bukti round-trip yang valid:

command dikirim
→ server callback menerima command
→ gamemode mengirim response
→ client menerima response
→ MCP assertion berhasil

Spawned saja bukan bukti command berhasil.


Instalasi

1. Siapkan Python

Python 3.10 atau lebih baru diperlukan.

2. Install project

Jalankan dari root repository:

Windows

py -3 -m venv .venv
.venv\Scripts\activate
python -m pip install --upgrade pip
python -m pip install ".[dev]"

Linux / macOS

python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install ".[dev]"

3. Verifikasi

pytest -q

Output yang diharapkan:

35 passed

Binary open.mp dan RakClient hanya diperlukan untuk live test. Unit test Python tetap bisa dijalankan tanpa binary tersebut.


Konfigurasi

Buat file konfigurasi lokal dari template:

Windows

copy config.example.json local-server.json

Linux / macOS

cp config.example.json local-server.json

Isi file:

{
  "executable": "vendor/openmp/Server/omp-server.exe",
  "working_dir": "vendor/openmp/Server",
  "args": ["--config-path", "config.json"],
  "ready_text": "Legacy Network started on port",
  "startup_timeout": 30
}

Ubah executable dan working_dir sesuai lokasi open.mp di komputer kamu. local-server.json tidak masuk Git karena path setiap komputer berbeda.


Menjalankan MCP server

Server saja

mcp-gta-samp --config local-server.json

Dengan headless RakClient

Windows

mcp-gta-samp ^
  --config local-server.json ^
  --client-executable vendor/rakclient-bin/rakclient.exe ^
  --client-arg --server ^
  --client-arg 127.0.0.1:7777 ^
  --client-arg --nick ^
  --client-arg MCPBot ^
  --client-arg --scripts-dir ^
  --client-arg vendor/rakclient-bin/scripts ^
  --gamemode-source vendor/openmp/Server/gamemodes/mcp_test.pwn

Linux / macOS

mcp-gta-samp \
  --config local-server.json \
  --client-executable vendor/rakclient-bin/rakclient \
  --client-arg --server \
  --client-arg 127.0.0.1:7777 \
  --client-arg --nick \
  --client-arg MCPBot \
  --client-arg --scripts-dir \
  --client-arg vendor/rakclient-bin/scripts \
  --gamemode-source vendor/openmp/Server/gamemodes/mcp_test.pwn

Transport MCP menggunakan stdio.


MCP tools

Tool Fungsi
server_start Menyalakan server dan menunggu readiness.
server_status Mengecek status server dan PID.
server_stop Mematikan server.
client_start Menyalakan headless RakClient.
client_status Mengecek status client.
client_stop Mematikan client.
client_send_chat Mengirim command slash yang diizinkan setelah Spawned.
client_get_history Mengambil output client yang sudah dibuffer.
client_assert_output Memastikan output tertentu diterima client.
server_list_commands Menampilkan command dari source Pawn.
server_assert_command Memvalidasi command terhadap allowlist.

Dua tool terakhir tersedia jika --gamemode-source digunakan.


Workflow untuk AI agent

1. server_status
2. server_start jika belum berjalan
3. client_start
4. tunggu state Spawned
5. server_list_commands
6. server_assert_command("/help")
7. client_send_chat("/help")
8. client_assert_output("MCP Test Commands:")
9. client_get_history bila perlu diagnosis
10. client_stop
11. server_stop

Instruksi penting untuk agent:

  • jangan mengakses public server;
  • jangan menganggap boot, join, atau Spawned sebagai command round-trip;
  • jika gagal, klasifikasikan boundary: boot, koneksi, spawn, queue, outbound packet, callback server, response server, parser client, atau assertion MCP;
  • selalu hentikan proses setelah test;
  • pastikan port UDP 7777 kembali kosong.

Live test example

Gamemode test tersedia di:

vendor/openmp/Server/gamemodes/mcp_test.pwn

Command yang tersedia:

/help
/status

Jika source Pawn diubah, compile ulang .amx dari folder server:

qawno\pawncc.exe -i.\qawno\include -o.\gamemodes\mcp_test .\gamemodes\mcp_test.pwn

Workflow live:

server_start
→ client_start
→ client mencapai Spawned
→ client_send_chat("/help")
→ client_assert_output("MCP Test Commands:")
→ client_assert_output("/status - show a test response")
→ client_stop
→ server_stop

Headless RakClient membuktikan protocol, state, dan command. Ia tidak menghasilkan screenshot. Pengujian visual memerlukan rendered GTA client terpisah.


Pengembangan

Menjalankan test:

pytest -q

Membuat wheel:

python -m pip wheel . --no-deps -w dist

Install wheel:

python -m pip install dist/mcp_gta_samp-0.1.0-py3-none-any.whl

Struktur inti:

mcp_gta_samp/       package Python dan MCP facade
tests/              unit, contract, dan bridge tests
config.example.json template konfigurasi
vendor/             binary dan fixture live test

Keamanan

MCP ini membatasi penggunaan pada local/owned server. Jangan memasukkan credential, proxy pool, config privat, log privat, atau data test server ke repository publik.

Jika menjalankan server dari internet, tambahkan authentication dan network isolation sendiri. Package ini tidak dirancang sebagai game-control API publik.

Lisensi

MIT License. Lihat LICENSE.

Tautan

<p align="center"> Dibuat untuk testing open.mp / SA-MP yang terukur, aman, dan dapat diverifikasi. </p>

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选