SAMP MCP server
2026년 9월 26일 커밋AI 지원을 통해 SA-MP 서버를 관리, 스크립팅 및 감사할 수 있으며, textdraw 디자인, 텍스처 편집, 3D 모델 미리보기를 위한 도구를 포함합니다.
다른 이름 KongGithubDev/SAMP-MCP
- 스타
- 6
- Tools
- 19
- 다운로드, 30일
- —
- 최신 버전
- —
- 마지막 커밋
- 2026년 9월 26일
- 라이선스
- MIT
SAMP MCP란?
SAMP은(는) MCP server입니다. AI 지원을 통해 SA-MP 서버를 관리, 스크립팅 및 감사할 수 있으며, textdraw 디자인, 텍스처 편집, 3D 모델 미리보기를 위한 도구를 포함합니다. 19개 도구를 제공합니다. 예: set_server_root, manage_server, get_status.
프로젝트 README에서 생성된 요약
SAMP MCP server 정보
SA-MP 서버 개발자는 이 MCP server를 사용하여 서버를 관리, 스크립팅 및 감사할 수 있습니다. 게임을 재시작하거나 서버를 실행할 필요 없이 사용자 인터페이스를 디자인하고 에셋을 관리할 수 있는 전문 도구 모음을 제공합니다. 로컬 SA-MP 서버 디렉토리에 연결하고 Node.js가 필요하며, AI 클라이언트가 채팅 인터페이스를 통해 직접 복잡한 개발 작업을 수행할 수 있도록 지원합니다.
이 서버에는 HUD, 로고 및 UI 요소를 생성하기 위한 전용 Textdraw Editor가 포함되어 있습니다. DXT1, DXT3, DXT5와 같은 다양한 형식을 지원하는 텍스처 딕셔너리를 구축하고 편집할 수 있는 TXD editor 기능도 갖추고 있습니다. 또한 개발자는 3D 모델 미리보기 도구를 사용하여 .dff 모델과 관련 텍스처를 시각화할 수 있습니다. 시스템은 이러한 에셋을 Blender와 같은 외부 소프트웨어에서 사용할 수 있도록 OBJ, MTL 또는 glTF 형식으로 내보낼 수도 있습니다.
활용 사례
- 1UI 요소 디자인 및 미리보기서버를 재시작하지 않고 웹 페이지에서 HUD 또는 로고를 위한 새로운 textdraw를 생성하고 시각화합니다.
- 23D 모델 시각화.dff 및 .txd 파일을 렌더링하여 3D 모델이 게임 내에서 어떻게 보이는지 미리 봅니다.
- 3외부 도구용 에셋 내보내기3D 모델링 소프트웨어에서 사용할 수 있도록 게임 내 3D 모델을 glTF 또는 OBJ 형식으로 변환합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
SAMP MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 SAMP MCP 설치
$ claude mcp add samp-mcp -- npx -y samp-mcpCursor에 SAMP MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"samp-mcp": {
"command": "npx",
"args": [
"-y",
"samp-mcp"
]
}
}
}VS Code에 SAMP MCP 설치
.vscode/mcp.json
{
"servers": {
"samp-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"samp-mcp"
]
}
}
}VS Code CLI에 SAMP MCP 설치
$ code --add-mcp '{"name":"samp-mcp","type":"stdio","command":"npx","args":["-y","samp-mcp"]}'Claude Desktop에 SAMP MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"samp-mcp": {
"command": "npx",
"args": [
"-y",
"samp-mcp"
]
}
}
}Codex에 SAMP MCP 설치
$ codex mcp add samp-mcp -- npx -y samp-mcpCodex config.toml에 SAMP MCP 설치
~/.codex/config.toml
[mcp_servers.samp-mcp] command = "npx" args = ["-y", "samp-mcp"]
Gemini CLI에 SAMP MCP 설치
$ gemini mcp add -s user samp-mcp npx -- -y samp-mcpGemini settings.json에 SAMP MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"samp-mcp": {
"command": "npx",
"args": [
"-y",
"samp-mcp"
]
}
}
}SAMP MCP 도구 19
README에서 감지됨set_server_rootmanage_serverget_statusrcon_commandfile_readfile_read_manyfile_writefile_editfile_grepfile_searchfile_treefile_list
| set_server_root | — | |
| manage_server | — | |
| get_status | — | |
| rcon_command | — | |
| file_read | — | |
| file_read_many | — | |
| file_write | — | |
| file_edit | — | |
| file_grep | — | |
| file_search | — | |
| file_tree | — | |
| file_list | — |
도구 19개 모두 보기도구 수 줄이기
file_detect_encodingfile_convert_encodingfile_infofile_line_endingsfile_bomfile_allowed_dirsfile_encodings
| file_detect_encoding | — | |
| file_convert_encoding | — | |
| file_info | — | |
| file_line_endings | — | |
| file_bom | — | |
| file_allowed_dirs | — | |
| file_encodings | — |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식 · 점수를 높이기 위해 수정할 항목
- 소스 저장소 연결 및 접근 가능konggithubdev/samp-mcp is public and reachablegithub.com/konggithubdev/samp-mcp ↗통과
- 패키지가 이 저장소를 소스로 명시samp-mcp names konggithubdev/samp-mcp as sourcenpmjs.com/package/samp-mcp ↗통과
- 빌드 출처(Sigstore 증명)No build attestation published for this release검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-09-26github.com/konggithubdev/samp-mcp ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from samp-mcp통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음19 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨No tool named like delete, drop or exec통과
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기samp-mcp
A comprehensive MCP server for SA-MP server development and management
Manage, script, and audit SA-MP servers with AI assistance.
Installation
npm install -g samp-mcp
# or
yarn global add samp-mcp
The package is published to the public npm registry as samp-mcp — no token and no ~/.npmrc setup are required.
The npm releases up to 1.0.12 predate the Textdraw Editor, the 3D model preview and the TXD editor — those tools arrive with 1.0.13. If a client shows no textdraw_* / txd_* / model_* tools, it is running a pre-editor build: a stale global install, or the old @konggithubdev/samp-mcp name that was published to GitHub Packages. Install samp-mcp@latest, re-approve the tool list, and restart the client.
Requires Node.js ≥ 18 and a functional SA-MP server directory.
File tools need the mcp-file-tools binary — samp-mcp finds it at its default install location, or you can point to it explicitly with the SAMP_MCP_FILE_TOOLS_COMMAND environment variable.
Updating
Already installed? Install the same package again — this always resolves the latest tag, so it is the most reliable way to update:
npm install -g samp-mcp
# or
yarn global add samp-mcp
npm's own update command works too, with one catch:
npm update -g samp-mcp # update within the installed major (1.0.12 -> 1.0.13)
npm outdated -g --depth=0 # list every global package that is behind
npm list -g samp-mcp # the version you currently have
npm update -g treats a global install as if it had been declared with a caret range (^1.0.12), so it never crosses a major version — reach for npm install -g when you want the latest regardless. Called without a package name, it updates every global package on the machine and downgrades anything that is ahead of latest, so keep it scoped to this package.
A global install is per-Node, so switching Node versions (nvm, fnm) hides the package until you install it again. On Linux/macOS it also fails with EACCES if the npm prefix is not writable — the usual fixes are a Node version manager or npm's own prefix setting.
Restart your MCP client afterwards. The running server keeps the old code in memory, so an open session keeps using the previous version until the client (Claude Desktop, Cursor, Windsurf, …) reconnects.
The server can also update itself from inside a session:
| Tool | What it does |
|---|---|
check_for_updates |
Compares the running version with the latest one published to npm (npm view samp-mcp version --registry=https://registry.npmjs.org) |
update_mcp_server |
Runs the global install for you and asks you to restart the client |
To see the version you currently have installed:
npm list -g samp-mcp
Textdraw Editor
samp-mcp can design SA-MP textdraws (HUD, UI, logos, sprite/txd art) as project files and show you the result on a web page — no server restart, no launching the game.
Workflow
textdraw_create(ortextdraw_importfrom existingTextDrawCreatecode / another editor's project JSON) — textdraws are stored in<server root>/.samp-mcp/textdraws/<project>.json, so a UI can be reviewed, diffed and versioned next to the gamemode.txd_scan(read-only survey) or the TXD editor (txd_open→txd_import_texture/txd_texture→txd_save) — read, build and edit the actual.txdtexture dictionaries (8888/888/565/555/4444/LUM8 and DXT1/3/5, mip maps included) instead of shipping bitmaps by hand. See TXD editor below.model_scan+model_preview— for font 5 (3D preview) textdraws: finds the.dffmodels on the machine (loose files, the server'smodels/folder, or inside a VER2.imgarchive such asgta3.img/samp.img), pairs them with their.txdtextures, and renders the model to the PNG the textdraw shows.model_exportwrites OBJ+MTL or glTF for Blender/three.js. See 3D models below.textdraw_preview— renders every textdraw on a web page using the classic 640x448 grid scaled to real resolutions, with boxes, alignment, colours, outline/shadow, decoded font 4 sprites and real rendered font 5 model previews (drag a model to orbit it, wheel to zoom).serve=truealso starts a live editor server (127.0.0.1) where textdraws can be dragged on screen and saved straight back into the project file.textdraw_export— emits ready-to-use Pawn:statements,declarations, a full system-module.inc(y_hooks + show/hide stocks), a markdown table or raw JSON.
Sprite / image / UI notes
- Font 4 sprite textdraws use text in the form
txdname:texturename(e.g.demo:demo_logo) — the preview resolves them against the scanned dictionaries and shows the real texture. - Working on art that has no
.txdyet? Drop the bitmap at.samp-mcp/textdraw-assets/sprites/<txdname>__<texturename>.png(or.jpg) and the preview draws it as a stand-in; validation reports it as a design-time image so it is clear the game will not show it until the same texture is shipped inside<txdname>.txd. - Font 5 model previews use
previewModel+previewRot/previewZoomand show the real model: the.dffis parsed and rasterised with its.txdtextures, and the result is cached at.samp-mcp/textdraw-assets/models/<modelid>.png(drop your own PNG there to override it). - Custom 0.3.DL UI textures are supported:
AddSimpleModel(...)lines found bytextdraw_importare kept with the project, they map model ids to their.dff/.txd, and they are re-emitted as hints by the module export.
3D models
model_scan finds what a server can actually show and model_preview renders it — the same idea as browser GTA SA model viewers (e.g. gtastuff.com/viewer), applied to font 5 textdraws:
- Reads
.dffclumps the way RenderWare writes them: clump → frame list (with the node-name extension) → geometry list → geometry struct (format flags, vertices, normals, texture coordinates, per-triangle material ids) → material list (colour, texture, addressing) → atomics, then applies the frame hierarchy so instanced parts land in the right place. - Finds models in loose files, the server's
models/,.samp-mcp/model-export/, or inside VER2.imgarchives (models/gta3.img,samp.img, …) — the index of an archive is read on its own, so a stock 1 GBgta3.imgis scanned without loading it. - Pairs each material texture with a matching
.txd(the model's sibling dictionary, theAddSimpleModeltxd, the.txdfiles found by the scan, or a design-time PNG), decodes 8888/888/565/555/4444/LUM8/DXT1/3/5, and falls back to.samp-mcp/textdraw-assets/sprites/<txd>__<texture>.pngfor art that has no dictionary yet. - Renders with z-buffering, bilinear texture sampling (wrap/mirror/clamp), per-vertex colours, material colour and alpha, camera-fixed key/fill/rim lighting and 2x supersampling.
rotfollowsTextDrawSetPreviewRot(rx tilts, rz yaws),zoomfollows the zoom argument,vehColrecolours the body parts vehicle materials mark, andyaw/pitchorbit the camera. model_exportwrites Wavefront OBJ + MTL or glTF 2.0 (one primitive per material, textures dumped as PNG next to it).
TXD editor (textures)
Font 4 sprites and 0.3.DL custom UI textures live inside .txd dictionaries, which is what the txd_* editing tools build and maintain — the same job Magic.TXD does, driven through MCP tools and verified against the files themselves:
txd_openopens a dictionary from a file or from inside a VER2.imgarchive (img: models/gta3.img+entry: vehicle.txd), or creates a new one (create: true), and lists every texture with its size, raster format, mip levels, section bytes and whether it can be decoded. The dictionary stays in memory for the following calls.txd_import_textureturns a PNG into a texture:format=8888(lossless, the default),888,565,555,4444,LUM8, or the compressedDXT1/DXT3/DXT5(seeded cluster fit with least-squares endpoint refinement — squish-style — 1-bit alpha for DXT1, 8-value alpha for DXT5),mipmaps=1(stock SA), a count,full(halves down to 1x1, like Magic.TXD) orkeep. Re-importing an existing name replaces that texture in place.txd_texturerenames (patching thechar[32]name field, so it also works for rasters this build cannot decode), duplicates, removes, or converts a texture to another raster format/mip count.- DXT compression runs at
quality: highby default — a range fit only seeds the search; from there the encoder alternates nearest-palette-entry assignment with a least-squares endpoint fit (the normal-equation solution per channel), scores every candidate against the palette the game will actually decode, and keeps the best. DXT5 alpha screens the quartile pairings of the block's own alphas (plus a coarse alpha grid) and refines the best four, so a smooth alpha ramp keeps its steps and a hard mask keeps its 0/255 edges.quality: fastkeeps the old single range fit for bulk conversions. txd_export_texturedecodes textures — including imports that are not saved yet — to PNG, so art can be checked or edited in a paint tool.txd_savewrites the dictionary back: to its own file (copying the previous one to<name>.txd.bakfirst), to a new.txd(out), or into the.imgentry it came from (rewritten in place, or appended at the end of the archive when it needs more sectors — the directory slot is the only other thing touched, so nothing else in a multi-gigabytegta3.imgmoves). The written bytes are parsed back before the result is reported, anddiscard: truethrows the edits away instead.- Textures that were not edited are written back byte for byte from the original file, so Direct3D 8 dictionaries, paletted rasters and formats this build cannot re-encode survive a save untouched.
Fidelity of the writer (all measured, not assumed): a complete dictionary rebuilt from its own decoded pixels reproduces stock GTA: SA files like models/vehicle.txd (19 textures), models/effectsPC.txd (36 textures) and background.txd byte for byte; the mipmap layout matches what Magic.TXD writes (level 0 directly after the 92-byte header, every later level preceded by its own u32 byte length, 0x8000 in rasterFormat and the 0x1106 filter when mipmapped); and the round trip is exercised per format by npm run test:txd (90 checks) plus the MCP-level checks in npm run test:textdraw.
The cost of that search (512x512 source, measured): DXT1 64 ms → 340 ms, DXT5 75 ms → 1.6 s. Fast exists for bulk work on many large textures; high is the default because one dictionary save is not a batch job.
DXT quality is measured, not claimed: npm run test:txd-quality writes gradient / photo-noise / UI-sprite / alpha-mask images (and real textures out of the game's own dictionaries) through the writer and back through the reader, scores PSNR (colour over opaque pixels, alpha over all, plus the transparent/opaque decision), and compares three encoders. Against the original single range fit the cluster/least-squares path gains +1.39 dB mean colour PSNR, up to +4.96 dB (a hard-edged alpha mask) and never loses a pixel anywhere, +2.43 dB on DXT5 alpha ramps; against a brute-effort reference that enumerates every endpoint pair the block implies and refines six rounds, it stays within 0.14 dB (colour) and 0.00 dB (alpha), i.e. the extra search buys essentially nothing — the seeds and early exit cost almost nothing either. That benchmark is part of npm run check (74 checks, ~1s).
Fidelity — what is exact, what is approximated
Exact (data level, verified by the round-trip check in npm run demo:textdraw):
- Every property round-trips Pawn → project → Pawn → project unchanged (position, letter/text size, colours, font, alignment, box/selectable/proportional, preview model/rotation/zoom/vehicle colours, global vs per-player).
- Pawn escapes: a newline escape inside a string literal becomes a real line break in the project and on the preview page, and is re-emitted as exactly one escape when exporting; the underscore placeholder is kept in the data and drawn as a space (the SA-MP convention for blank filler).
- Text metrics come from the game itself: the per-character advance tables of both HUD atlases (proportional
prop[]and the monospace advance), a glyph box of 10 units ×letterSizeY, a line height of 9 units ×letterSizeY, and the in-string colour codes~r~ ~g~ ~b~ ~w~ ~p~ ~h~ ~n~with the client's exact palette. Verified in-browser against the rendered pixels. - Outline/shadow are drawn in
TextDrawBackgroundColor(the client's behaviour, and why a transparent background hides the outline); the outline also widens each character's advance, and~h~lightens the current colour — all matching the client. - Screen scaling uses the game's grid maths (
x * W/640,y * H/448— the textdraw canvas is 640x448). - Font 4 draws the texture itself and modulates it with
TextDrawColor: rgb multiplied by the colour, alpha multiplied by its alpha, so a full-colour UI sheet (white colour) appears exactly as authored — it is not a flat silhouette. When the texture is missing the slot is painted with that colour instead, as the client does. - A box is only painted when
UseBoxis set (TextDrawUseBox), for every font — sprites and model previews included — which is what the client does; font 4 box fill usesTextDrawColor, font 5 usesTextDrawColor ∩ TextDrawBackgroundColor. .txddecoding is pixel-level verified (8888/888/565/555/4444/LUM8 and DXT1/3/5 blocks)..dffparsing is verified against an independently written RenderWare fixture (npm run test:model): clump/geometry/material/atomic counts, the frame hierarchy (an atomic on a translated child frame is placed at the translated position), frame/dummy names, material texture names, the per-triangle material split, and the texture actually appearing in the rendered pixels.
Approximated (the client rasterises these itself):
- Fonts 0-3 render with system fonts, so the glyph shapes differ slightly; character positions and total line width use the game's own advance tables (matching Leonardo541's TextDrawEditor, which supplies those tables), and a
glyph sizecontrol tunes the vertical glyph multiplier. - The box uses the wiki's corner semantics by default; a checkbox switches to the "box hugs the text" model of that editor (4 unit margin, height from the line count) for comparison.
- The font 5 renderer is a software rasteriser, not the game's renderer: the camera is a 3/4 orbit with a fixed field of view (the client's exact preview camera is internal), lighting approximates the game's key/fill setup, and skinned/bone-animated geometry is drawn in its bind pose. Colours, alpha, texture addressing and the model's own geometry are exact.
- Material colour bytes are read as
r, g, b, a(the documented RenderWare order); vehicle body markers (alpha ≤ 3) only take effect whenvehColis supplied.
Credit: the glyph advance tables and several client behaviours above were read out of Leonardo541/TextDrawEditor (MIT); samp-mcp also imports its project .json exports through textdraw_import.
Validation is authoritative: it encodes the real client limits (fonts that never render, y < 1 hiding the first row, trailing-space text rendering blank, empty text crashing older servers, the 800-character limit, selectable without a text size, the 2048/256 textdraw limits). Textdraws whose text is deliberately blank filler (a clickable slot, for example) are not flagged, and a sprite that resolves through a design-time image is reported as information rather than a missing texture.
Validation runs on every list/preview/export: font values that never render, malformed sprite references, missing textures, text beyond the client string limit, off-grid positions, selectable textdraws without a text size, duplicate variable names and the 2048/256 textdraw limits.
Module-aware design
For projects that organize code as system modules (e.g. gamemodes/includes/system/*.inc — the system-module pattern), samp-mcp auto-detects the architecture and aligns its tooling with it:
get_coding_standardsreports the module layout (count, categories, StartProgress, message macros, dialog & command conventions).generate_boilerplate(type=module|job|autofarm) emits a complete, self-contained module skeleton matching the project's own conventions (y_hooks,hook OnGameModeInit/...,StartProgress,ErrorMsg/ServerMsg/SyntaxMsg,CMD:+flags:), instead of generic snippets.design_featureplans propose a concrete module file (system/<name>.incorsystem/job/j_<name>.inc) plus its#includeregistration inmain.pwn, and guide implementation through the module's hooks.- Built-in rules tell agents to put new features in modules — never gameplay logic in
main.pwnor filterscripts. study_projectself-analyzes whatever gamemode it connects to (include graph, libraries, command/dialog/message/state conventions, timer/MySQL/loop patterns) and writes a per-projectSAMP_STUDY.mdwith verbatim idioms — so any environment gets docs that match its actual script.
Quick Start
1. Configure MCP Client
Add the following to your MCP client configuration (e.g., claude_desktop_config.json):
{
"mcpServers": {
"samp-mcp": {
"command": "npx",
"args": ["-y", "samp-mcp"]
}
}
}
2. Connect to Project
Once initialized, tell the AI agent:
"Connect to my SAMP server at C:\path\to\server" (samp-mcp: set_server_root)
3. File Handling
samp-mcp exposes file_* tools (file_read, file_write, file_edit, file_grep, …)
that delegate to the encoding-aware mcp-file-tools server — it auto-detects and
preserves Windows-874 (Thai) and CRLF, so .pwn/.inc text never gets garbled.
(You can also configure mcp-file-tools directly as a separate MCP server — samp-mcp
works either way.)
To update or install the mcp-file-tools binary itself, run update_file_tools:
it downloads the latest GitHub release for your platform and replaces the installed
binary, keeping a backup of the previous version (<binary>.v<old>.bak).
4. Initialize AI Agent
Copy and paste this as your first prompt to the AI:
"SAMP Project. Read
SAMP_RULES.mdand follow the encoding rules. Runset_server_rootto connect samp-mcp."
Tool Categories
Server Management
| Command | Description |
|---|---|
set_server_root |
Initialize and track a SAMP project directory |
manage_server |
Start, Stop, or Restart the server process |
get_status |
View hostname, players, and map statistics |
rcon_command |
Execute RCON commands via AI |
File Access (encoding-safe, via mcp-file-tools)
| Command | Description |
|---|---|
file_read |
Read a file, auto-detecting encoding (windows-874 Thai → UTF-8) |
file_read_many |
Read multiple files at once |
file_write |
Write a file back in its original encoding (CRLF preserved) |
file_edit |
In-place line edits with diff preview, encoding-safe |
file_grep |
Regex search across file contents with encoding support |
file_search |
Find files by glob pattern |
file_tree |
Project tree, optionally showing each file's encoding |
file_list |
List directory contents with pattern filter |
file_detect_encoding |
Report a file's real encoding + confidence |
file_convert_encoding |
Convert a file between encodings (with backup) |
file_info |
Get file/directory metadata |
file_line_endings |
Detect or convert CRLF/LF line endings |
file_bom |
Detect, strip, or add a BOM |
file_allowed_dirs |
Show directories the file backend may access |
file_encodings |
List all supported encodings |
Pawn Intelligence
| Command | Description |
|---|---|
compile_pawn |
Compile .pwn scripts and get structured errors |
compile_and_load_pawn |
Compile then hot-load a script via RCON (gmx) |
generate_boilerplate |
Generate Commands, Dialogs, Job, or Admin-Command templates — admin modules emit the cmd/admin.inc style (flags:, alias:, SendAdminMessage, instant action) |
inject_code |
Compile and test snippets without server restart |
Plugin & Include Management
| Command | Description |
|---|---|
search_plugin |
Search GitHub repos for SAMP plugins with release info |
install_plugin |
Install .dll/.so plugins — auto-extracts ZIP archives |
install_include |
Download and install .inc libraries from URL |
Web & Info
| Command | Description |
|---|---|
web_search |
Search the web via DuckDuckGo for SAMP-related info |
Auditing & Diagnostics
| Command | Description |
|---|---|
audit_script |
Scan for large arrays or hardcoded Dialog IDs |
audit_sql |
Detect SQL Injection risks (missing %e in mysql_format) |
audit_performance |
Identify fast timers or heavy OnPlayerUpdate logic |
find_shadowing |
Catch variable redefinitions (e.g., playerid) |
get_server_diagnostics |
Analyze logs for crashes and plugin failures |
Automation
| Command | Description |
|---|---|
generate_docs |
Generate markdown documentation for the project |
create_deployment |
Batch copy all necessary server files for distribution |
Textdraw Editor
| Command | Description |
|---|---|
textdraw_list |
List textdraw projects (or the textdraws of one) with stats + validation warnings |
textdraw_create |
Create a textdraw (full SA-MP property set, global or per-player, font 4 sprite / font 5 model preview) |
textdraw_update |
Patch a textdraw by id or Pawn name |
textdraw_delete |
Delete textdraws from a project |
textdraw_import |
Import textdraws from .pwn/.inc code (+ setters, AddSimpleModel), a samp-mcp project JSON, or a Leonardo541 TextDrawEditor project JSON |
textdraw_export |
Export Pawn: statements, declarations, a system-module .inc, markdown or JSON |
textdraw_preview |
Render the web preview page; serve=true starts the draggable live editor |
textdraw_preview_server |
Start / stop / status of the live preview+editor server on 127.0.0.1 |
model_scan |
Find .dff models (loose files, models/, VER2 .img archives) + their .txd textures and the model ids the projects use |
model_preview |
Render a model (id / file / name / .img entry) to the PNG a font 5 textdraw shows, with rot/zoom/vehCol/camera controls |
model_export |
Export a model as OBJ+MTL or glTF 2.0 with its textures as PNG |
TXD Editor (textures)
| Command | Description |
|---|---|
txd_scan |
Read-only survey: scan the server for .txd dictionaries, list their textures and decode them to PNG for the preview page |
txd_open |
Open a .txd for editing (file, .img entry, or create=true) and list its textures; with no arguments it lists the open dictionaries |
txd_import_texture |
Import a PNG as a texture (format, mip levels and DXT quality), replacing the texture when the name exists |
txd_texture |
Rename / duplicate / remove / convert one texture of an open dictionary (DXT quality too) |
txd_export_texture |
Decode the dictionary's textures (unsaved edits included) to PNG files |
txd_save |
Write the dictionary to its file (.bak kept), to a new .txd, or into its VER2 .img entry; discard=true drops the edits |
SAMP MCP 질문
SAMP MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add samp-mcp -- npx -y samp-mcp를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
SAMP MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
SAMP MCP는 어떤 도구를 제공하나요?
19개 도구를 제공합니다. 예: set_server_root, manage_server, get_status, rcon_command, file_read.
SAMP-MCP를 어떻게 설치하나요?
npm install -g samp-mcp 명령어로 npm을 통해 전역 설치하거나, yarn global add samp-mcp를 사용하여 yarn으로 설치할 수 있습니다.
서버를 재시작하지 않고 textdraw를 미리 볼 수 있나요?
네, 서버를 재시작하거나 게임을 실행할 필요 없이 웹 페이지에서 textdraw를 디자인하고 결과를 확인할 수 있습니다.
3D 모델 내보내기를 지원하나요?
네, model_export 도구를 사용하여 모델을 Wavefront OBJ + MTL 또는 glTF 2.0 형식으로 저장할 수 있습니다.