About handwork
handwork is an MCP server that connects agents to a human service desk for physical-world tasks such as making, measuring, assembling, testing, or shipping. It lists services, requests quotes, and checks request status; requesting a quote does not place an order or authorize payment.
Key features
- 01List available human services
- 02Request a fixed-price quote
- 03Check quote request status
- 04Forward calls to a remote service desk
Use cases
- 01Find out whether a physical task is supported
- 02Submit task details for a human-reviewed quote
- 03Check the status of a previous request
- 04Connect an agent to physical-world work
MCP support
Provides service catalog, quote request, and status tools to MCP clients. It forwards tool calls to the remote handwork endpoint and passes responses through.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
3Saved tool list · updated 1w ago
This tool takes no parameters.
Details
From the project READMEhandwork
Some jobs need a person in the physical world: something made, measured, assembled, tested, or shipped. handwork is a small MCP server that connects an agent to a human service desk that takes on exactly that kind of work. It exposes three tools — a service catalogue, a quote request, and a status lookup — and forwards each call to the desk's public remote endpoint, returning the answer unchanged.
Asking for a quote is not placing an order. Nothing is charged and nothing is made until a quote comes back by e-mail and is accepted there; the tools themselves carry no ordering or payment capability.
Tools
list_services— what the service will and will not do, the categories it refuses, example prices, how payment works, and the key contract terms. Takes no arguments and needs no authentication.request_quote— describe a physical-world task (what is to be done, which services it needs, deliverables, deadline, delivery address, input files, currency) along with the client's invoice details, and a human screens it and replies with a fixed-price quote by e-mail within 24 hours. The reply carries aquote_idand anaccess_token; keep the token, it is the only way to read the request back. No field at the top level is required, but the nestedtaskobject requires adescriptionand the nestedclientobject requiresemailandname.get_status— the state of an earlier quote request. Bothid(thequote_id) andaccess_tokenare required. Records are kept for 90 days, and the quote itself arrives by e-mail.
How it works
handwork is a forwarding client, not a reimplementation. It
serves tools/list itself, from the tool definitions the remote
publishes, and for every tools/call it opens a streamable-HTTP
JSON-RPC session with the upstream — initialize, then
notifications/initialized, then the call, carrying the
Mcp-Session-Id header whenever the upstream issues one — and
passes the upstream result through verbatim. If the upstream
cannot be reached or answers with an error, the call fails with
a handwork error: message instead of a fabricated result.
The upstream endpoint defaults to https://handsforagents.com/mcp.
Setting the HANDS_MCP_URL environment variable points the
client at a different endpoint (a reconstruction affordance; the
published service itself names no override).
Run it
As an MCP server over stdio:
npx -y @reneturcios/handwork mcp
MCP client configuration:
{
"mcpServers": {
"handwork": {
"command": "npx",
"args": ["-y", "@reneturcios/handwork", "mcp"]
}
}
}
In a container (the default command is mcp):
docker run -i ghcr.io/cloudcorprecords/handwork
docker run --rm ghcr.io/cloudcorprecords/handwork --version
CLI
handwork mcp # serve the tools over stdio
handwork --version # print the version
Any other subcommand prints usage and exits with code 2.
Development
npm install
npm run build # tsc -> dist/
npm test # node test runner via tsx; stubbed upstream, no network
npm run dev # run the CLI from source
The tests drive the forwarding core against a fake JSON-RPC
upstream injected in place of fetch, covering the handshake
order, session handling, verbatim pass-through, event-stream
responses, error surfacing, and a check that the served
tools/list matches the captured upstream surface exactly.
License
MIT — see LICENSE.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.