machine-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@machine-mcpRungit statusin the workspace and summarize the changes."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-mcpstdio servers block on stdin. The client starts the process and owns the pipes.
Smoke test (prints status JSON, exits 0):
machine-mcp --checkOn 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_WORKSPACEfile-tool root. Default:~/machine-mcp-workspace(created on start).MACHINE_MCP_TOKENbearer token for a future HTTP listener. Generated if unset.
Tools
Tool | What it does |
| OS, hostname, cwd, Python version, whether |
|
|
| Honest stub that never writes a video file. On Linux with |
| Write a path relative to the workspace. Refuses |
| 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 toolsread_fileA
Read a UTF-8 file relative to the workspace root. Size limit 1MB.
Refuses absolute paths and parent-directory segments.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| content | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
5 tool updates
v0.1.0- First observed
read_file - First observed
record_terminal - First observed
run - First observed
status - First observed
write_file
TDQS
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.
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.
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.
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
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
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Develop, manage, and debug Railway projects, services, and deployments from within agents.
Read a project's prompts, logs and agents, and send new work to the agent on your own machines.
Hosted runtime for persistent agent teams, durable workflows, memory, schedules, and goals.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceActs 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-
- AlicenseNot gradedqualityBmaintenanceProvides 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.81Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables registering custom agent tools via a minimal JSON-RPC over stdio implementation, with zero external dependencies, to expose them to AI agents like Claude, Cursor, and Gemini.MIT
- AlicenseNot gradedqualityBmaintenanceEnables 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.5851MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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