Skip to main content
Glama

machine-mcp

A laptop-side MCP server. An AI agent talks to it over stdio and runs tools on the human's own machine (the one already signed into Copilot CLI and the rest of the local toolchain).

This is a local command process. It does not wrap Cursor or Grok Bot pairing. It does not replace Grok Bot Computers or Local execution.

Install

Python 3.10 or newer.

cd machine-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

Dev tests:

pip install -e ".[dev]"
pytest tests/

Related MCP server: remotessh-mcp

Run

machine-mcp

stdio servers block on stdin. The client starts the process and owns the pipes.

Smoke test (prints status JSON, exits 0):

machine-mcp --check

On start, if MACHINE_MCP_TOKEN is unset, a random bearer token is generated and printed once to stderr:

machine-mcp token: ...

Keep that token for HTTP v2. stdio v1 does not check it: the client already spawned this process as you.

Cursor / Grok Bot connector

Add a local MCP server whose command is the venv entry point. No pairing protocol.

{
  "mcpServers": {
    "machine-mcp": {
      "command": "path/to/.venv/bin/machine-mcp"
    }
  }
}

See examples/mcp.json. Point command at the absolute path of .venv/bin/machine-mcp on this laptop.

Optional env:

  • MACHINE_MCP_WORKSPACE file-tool root. Default: ~/machine-mcp-workspace (created on start).

  • MACHINE_MCP_TOKEN bearer token for a future HTTP listener. Generated if unset.

Tools

Tool

What it does

status

OS, hostname, cwd, Python version, whether copilot / ffmpeg / git exist on PATH. No secrets.

run

subprocess in the workspace root. shlex.split, not shell=True. Default timeout 30s, max 120s. Nonzero exits return ok: false; stdout and stderr are capped at 1MB each. Timed-out process groups are terminated. Redacts github_pat_ and AWS access-key shapes in output.

record_terminal

Honest stub that never writes a video file. On Linux with ffmpeg, returns an x11grab command; other platforms return a clear unsupported-platform error.

write_file

Write a path relative to the workspace. Refuses .. and absolute paths.

read_file

Read a path relative to the workspace. Same sandbox. 1MB limit.

Local only

stdio is local to this process. There is no listen socket in v1. HTTP is optional later and must require MACHINE_MCP_TOKEN. Do not expose this server on a network.

License

MIT. Copyright Andrea Griffiths 2026.

Available Tools

5 tools
read_fileA

Read a UTF-8 file relative to the workspace root. Size limit 1MB.

Refuses absolute paths and parent-directory segments.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

没有 annotations,因此描述承担了行为透明度责任。它披露了编码要求(UTF-8)、大小限制(1MB)、以及拒绝绝对路径和父目录段的限制,这些都是 schema 中不存在的行为约束。仅未提错误行为,但整体已较充实。

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

整体极简:第一句给出核心操作与限制,第二句列出路径约束,每句话都有价值,没有冗余。关键约束前置,结构清晰。

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

工具只有一个必填参数,复杂度低,且存在 output schema 无需重复返回值描述。描述已覆盖编码、大小、路径范围与拒绝规则,对智能体而言足以正确选择并调用该工具。

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

input schema 对 path 参数零描述,只有类型和变量名,因此描述必须补偿。描述中 'relative to the workspace root'、'Refuses absolute paths and parent-directory segments' 直接定义了 path 的语义和限制,价值明显。虽未进一步说明相对路径格式,但已足够指导调用。

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

描述以具体动词+资源开头:"Read a UTF-8 file relative to the workspace root",明确说明了读文件这一操作。它与 write_file 形成清晰对照,且通过 'UTF-8'、'workspace root'、'Size limit 1MB' 等限定让工具用途非常具体。

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

描述通过 'Read a UTF-8 file relative to the workspace root' 清晰表达了适用场景,即读取工作区根目录下的文本文件。虽然没有显式列出 alternatives 或排除条件,但结合 write_file 等兄弟工具,边界已经足够明确。

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record_terminalA

Record a bash script as a terminal demo.

This host does not start a recorder. If ffmpeg is missing, returns an error. If ffmpeg is present, returns the command you would run (Linux x11grab) and does not write a video file.

ParametersJSON Schema
NameRequiredDescriptionDefault
scriptYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full transparency burden. It clearly states that this host does not start a recorder, that missing ffmpeg causes an error, and that when ffmpeg is present it only returns a command and writes no video file. These non-obvious behavioral traits are fully disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with purpose, and then presents the key conditional behaviors in short, focused sentences. There is no filler or redundant repetition of the input schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with an output schema present, the description covers the main behaviors, side effects, and error condition. It does lack explicit sibling-comparison or usage recommendations, but the core call context is adequately specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the schema gives no description for script, so the description must compensate. The description adds that the parameter is a bash script, which is useful, but it does not specify whether script should be file content, a file path, or any formatting requirements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Record a bash script as a terminal demo.' It then clarifies the actual behavior, which is to return a command rather than record. It does not explicitly distinguish itself from siblings like run or write_file, but the unique purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when you need a recording command rather than an actual recording on this host. However, it never explicitly says 'use this instead of X' or names alternatives, so guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

runA

Run a command in the workspace root (not a shell).

Args: command: Program and arguments as a single string. Split with shlex on POSIX. timeout_seconds: Kill after this many seconds. Default 30, max 120.

Output is limited to 1MB each for stdout and stderr. A nonzero exit code returns ok=false.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYes
timeout_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden, and it delivers: shlex parsing, timeout kill behavior with default and max, 1MB stdout/stderr limits, and ok=false on nonzero exit. This goes well beyond the raw schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compact and front-loaded, with a short intro and clearly separated argument/behavior notes. Every sentence contributes execution semantics or limits, with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers execution environment, argument parsing, timeout, output truncation, and error signaling. Combined with the presence of an output schema, an agent has enough to call the tool correctly without further context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description fully documents both parameters: command as a single string split with shlex, and timeout_seconds with default and maximum. It adds real meaning beyond the property names and types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States exactly what it does: 'Run a command in the workspace root'. The parenthetical '(not a shell)' and the command/timeout arguments distinguish it from file-tool siblings, so an agent can select it correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context (workspace root, non-shell execution, command string format) so an agent knows when to use it. It does not explicitly name alternatives or exclusion conditions, so it stops short of a full when-to-use/when-not-to-use guide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

statusA

Report OS, hostname, cwd, Python version, and whether copilot, ffmpeg, and git are on PATH.

Does not return secrets, tokens, or a home-directory listing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing behavior. It clearly states what is returned and explicitly calls out what is not returned, addressing a key safety concern (no secrets/tokens). The verb 'Report' implies a read-only, side-effect-free operation, though it could have been stated explicitly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: the first front-loads the full report contents, the second adds a clear negative. Every word adds value, with no repetition or unrelated information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and an output schema, the description's enumeration of returned fields is sufficient for an agent to invoke it correctly. The explicit note about what is excluded adds important context. Minor omissions like error behavior or 'current snapshot' wording are not critical for a simple status tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is no parameter documentation burden. The description correctly omits parameter details, and the 100% schema coverage is trivially satisfied. Baseline 4 is appropriate for a no-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb 'Report' and lists exact data items (OS, hostname, cwd, Python version, tool PATH presence), making the tool's purpose unmistakable. It is clearly distinct from sibling tools like run or write_file without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly communicates when to use the tool: any time an agent needs environment context. It also provides a specific exclusion ('Does not return secrets, tokens, or a home-directory listing'), which prevents misuse. It does not explicitly compare to siblings, but that is unnecessary given the specialized scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write_fileA

Write a UTF-8 file relative to the workspace root.

Refuses absolute paths and parent-directory segments.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
contentYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It does disclose important constraints: UTF-8 encoding, relative paths only, and refusal of absolute paths and parent-directory segments. However, it does not specify overwrite behavior, whether directories are created, or failure/error semantics, which are relevant for a mutating file tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, each earning its place. The core operation is stated first, followed by essential constraints. There is no filler or redundant repetition of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parameter tool with an output schema, this description is largely complete: it identifies the operation, the path constraints, and the encoding. It could be more complete by mentioning overwrite semantics or directory creation, but the essential calling requirements are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaningful constraints for 'path': must be relative to workspace root and must not be absolute or contain parent-directory segments. It also implies 'content' should be text encoded as UTF-8. This exceeds minimal parameter documentation, although 'content' itself is not explicitly elaborated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Write'), a clear resource (a UTF-8 file), and a scope ('relative to the workspace root'). This clearly distinguishes it from sibling tools like read_file and run.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance about when to choose this tool over alternatives or when not to use it. It does not mention siblings or any decision criteria for selecting write_file instead of run, read_file, or record_terminal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 5 tool updatesv0.1.0
    • First observedread_file
    • First observedrecord_terminal
    • First observedrun
    • First observedstatus
    • First observedwrite_file

TDQS

A4.1/5.0
Disambiguation4/5

Each tool targets a distinctly different action: environment status, command execution, terminal recording, and file read/write. The only confusing tool is record_terminal, which despite its name does not actually record anything and instead returns a command to run.

Naming Consistency4/5

Most tools follow a clear verb_noun pattern: record_terminal, write_file, read_file, plus the imperative run. status is a minor outlier as a noun, but the overall naming scheme is predictable and readable.

Tool Count4/5

Five tools is a reasonable, well-scoped size for a machine and workspace automation server. However, record_terminal feels loosely connected to the rest of the set, so the count is appropriate but not perfectly cohesive.

Completeness4/5

Core workflows are covered: checking environment state, running commands, and reading/writing files are sufficient for many workspace tasks. Directory listing and deletion are missing as dedicated tools, but agents can work around these gaps using run.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Acts as the 'Hands and Eyes' for an Autonomous AI Agent, bridging Large Language Models and your local development environment to enable safe file manipulation, context reading, command execution, and documentation verification.
    2
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides local command execution, remote SSH, interactive terminals, file read/write, and source search for AI CLI through stdio, with large output pagination and safety confirmations.
    8
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to securely create, manage, and monitor local processes such as dev servers, docker-compose, and test watchers, including restarting, checking status, and retrieving logs via MCP, HTTP, or WebSocket messaging.
    585
    1
    MIT

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/AndreaGriffiths11/machine-mcp'

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