{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_t7b3fvrfxa6m","handle":"firmata-client-mcp","url":"https://wellknown.network/agents/firmata-client-mcp","links":{"self":"https://wellknown.network/agents/firmata-client-mcp/record.json","html":"https://wellknown.network/agents/firmata-client-mcp","markdown":"https://wellknown.network/agents/firmata-client-mcp/record.md","api":"https://wellknown.network/api/v1/agents/firmata-client-mcp","status":"https://wellknown.network/api/v1/agents/firmata-client-mcp/status","claim":"https://wellknown.network/agents/firmata-client-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/firmata-client-mcp/claim.json","badge":"https://wellknown.network/agents/firmata-client-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/firmata-client-mcp/history","tools":"https://wellknown.network/api/v1/agents/firmata-client-mcp/tools"},"ard":{"identifier":"urn:air::server:firmata-client-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"firmata-client-mcp","summary":"MCP server for controlling Arduino GPIO over Firmata (StandardFirmata).","description":"# firmata-client-mcp\n\nAn [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that lets an LLM\ncontrol an Arduino's GPIO over the [Firmata](https://github.com/firmata/protocol) protocol.\n\nBuilt on the [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) and the\n[`firmata-client`](https://pypi.org/project/firmata-client/) library. It exposes digital/analog\nI/O, PWM, and basic servo control as MCP tools so an agent can read sensors and drive actuators\non a connected board.\n\n> ⚠️ **This server lets an AI agent drive physical hardware.** Please read the\n> [Safety](#safety) section before connecting a board.\n\n---\n\n## Features\n\n- Discover serial ports and connect to a board running **StandardFirmata**\n- Query board capabilities (firmware, pin modes, analog mapping)\n- Digital read / write\n- Analog (ADC) read with sample averaging\n- PWM (analog) write\n- Servo control with a settable \"origin\" reference point\n- Structured JSON responses and actionable error messages\n\n## Requirements\n\n- Python **3.13+** (required by the `firmata-client` dependency)\n- An Arduino (or compatible board) flashed with **StandardFirmata**\n  (`File → Examples → Firmata → StandardFirmata` in the Arduino IDE)\n- Python dependencies:\n  - `mcp[cli]` **2.x** (v0.2.0 and later; use `firmata-client-mcp` 0.1.x if you are pinned to `mcp` 1.x)\n  - `firmata-client`\n  - `pyserial` (installed with `firmata-client`)\n  - `pydantic` (installed with `mcp`)\n\n## Installation\n\nUsing `uv` (recommended):\n\n```bash\nuv pip install firmata-client-mcp\n```\n\nOr via `pip`:\n\n```bash\npip install firmata-client-mcp\n```\n\nOr from source:\n\n```bash\ngit clone https://github.com/NaoNaoMe/firmata-client-mcp.git\ncd firmata-client-mcp\nuv sync\n```\n\n## Configuration\n\n### Claude Desktop Config\n\nAdd the server to your `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"firmata-client-mcp\": {\n      \"command\": \"uvx\",\n      \"args\": [\n        \"firmata-client-mcp\"\n      ]\n    }\n  }\n}\n```\n\nA typical first i…","publisher":{"name":"Naoya Imai","url":null},"homepage":"https://github.com/NaoNaoMe/firmata-client-mcp","repository":"https://github.com/NaoNaoMe/firmata-client-mcp","version":"0.2.0","license":null,"protocols":["mcp"],"tags":["arduino","firmata","gpio","llm","mcp"],"pricing":null,"endpoints":[{"url":"pypi:firmata-client-mcp","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi","publisherName":"pypi"}},"derived":{"capabilities":[{"slug":"dev.package-management","name":"Packages & Dependencies","confidence":0.825,"provenance":"derived"},{"slug":"dev.version-control","name":"Version Control","confidence":0.745,"provenance":"derived"}],"categories":["dev"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"firmata-client-mcp","registry":"pypi","observedAt":"2026-11-09T05:24:37.419Z","publishedAt":"2026-08-16T22:36:10.755184Z","latestVersion":"0.2.0"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"firmata-client-mcp","url":"https://pypi.org/project/firmata-client-mcp/","firstSeenAt":"2026-09-09T15:23:05.378Z","fetchedAt":"2026-11-09T05:23:07.038Z","normalizedAt":"2026-11-09T05:23:07.038Z"}]},"firstSeenAt":"2026-09-09T15:23:05.378Z","updatedAt":"2026-11-09T05:24:37.419Z"}