Plane (Rust)

io.github.ninerfPublished by GitHub account ninerfv0.1.1Updated Nov 4, 2026

Fast single-binary server for Plane project management. Unofficial Rust port, 30 tools.

The publisher's own server: rust.wiki

Overview

AI-generated overview

Unofficial single-binary MCP server that lets an assistant read and write Plane project management data: work items, comments, cycles, modules, pages and more.

What you can do
  • Work items: create, list, retrieve and update items, plus comments, activity, links, relations, attachments, types and properties
  • Planning: projects, estimates, states, labels, members, modules, cycles, milestones, initiatives and intake
  • Content and customers: pages, collections, templates, customers, customer properties and customer requests
  • Releases and time: releases, release labels, release tags and work logs
  • Reference: look up Plane query language (PQL) syntax
  • Legacy tool names from the upstream Python server still work as aliases
When to use it
Useful when a team tracks work in Plane and wants an assistant to look up, summarize or update work items, comments, cycles and pages directly from the editor instead of switching to the web UI.
Requirements
Runs as a local binary on the user's machine (download from Releases, install the .mcpb bundle, or build with Rust); no Python runtime needed. Requires a Plane API key in PLANE_API_KEY and a workspace slug in PLANE_WORKSPACE_SLUG; PLANE_BASE_URL is optional for self-hosted instances. Network access to the Plane API is required.
Before you install
The API key grants access to the workspace and is passed in plain environment variables. The server can write, comment on, link and attach data in Plane, and some write actions are not end-to-end tested. The optional shared HTTP mode binds to localhost with no authentication of its own, so the port must not be exposed. Unofficial community project, not affiliated with Plane.

Installation

In SourceWeft

  1. Open Plane (Rust) in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

plane-mcp-rs

A fast, single-binary Model Context Protocol (MCP) server for Plane project management. It lets AI agents such as Claude, Cursor and Codex work with Plane work items, comments, cycles, modules, pages and more.

It is a Rust port of the MIT-licensed Python plane-mcp-server: the same 30 tools and tool schemas, about 16x less memory, no Python runtime.

Unofficial. A community project, not affiliated with or endorsed by Plane.

MCP Registry name: mcp-name: io.github.ninerf/plane-mcp-rs

Install

Download a binary from Releases and put it on your PATH. Clients that support MCP bundles can install plane-mcp-rs.mcpb from the same page. Or build it with Rust:

bash
cargo install --git https://github.com/ninerf/plane-mcp-rs

Configure

VariableRequiredMeaning
PLANE_API_KEYyesPlane API key (Profile → Personal Access Tokens)
PLANE_WORKSPACE_SLUGyesWorkspace slug from your Plane URL
PLANE_BASE_URLnoSelf-hosted URL; defaults to https://api.plane.so

Claude Code

bash
claude mcp add plane -e PLANE_API_KEY=your-key -e PLANE_WORKSPACE_SLUG=your-slug -- plane-mcp-rs --stdio

Cursor, Claude Desktop and other JSON-configured clients

json
{  "mcpServers": {    "plane": {      "command": "plane-mcp-rs",      "args": ["--stdio"],      "env": { "PLANE_API_KEY": "your-key", "PLANE_WORKSPACE_SLUG": "your-slug" }    }  }}

Shared HTTP server

One process can serve every agent on a machine. It binds to 127.0.0.1 only and has no authentication of its own, so don't expose the port.

bash
plane-mcp-rs --port 8096

The endpoint is http://127.0.0.1:8096/servers/plane/mcp.

Tools

workitem, workitem_comment, workitem_activity, workitem_link, workitem_relation, workitem_attachment, workitem_type, workitem_property, work_log, project, project_estimate, state, label, member, workspace, module, cycle, milestone, intake, page, collection, template, initiative, customer, customer_property, customer_request, release, release_label, release_tag, get_pql_reference.

The upstream server's retired tool names (169 aliases such as create_work_item) still work.

Differences from the Python server

  • workitem list leaves out descriptions unless you pass fields, which roughly halves its output. Use retrieve for the full item.
  • Results are sent once as text, with no duplicate structuredContent copy.
  • Plane's raw response is passed through, so null placeholder fields the Python models add are absent.
  • Empty lists come back as [].
  • upload_from_url checks every resolved address and every redirect against private networks.
  • API-key login only: no OAuth or hosted mode.

Performance

Measured on one Windows 11 workstation against one self-hosted Plane instance, with plane-mcp-server 0.3.3 already tuned for a fair comparison (one server process, no mcp-proxy, payload logging off, the same lean workitem list). A stock install uses more. Your numbers will differ.

RustPython
Memory, idle (working set)7.6 MB127.9 MB17x less
Memory, after load12.8 MB135.8 MB11x less
Cold start to listening¹about 0.5 sabout 7.2 s14x faster
Local tool call, p501.09 ms16.82 ms15x faster
tools/list, p502.78 ms8.9 ms3x faster
workitem list (20 items), p50²about 686 msabout 728 msabout the same
workitem list (20 items), response8.6 KB16.5 KB48% smaller
Install size1.7 MB, 1 file109.8 MB, 8,769 files
Tool schemas sent to the client66.5 KB66.5 KBidentical

¹ Includes the measuring loop's own overhead, so the Rust figure is an upper bound. ² Most of this is Plane itself, so Rust can't speed it up much. Measured with paced calls; the pacing delay is subtracted.

Rust doesn't reduce the tool schema cost, because the schemas are deliberately identical. Reproduce the latency and size numbers with bench/bench.py.

Compatibility and test status

Tested against self-hosted Plane 1.4.2:

  • Read and validation: 77 calls across all 30 tools compared with the Python server, with no behaviour differences beyond those listed above. This covers each tool, not every action.
  • Writes, end to end: work items, comments including mentions, links, attachments, labels and states.
  • Same 404 from both servers on this Plane version: work item relations and archive. Your edition may differ.
  • Not exercised end to end: write actions for other tools, including customers, releases, initiatives, pages, cycles, modules, templates and work logs. They follow the upstream SDK's routes. Please open an issue if one fails.

Linux and macOS builds are compiled and unit-tested in CI. The end-to-end testing above ran on Windows only.

Credits

Tool schemas, descriptions and PQL reference text come from plane-mcp-server (MIT). See LICENSE.

Source: README.md at commit e146cad

Tools

0
SourceWeft started this package once in an isolated sandbox, without credentials, to list its tools. That failed: the package type cannot run in the sandbox.

Version history

1
  1. v0.1.1LatestNov 4, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Rust integrations