Skip to main content
Glama
tina4stack

Claude Pascal MCP Server

by tina4stack

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

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": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_compiler_infoA

Detect available Pascal compilers and return their details.

Checks for Free Pascal (fpc), Delphi 32-bit (dcc32), and Delphi 64-bit (dcc64) on the system PATH and in common installation directories.

Returns a summary of all compilers found with name, version, and path.

Side effect: also emits an MCP notifications/tools/list_changed so any new tools added to the server since the client last fetched its catalog become visible without a Claude Code restart. Cheap to call; if the client doesn't honour the notification, nothing breaks.

compile_pascalA

Compile Pascal source code and return compiler output.

Use this to check if code compiles without running it. Returns compiler messages including any errors or warnings.

Args: source_code: The complete Pascal source code to compile. Should include the program/unit header (e.g., 'program Hello;'). compiler: Which compiler to use. Can be a type name ('fpc', 'dcc32', 'dcc64') or a full path to a specific compiler executable (e.g., 'C:\Program Files (x86)\Embarcadero\Studio\37.0\bin\dcc64.exe'). If not specified, auto-selects the best available compiler.

run_pascalA

Compile and execute Pascal source code, returning the program output.

Compiles the source code, runs the resulting executable, and returns both compilation messages and program output (stdout/stderr).

Args: source_code: The complete Pascal source code to compile and run. Should be a program (not a unit) with a begin..end block. compiler: Which compiler to use. Can be a type name ('fpc', 'dcc32', 'dcc64') or a full path to a specific compiler executable (e.g., 'C:\Program Files (x86)\Embarcadero\Studio\37.0\bin\dcc64.exe'). If not specified, auto-selects the best available compiler. stdin_input: Optional text input to send to the program's stdin. Useful for programs that read from input.

check_syntaxA

Check Pascal syntax without producing an executable.

Performs a syntax-only check (no linking). Faster than a full compile and useful for quickly validating code structure.

Args: source_code: The Pascal source code to check. compiler: Which compiler to use. Can be a type name ('fpc', 'dcc32', 'dcc64') or a full path to a specific compiler executable. If not specified, auto-selects the best available compiler.

parse_formA

Parse a Delphi/Lazarus form file and return its component structure.

Reads .dfm (VCL), .fmx (FireMonkey), or .lfm (Lazarus) form files and returns a structured view of all components, their properties, positions, sizes, and event handlers.

Args: file_path: Absolute path to the .dfm, .fmx, or .lfm file. output_format: How to format the output: - 'tree': Indented component tree with key properties (default) - 'summary': High-level overview with component counts and events - 'flat': Flat list of all components with position/size info

screenshot_appA

Take a screenshot of a running application window.

Finds a window by its title (or partial title) and captures just that window as a PNG image without stealing focus or disrupting the user's desktop. Use list_app_windows first if you need to find the exact title.

Args: window_title: Full or partial window title to capture (case-insensitive). For example: 'Hello World App' or just 'Hello'.

list_app_windowsA

List visible application windows on the desktop.

Use this to find the exact title of a window before taking a screenshot with screenshot_app.

Args: filter_text: Optional text to filter window titles (case-insensitive). Leave empty to list all visible windows.

launch_appA

Compile Pascal source and launch the GUI application in background.

Use this for GUI applications (VCL/FMX) that need to stay running so you can see and interact with them. Unlike run_pascal, this does not wait for the program to finish — it launches and returns immediately.

After launching, use the preview system (preview_start with "pascal-preview") to see the running application, or use screenshot_app to capture a screenshot.

Args: source_code: The complete Pascal source code to compile and launch. Should be a GUI program (VCL/FMX) with forms. compiler: Which compiler to use. Can be a type name ('fpc', 'dcc32', 'dcc64') or a full path to a specific compiler executable. If not specified, auto-selects the best available compiler.

compile_delphi_projectA

Compile a Delphi project using proper templates (DPR + PAS + DFM).

This is the ONLY correct way to build Delphi applications — do NOT use MSBuild, shell commands, or other build systems. This tool generates proper project structure and invokes the Delphi compiler (dcc32/dcc64) or Free Pascal directly.

Args: project_name: Name for the project (e.g., 'HelloWorld'). form_caption: Title bar text for the main form (VCL only). components: JSON array of components. Each component is an object: [{"type": "TButton", "name": "btnHello", "caption": "Say Hello", "left": 130, "top": 120, "width": 140, "height": 45, "event": "btnHelloClick"}] Supported types: TButton, TEdit, TLabel, TMemo. events: JSON array of event handlers: [{"name": "btnHelloClick", "body": "ShowMessage('Hello!');"}] compiler: Which compiler to use ('fpc', 'dcc32', 'dcc64', or full path). output_dir: Optional directory for output files. If not specified, uses a temp directory. project_type: One of: 'vcl' — Windows-only desktop GUI app (Vcl.Forms, .dfm). 'fmx' — FireMonkey cross-platform GUI app (FMX.Forms, .fmx). Emits a .dproj wired for Win32 + Win64 + Android64 so build_dproj can cross-compile to mobile without manual editing. Use this when the user wants Android/iOS/macOS, or just "a mobile-ready app". 'console' — text-mode program (no form). 'fpc' — Free Pascal program (cross-platform but no GUI). program_body: For console/fpc projects, the main program code.

build_dprojA

Build an existing Delphi .dproj project file using MSBuild + rsvars.bat.

Use this for real-world multi-file Delphi projects (CuttlefishV2.dproj, etc.) — anything that already exists on disk with its own .dproj, .dpr, units, forms, search paths, conditional defines, and resources. Honours the project's full build configuration exactly as RAD Studio would, no template substitution.

NOTE: compile_delphi_project is for generating a new throwaway project from a TButton/TEdit/TLabel/TMemo template. build_dproj is for building an existing real project. Use the right one.

STAGING CLEAN (Android / iOS / macOS / Linux): Delphi's own MSBuild Clean/Rebuild targets do NOT fully clean staging-based build pipelines. They wipe DCU/.o files but leave the PAClient (Android) or PAServer (iOS/macOS/Linux) staging directory and the previous artifact in place. That causes the classic "I changed code/assets but the new APK/app didn't update" symptom. When platform is Android/iOS/macOS/Linux and target is Rebuild or Clean, this tool automatically deep-cleans the platform's intermediate and bin directories before invoking MSBuild. Pass deep_clean=False to disable, or deep_clean=True to force it.

OUTPUT PATHS: this tool reads the .dproj's own DCC_ExeOutput / DCC_DcuOutput / DCC_BplOutput properties (resolved by MSBuild, honouring conditional PropertyGroups, $(Platform)/$(Config) substitution, base config inheritance, etc.) and uses those for both deep_clean and artifact resolution. So if your dproj points outputs at ..\bin$(Platform)$(Config) or anywhere else non-default, this tool follows. Safe guard: paths resolving outside the project tree (e.g. the shared C:\Users\Public...\Bpl\ system dir) are NEVER deep-cleaned; the trace will list them as "Skipped".

PASERVER (iOS / macOS / Linux): cross-builds for these platforms run through PAServer on a remote Mac or Linux host. Pass remote_profile with the name of a Connection Profile already configured in RAD Studio (Tools → Options → Environment Options → Connection Profile Manager). PAServer must be running on the target host. If the .dproj already pins a default profile you can omit remote_profile, but explicit is safer. This tool does not create profiles or store credentials — the profile must already exist locally on the dev machine.

Args: dproj_path: Absolute path to the .dproj file (e.g. r"D:\projects\cuttlefishmobile\src\CuttlefishV2.dproj"). config: Build config — Debug, Release, etc. (default Debug). platform: Target platform — Win32, Win64, Android64, iOSDevice64, iOSSimARM64, OSX64, OSXARM64, Linux64 (default Win32). For Cuttlefish always use Win32 unless explicitly building for mobile. target: MSBuild target — Build (default), Rebuild (clean+build), or Clean. studio_root: Optional Studio install (e.g. r"C:\Program Files (x86)\Embarcadero\Studio\37.0"). Defaults to the highest-version install detected. timeout: Seconds before the build is killed (default 600). Remote iOS/macOS/Linux builds can be slow on first run — bump to 1800+ if PAServer needs to re-deploy a large bundle. deep_clean: Nuke the platform's intermediate + bin dirs before building. None (default) auto-enables for Android/iOS/macOS/Linux Rebuild or Clean. True forces it on for any platform. False disables it. remote_profile: Name of the RAD Studio Connection Profile for PAServer. Required for iOS/macOS/Linux unless the .dproj pins a default. Ignored for Win32/Win64/Android. Example: "MyMacMini". If omitted on a PAServer platform, the tool auto-selects from registered Connection Profiles when exactly one is compatible — multiple matches force an explicit choice for safety (so a Linux Debug build can't accidentally hit a "production" PAServer host). deploy: Chain MSBuild's /t:Deploy after the requested target. Required to produce a packaged artifact on Android (APK), iOS (.app bundle + codesign), macOS (.app), and Linux (binary staged on remote). None (default) auto-enables for those platforms whenever target isn't Clean. False keeps the legacy "compile and link only" behaviour. Ignored for Win32/Win64. synthesize_ios_manifest: For iOS targets only. The IDE writes 4 DeployFile entries per Config × Platform on first deploy (Entitlements, InfoPList, LaunchScreen, ProjectOutput). Command- line Deploy can't synthesize them, so projects never IDE-deployed to iOS fail with cryptic "codesign … No such file" errors. Setting this True auto-adds the missing entries to the .dproj before Deploy runs, after writing a timestamped .bak backup. Default False — the build trace will report what's missing without mutating anything. Use check_ios_deploy to inspect without building.

check_ios_deployA

Check whether a .dproj has the iOS DeployFile entries required for Deploy.

PAServer's iOS Deploy target reads the dproj's section to decide what to ship to the Mac for codesign + .app assembly. The IDE writes 4 entries per Config × Platform on first deploy: ProjectiOSEntitlements, ProjectiOSInfoPList, ProjectiOSLaunchScreen, ProjectOutput. If they're missing — common when a project was renamed or never IDE-deployed to a given target — Deploy ships nothing and codesign fails with ".app: No such file or directory".

This tool only INSPECTS; it never mutates. Use synthesize_ios_manifest=True on build_dproj to add missing entries (with .bak backup).

Args: dproj_path: Absolute path to the .dproj. config: Build configuration to check (Debug, Release, etc.). platform: iOS platform: iOSDevice64 or iOSSimARM64.

paserver_infoA

Read local info about a PAServer Connection Profile (paclient -l).

Pure local read — does NOT touch the network. Returns the host, port, platform tag, and sysroot path the IDE has stored for this profile. The profile name must already exist in HKCU registry (use list_remote_profiles to enumerate). paclient itself doesn't error on unknown names — it returns synthesised defaults — so we validate against the registry first to catch typos with a clear error.

Args: profile: Connection Profile name (e.g. "MACBOOK"). Case-sensitive. studio_root: Optional Studio install root. Defaults to the highest-version detected.

paserver_check_connectionA

Two-stage reachability check for a PAServer Connection Profile.

Runs:

  1. Registry/paclient lookup to confirm the profile exists locally and resolve its host:port.

  2. A plain TCP connect to that host:port to confirm PAServer is listening.

Doesn't perform a full PAServer protocol handshake (that requires the paclient password and isn't necessary to answer "is the host even reachable"). For full validation, run any file-transfer tool against the profile — paclient will surface protocol-level errors.

Use this as the first pre-flight step before iOS/macOS/Linux builds or before paserver_get/paserver_put. Answers ~90% of "why is my PAServer build failing" questions immediately.

Args: profile: Connection Profile name (e.g. "MACBOOK"). timeout: TCP connect timeout in seconds. Default 3. studio_root: Optional Studio install root.

paserver_scratch_dirA

Return PAServer's per-profile scratch directory path on the remote host.

PAServer in restricted mode (the default) only allows file ops inside /Users//PAServer/scratch-dir/-/. Use this helper to get the right path before calling paserver_put / paserver_get, or to clean up after a build.

Args: profile: Connection Profile name (e.g. "MACBOOK"). remote_user: Unix username running paserver on the Mac/Linux host. You can find this by SSHing to the host once, or check the PAServer terminal output for the home dir.

paserver_getA

Pull a file or directory from the PAServer remote host to this box.

PREFER passing ssh_user: that routes the transfer over SSH (tar stream), which is the reliable path. PAClient 37.1's own --get is broken on Windows (it mangles the local destination and silently writes nothing — issue #12), and the SSH path also pulls directory bundles (.app / .dSYM) intact, which is what you actually want back after an iOS/macOS build.

Without ssh_user it falls back to paclient --get, kept only for hosts where SSH isn't set up — expect it to fail on paclient 37.1.

Args: profile: Connection Profile name (resolves the Mac host). remote_path: Path on the Mac — either absolute, or relative to the PAServer scratch root (e.g. "CuttlefishV2.app" or "logs/crash.txt"). Relative paths are resolved against the scratch dir for the SSH transport. local_dir: Local directory to extract into. Created if missing. ssh_user: Mac SSH login (e.g. "andrevanzuydam"). Enables the reliable SSH transport. Not stored in PAServer profiles, so you supply it. Requires one-time ssh-copy-id <user>@<host>. ssh_key_path: Optional explicit SSH private key path. timeout: Seconds before the transfer is killed (default 300; bump for large .app bundles). studio_root: Optional Studio install root.

paserver_putA

Push a file or directory from this box to the PAServer remote host.

Wraps paclient -u <local>,<remote_dir>. The local_path can use wildcard syntax (e.g. build\\*.so). Useful for staging files for a manual remote build, replacing assets the IDE didn't deploy, or seeding the PAServer scratch directory.

Args: profile: Connection Profile name. local_path: File or directory on this Windows box. May contain wildcards. remote_dir: Destination directory on the PAServer host. timeout: Seconds before the transfer is killed (default 300). studio_root: Optional Studio install root.

mac_ssh_checkA

Test SSH connectivity + key auth to the remote Mac.

Runs whoami over SSH with BatchMode (no interactive prompts) and verifies we land on the expected account. If key auth isn't set up, returns the exact ssh-copy-id command to fix it.

Args: host: Mac hostname or IP (use the same address as the PAServer profile's Host field — see paserver_info). user: Mac user account. key_path: Optional explicit SSH private key path.

mac_ssh_runA

Run an arbitrary command on the remote Mac via SSH.

The building block for any Mac-side operation that paclient.exe doesn't cover (xcrun simctl, devicectl, log inspection, log streaming, etc.). Most callers should prefer the sim_* tools that wrap simctl directly; use this when you need something specific that doesn't have a wrapper.

Args: host: Mac hostname or IP. user: Mac user account. command: Single command line. Quote internal spaces yourself. key_path: Optional explicit SSH private key path. timeout: Seconds before killed.

sim_listA

List iOS simulators on the Mac (xcrun simctl list devices --json).

Returns the raw simctl JSON so the caller can pick UDIDs / runtime versions / names. Pass booted_only=True to filter to currently-running.

sim_bootB

Boot a simulator by UDID (xcrun simctl boot).

sim_shutdownB

Shut down a simulator. Pass udid='booted' to stop all running ones.

sim_installA

Install a .app bundle on a simulator (xcrun simctl install).

app_path is the path on the Mac. After a build_dproj for iOSSimARM64 with deploy chained, the .app lives in PAServer's scratch dir — use paserver_scratch_dir + the project name to compose it.

sim_launchC

Launch an installed app by bundle identifier (xcrun simctl launch).

sim_terminateC

Terminate a running app by bundle identifier.

sim_uninstallC

Uninstall an app from a simulator.

sim_open_urlC

Open a URL in the simulator (deep link or web URL).

sim_screenshotA

Capture a simulator screenshot and return it as an Image (parity with adb_screenshot).

Pipes through base64 over SSH so we don't need a separate scp step. Returns [Image, description] on success, or an error string on failure.

ios_codesignA

Codesign an iOS/macOS .app bundle on the remote Mac (paclient -c).

The .app must already exist on the Mac (typically in PAServer's scratch dir after build_dproj + Deploy ran). The certificate is whatever's in the Mac's keychain — pass the common name (e.g. "iPhone Developer: Jane Doe (ABCDE12345)") or "-" for ad-hoc dash-signing (development use only; won't install on real devices). Notarization options need Apple Developer Program membership + notarytool setup on the Mac.

Args: profile: Connection Profile name. app_path: Remote path to the .app bundle. certificate: Identity in the Mac's keychain, or "-" for ad-hoc. entitlement: Optional remote path to entitlements.plist. notarize: Apply notarization (requires entitlement). timeout: Seconds before killed. studio_root: Optional Studio install root.

ios_create_ipaA

Package a signed .app into an .ipa on the remote Mac (paclient -i).

The .app must be codesigned first (ios_codesign). The provisioning profile must exist on the Mac and match the cert + bundle ID. IPA assembly runs entirely on the Mac via xcrun.

Args: profile: Connection Profile name. app_path: Remote path to the signed .app. out_path: Remote path where the .ipa should be written. certificate: Same identity used for codesign. provisioning_profile: Remote path to a .mobileprovision file. ipa_type: 1 = ad-hoc / dev distribution, 2 = App Store. Default 1. timeout: Seconds before killed (default 600). studio_root: Optional Studio install root.

ios_install_ipaA

Install an .ipa on an iOS device attached to the Mac (paclient -ii).

The iOS device must be physically connected to the Mac, trusted, and listed by xcrun devicectl. Find the UDID via idevice_id -l on the Mac, or in Xcode → Window → Devices and Simulators.

Note: this is for device installation. Simulator installation needs xcrun simctl install which paclient does NOT wrap — that's tracked under issue #5 (sim_* tools).

Args: profile: Connection Profile name. ipa_path: Remote path to the .ipa on the Mac. device_udid: Target iOS device UDID. timeout: Seconds before killed. studio_root: Optional Studio install root.

paserver_removeA

Delete a file or directory on the PAServer remote host.

Wraps paclient -R <remote_path> (capital-R: removes from the remote host, not the local cache). Use to clean up scratch dirs or old deployments. Be careful with wildcards.

Args: profile: Connection Profile name. remote_path: Path on the PAServer host. Wildcards allowed. timeout: Seconds before the operation is killed (default 60). studio_root: Optional Studio install root.

list_remote_profilesA

List PAServer Connection Profiles registered in this RAD Studio install.

These profiles drive iOS / macOS / Linux builds via PAServer on a remote Mac or Linux host. build_dproj uses them automatically (it picks the first compatible profile for the target platform), but listing them is useful when troubleshooting a "Missing profile name" or "No remote profile" error from MSBuild Deploy.

Each profile lists:

  • Name (what you pass as remote_profile=)

  • Platform tag (OSX64, iOSDevice64, Linux64 — used to filter for the target. An OSX64 profile is reusable for any Apple target.)

  • Host:port (where PAServer is listening)

  • Whether the sidecar .profile file exists at %APPDATA%\Embarcadero\BDS<ver><name>.profile. The sidecar is REQUIRED for Deploy to read the profile — if missing, open the profile in Connection Profile Manager once to write it.

Args: studio_root: Optional RAD Studio install root (e.g. r"C:\Program Files (x86)\Embarcadero\Studio\37.0"). Defaults to the highest-version install detected.

setup_fpcA

Download and install Free Pascal Compiler (FPC).

Only use this when no Pascal compiler is available on the system. Downloads FPC 3.2.2 from the official SourceForge mirror and performs a silent installation. May require administrator privileges.

Args: install_dir: Where to install FPC. Defaults to C:\FPC\3.2.2. Avoid paths with spaces.

focus_ideA

Restore the Delphi/Lazarus IDE window and bring it to the foreground.

Finds a running RAD Studio / Delphi / Lazarus IDE and:

  1. If minimized, calls ShowWindow(SW_RESTORE) to un-minimize it.

  2. Calls SetForegroundWindow to make it the active window.

This is the precondition for many IDE-driven workflows: observe_ide's screenshot is more reliable on a foreground window (the Windows Graphics Capture path can't reach GPU-composited Skia panels behind other windows), and any UI automation needs the window visible. Call this first whenever you're about to interact with the IDE.

Returns a one-line confirmation with the window title, or a clear error if no IDE is running.

observe_ideA

Observe the Delphi/Lazarus IDE and return a screenshot plus project info.

Finds a running RAD Studio, Delphi, or Lazarus IDE window, captures a screenshot of it, and optionally scans the project directory for source files. Claude reads the screenshot to spot compiler errors, warnings, or other messages in the IDE's Messages pane.

Args: project_dir: Optional path to the project directory on disk. If provided, also returns a list of project source files.

read_ide_errorsA

Read source code context around compiler error locations.

After spotting errors in an IDE screenshot, call this tool with the parsed error locations to get the source code around each error.

Args: project_dir: Path to the project directory on disk. errors: JSON array of error locations. Each entry is an object with 'file' and 'line' keys, e.g.: [{"file": "Unit1.pas", "line": 42}, {"file": "MainForm.pas", "line": 15}]

list_project_filesA

List all source files in a Delphi/Lazarus project directory.

Scans the directory for Pascal source files (.pas, .dpr, .lpr), form files (.dfm, .fmx, .lfm), and project files (.dproj, .lpi). Also parses .dproj files for unit references, search paths, and build configuration.

Args: project_dir: Path to the project directory on disk.

app_clickA

Click on a Windows application window at the given coordinates.

Coordinates use screenshot pixels — take a screenshot_app first to identify where to click, then use those pixel coordinates here.

Uses PostMessage with automatic child window targeting so clicks reach the correct control (buttons, edits, etc.).

Args: window_title: Full or partial window title (case-insensitive). x: X coordinate in screenshot pixels. y: Y coordinate in screenshot pixels. button: 'left' (default) or 'right'. double_click: If True, send a double-click.

app_typeA

Type text into a Windows application window.

Sends Unicode characters to the window's currently focused control. Click on a text field first with app_click to focus it.

Args: window_title: Full or partial window title (case-insensitive). text: The text to type.

app_keyA

Send a key or keyboard shortcut to a Windows application window.

Supports special keys: enter, tab, escape, backspace, delete, space, up, down, left, right, home, end, pageup, pagedown, f1-f12.

Supports modifier combinations: ctrl+a, ctrl+shift+s, alt+f4, etc.

Args: window_title: Full or partial window title (case-insensitive). key: Key name or combination (e.g., 'enter', 'ctrl+a', 'f5').

adb_devicesA

List all connected Android devices with model, Android version, and screen size.

Returns a formatted table of connected devices. Use this to find device serial numbers for targeting specific devices.

adb_device_infoB

Get detailed information about a connected Android device.

Args: device: Device serial number. If omitted, auto-selects when only one device is connected.

adb_screenshotA

Capture the Android device screen as a screenshot.

Returns the screen image for visual inspection. Use this to see what's currently displayed on the device.

Args: device: Device serial number. If omitted, auto-selects when only one device is connected.

adb_tapA

Tap a point on the Android device screen.

Args: x: X coordinate in pixels. y: Y coordinate in pixels. device: Device serial number. If omitted, auto-selects when only one device is connected.

adb_swipeA

Swipe on the Android device screen from one point to another.

Args: x1: Start X coordinate. y1: Start Y coordinate. x2: End X coordinate. y2: End Y coordinate. duration_ms: Swipe duration in milliseconds (default 300). device: Device serial number. If omitted, auto-selects when only one device is connected.

adb_type_textA

Type text on the Android device.

The text is escaped for the adb shell. Spaces and special characters are handled automatically. The device must have a text field focused.

Args: text: The text to type. device: Device serial number. If omitted, auto-selects when only one device is connected.

adb_keyA

Send a key event to the Android device.

Accepts short aliases: home, back, enter, menu, power, volume_up, volume_down, tab, delete, space, escape, dpad_up, dpad_down, dpad_left, dpad_right, dpad_center, app_switch, camera. Also accepts full KEYCODE_* names or numeric key codes.

Args: key: Key name, alias, or numeric code. device: Device serial number. If omitted, auto-selects when only one device is connected.

adb_installA

Install an APK file on the Android device.

Replaces the existing installation if present (-r flag).

Args: apk_path: Absolute path to the .apk file on the local machine. device: Device serial number. If omitted, auto-selects when only one device is connected.

adb_list_packagesA

List installed packages on the Android device.

Args: filter_text: Optional text to filter package names (case-insensitive). device: Device serial number. If omitted, auto-selects when only one device is connected.

adb_launch_appA

Launch an app on the Android device.

If no activity is specified, launches the default launcher activity.

Args: package: Package name (e.g., 'com.example.myapp'). activity: Optional activity name (e.g., '.MainActivity'). device: Device serial number. If omitted, auto-selects when only one device is connected.

adb_stop_appA

Force-stop an app on the Android device.

Args: package: Package name (e.g., 'com.example.myapp'). device: Device serial number. If omitted, auto-selects when only one device is connected.

adb_pushB

Push a file from the local machine to the Android device.

Args: local_path: Path to the file on the local machine. remote_path: Destination path on the device (e.g., '/sdcard/file.txt'). device: Device serial number. If omitted, auto-selects when only one device is connected.

adb_pullB

Pull a file from the Android device to the local machine.

Args: remote_path: Path on the device (e.g., '/sdcard/file.txt'). local_path: Destination path on the local machine. device: Device serial number. If omitted, auto-selects when only one device is connected.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 53 tools

Disambiguation5/5

Each tool targets a distinct resource and action: compiler operations, Android ADB commands, iOS simulator/PAServer operations, and IDE observations are all clearly separated. Even similar tools like compile_pascal vs check_syntax vs run_pascal have explicit differences in their descriptions, and compile_delphi_project vs build_dproj are contrasted directly.

Naming Consistency3/5

Naming is mixed: some tools follow verb_noun (compile_pascal, list_project_files), while others use noun_verb (adb_tap, sim_list, app_click). There is internal consistency within prefixes like adb_*, sim_*, and paserver_*, but the overall conventions are inconsistent. The pattern is readable but not uniform.

Tool Count2/5

At 53 tools, the surface is very large and spans multiple subdomains (Pascal compilation, Delphi project building, Android device automation, iOS simulator/remote builds, IDE interaction). While each tool has a purpose, the sheer quantity makes the set heavy and likely overwhelming for agents. It exceeds the '25+ feels heavy' threshold significantly.

Completeness4/5

The toolset provides broad lifecycle coverage for Pascal/Delphi development: code generation, compilation, running, GUI launching, project building, debugging via IDE observation, Android deployment, iOS remote builds, codesigning, IPA packaging, simulator management, and file transfers. Minor gaps exist (e.g., no direct .dproj editing, no explicit unit test runner), but the core workflows are thoroughly covered.

Maintenance

ActivityMaintained
ResponsivenessResponsive