Skip to main content
Glama
smk-h

embedded-mcp-toolkit

by smk-h

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DEVICENo默认的设备名称,对应config.yaml中devices下的keyboard-b
LOG_DIRNo日志存储的目录,相对于MCP server进程的工作目录./log
LOG_SAVENo是否存储日志到文件("1"表示开启)1
BOARD_CONFIG_PATHNo配置文件路径,相对于MCP server进程的工作目录./configs/config.yaml

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
greet_toolB

Greet someone by name

version_toolA

Get the MCP server version and toolkit information

device_info_toolA

Get device configuration. Uses the default device when no name is given; returns all devices when 'all' is specified.

notify_demo_toolA

Demonstrate server-to-client notifications: send logging messages or trigger list_changed events

session_infoA

Query active session metadata. Pass session_id for one session, device for all sessions of a device, or neither for all active sessions. Each session returns: session id, connection type (serial/ssh/adb), device name, connection info (e.g. COM3@115200), creation time, and the raw session log file path (serial/ssh/adb traffic recorded continuously by the server, including full boot logs after reset/reboot).

host_infoA

Query the MCP host endpoint (username@ip) for constructing cross-machine file transfers (scp) when this MCP runs on Windows and the AI client runs on Linux. Returns 'local started' with no endpoint for local launches.

ssh_shell_openA

Open an interactive SSH shell session to the board. Returns the initial banner output.

ssh_shell_closeB

Close an SSH shell session and release the connection.

ssh_shell_writeA

Send a command to an SSH shell session. Do NOT call this concurrently with ssh_shell_exec/ssh_shell_read on the same session_id — concurrent access to the same SSH shell corrupts the output buffer.

ssh_shell_readA

Read output from an SSH shell session. Do NOT call this concurrently with ssh_shell_exec/ssh_shell_write on the same session_id — concurrent access to the same SSH shell corrupts the output buffer.

ssh_shell_execA

Send a command to an SSH shell session and wait for the output. Combines write + delay + read in one call. IMPORTANT: Do NOT issue concurrent commands to the same session_id — the SSH shell is a single channel; concurrent calls will interleave output and corrupt results. Always wait for the previous command to finish before sending the next one. If you need parallel execution, open multiple sessions via ssh_shell_open.

ssh_shell_send_ctrlA

Send a control character (Ctrl+C/U/D/Z) to an SSH shell session without appending a newline.

ssh_shell_connectionA

Check active SSH connections on the remote board. Shows which client IPs are connected to the SSH service (port 22).

ssh_shell_loginA

One-click SSH login: connect, detect PSH state, auto-unlock if locked, and return a ready session. Combines open + PSH detect + unlock into a single call.

ssh_buildA

Execute a build command on the remote server via SSH, wait for completion, classify errors/warnings, and return structured build results for AI analysis. IMPORTANT: Each session supports only ONE build at a time. For concurrent builds, open multiple sessions via ssh_shell_open and assign one build per session.

ssh_sftp_uploadA

Upload a local file to the remote board over SFTP, reusing an existing SSH session.

ssh_sftp_downloadA

Download a remote file from the board to local over SFTP, reusing an existing SSH session.

serial_openA

Open a serial port connection and start an interactive shell session. Returns the initial banner output.

serial_closeA

Close a serial port session and release the port.

serial_writeB

Send a command to a serial shell session. Do NOT call this concurrently with serial_exec/serial_read on the same session_id — concurrent access to the same serial console corrupts the output buffer.

serial_readA

Read output from a serial shell session. Do NOT call this concurrently with serial_exec/serial_write on the same session_id — concurrent access to the same serial console corrupts the output buffer.

serial_execA

Send a command to a serial shell session and wait for the output. Combines write + delay + read in one call. IMPORTANT: Do NOT issue concurrent commands to the same session_id — the serial console is a single channel; concurrent calls will interleave output and corrupt results. Always wait for the previous command to finish before sending the next one. If you need parallel execution, open multiple sessions via serial_open.

serial_send_ctrlA

Send a control character (Ctrl+C/U/D/Z) to a serial shell session without appending a newline.

serial_shell_loginA

One-click serial login: connect, detect PSH state, auto-unlock if locked, and return a ready session. Combines open + PSH detect + unlock into a single call.

serial_enter_ubootA

Enter U-Boot by rebooting the device and stopping autoboot. Detection rules (autoboot prompts, command prompt, verify env keys) are configurable via device config serial.uboot; falls back to built-in defaults. Two-layer strategy: prompt match first; if not matched within a short window, sends 'printenv' and verifies U-Boot env keys. Fails fast on kernel boot or verify timeout.

serial_uboot_stateA

Query, detect, or force-set the U-Boot mark of a serial session. The mark decides serial_exec's marker wrapping (U-Boot sessions use plain style without subshell). Actions: 'detect' (default) — classify the live environment from buffered tail evidence first (zero side effects); if inconclusive, send a bare Enter to redraw the prompt. Conclusive results sync the mark automatically. WARNING: do NOT detect while a command may still be running or waiting for interactive input (e.g. Y/N) — the probe Enter could answer it. 'set'/'clear' — force the mark when auto-detection is out of sync; 'status' — read the mark only, no device I/O.

serial_uploadA

Upload a binary file to the device over ZMODEM via an existing serial session. The device must have lrzsz installed (rz command). IMPORTANT: this tool triggers the device-side rz by itself (via recv_cmd); do NOT manually run rz (or serial_exec/write rz) on the session beforehand — a pre-started rz enters its own waiting state that breaks the tool's ZMODEM handshake. Just call this tool and pass recv_cmd when a working directory change is needed (e.g. "cd /home && rz"). Blocks until transfer completes, fails, or times out; progress is logged to stderr. Two timeouts: idle_timeout aborts on stalled transfer (real failure); timeout caps total duration and reports a suggested value if still progressing.

serial_downloadA

Download a binary file from the device over ZMODEM via an existing serial session. The device must have lrzsz installed (sz command). IMPORTANT: this tool triggers the device-side sz by itself (via send_cmd); do NOT manually run sz (or serial_exec/write sz) on the session beforehand — a pre-started sz enters its own sending state that breaks the tool's ZMODEM handshake. Just call this tool and pass send_cmd when a directory change is needed (e.g. "cd /home && sz {remote}"). remote_path resolves on the device relative to the shell's current working directory — prefer an absolute path, or combine send_cmd with a cd to pin the directory. If the remote file does not exist or is unreadable, sz errors out and the transfer fails (a partial local file, if any, is removed on failure). Blocks until transfer completes, fails, or times out; progress is logged to stderr. Two timeouts: idle_timeout aborts on stalled transfer (real failure); timeout caps total duration and reports a suggested value if still progressing.

port_scan_toolA

Scan Windows Device Manager for available COM (serial) and LPT (parallel) ports

network_scan_toolA

Scan Windows network adapters and configurations (IP, MAC, status, speed)

subnet_check_toolA

Analyze subnet information for a target IP address. Retrieves host IP, subnet mask, and gateway, calculates subnet range (network address, broadcast address, usable host range, CIDR), and determines whether the target IP falls within the same subnet as the host.

power_shell_openA

Open an interactive PowerShell shell session on the local Windows machine. Returns the initial banner output.

power_shell_closeA

Close a PowerShell shell session and terminate the process.

power_shell_writeA

Send a command to a PowerShell shell session. Do NOT call this concurrently with power_shell_exec/power_shell_read on the same session_id — concurrent access to the same PowerShell process corrupts the output buffer.

power_shell_readA

Read output from a PowerShell shell session. Do NOT call this concurrently with power_shell_exec/power_shell_write on the same session_id — concurrent access to the same PowerShell process corrupts the output buffer.

power_shell_execA

Send a command to a PowerShell shell session and wait for the output. Combines write + delay + read in one call. IMPORTANT: Do NOT issue concurrent commands to the same session_id — the PowerShell process is a single channel; concurrent calls will interleave output and corrupt results. Always wait for the previous command to finish before sending the next one.

adb_device_listA

List all connected ADB devices and their status (device, offline, unauthorized, etc.)

adb_execA

Execute a one-shot ADB command without a persistent session. Use for adb devices, install, push, or short shell commands.

adb_shell_openA

Open an interactive ADB shell session to an Android device. Returns the initial banner output.

adb_shell_closeA

Close an ADB shell session and terminate the adb process.

adb_shell_writeA

Send a command to an ADB shell session. Do NOT call this concurrently with adb_shell_exec/adb_shell_read on the same session_id — concurrent access to the same ADB shell corrupts the output buffer.

adb_shell_readA

Read output from an ADB shell session. Do NOT call this concurrently with adb_shell_exec/adb_shell_write on the same session_id — concurrent access to the same ADB shell corrupts the output buffer.

adb_shell_execA

Send a command to an ADB shell session and wait for the output. Combines write + delay + read in one call. IMPORTANT: Do NOT issue concurrent commands to the same session_id — the ADB shell is a single channel; concurrent calls will interleave output and corrupt results. Always wait for the previous command to finish before sending the next one. If you need parallel execution, open multiple sessions via adb_shell_open.

adb_shell_send_ctrlA

Send a control character (Ctrl+C/U/D/Z) to an ADB shell session without appending a newline.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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/smk-h/embedded-mcp-toolkit'

If you have feedback or need assistance with the MCP directory API, please join our Discord server