← Back to all sparks
M

mcptools

ANALYTICS
Velocity2.5

Model Context Protocol Servers and Clients

R became a deployable MCP server, not just a local one.

mcpllm-toolingr-packagepositdeveloper-tools
Current state
mcptools lets R act as an MCP server exposing tools to LLM clients, and lets those clients reach into running R sessions. It reached 1.0.0 in mid-2026 after a rename from acquaint and a reversal of its dependency relationship with btw. The trajectory of its releases tracks the MCP specification closely — transport options, protocol version negotiation, and content types have each arrived as the spec settled them.
Where it's heading
The package has moved outward along two axes: transport, from stdio to HTTP to a hosted Posit Connect engine, and content, from text-only tool results to inline images and structured JSON. The most recent release turns to the problems that only appear once something is deployed — choosing the right R session among several, and isolating IPC per user. That shift from capability to multi-user correctness is what a package looks like after it starts being run somewhere other than a developer's laptop.
Prediction
Expect authentication to be addressed on the HTTP transport, which the notes explicitly flag as authless, and continued tracking of MCP protocol revisions as they are published.

Recent moves

  1. 20d ago

    Session selection at tool-call time and per-user IPC

    The server now picks its R session when a tool is called rather than binding to the first one, preferring the session whose working directory matches its own — which is how Claude Code and Posit Assistant launch it — and falling back sensibly when nothing matches. Sessions also move to per-user filesystem IPC. These are the concerns of software being run by more than one person at once, which is the natural consequence of the deployment capability added in the previous release.

    View source ↗
  2. 1mo ago

    mcptools runs as a Posit Connect R API engine

    ⚡ SPARK

    The release that moves R MCP servers off the developer's machine: a _server.yml declaring the mcptools engine and a file of ellmer tools is enough to deploy one to Posit Connect. Inline image content and structuredContent responses land alongside, closing most of the gap with what the MCP spec allows a server to return. Everything in the following release — session selection, per-user IPC — follows from this one being used.

    View source ↗
  3. 5mo ago

    Protocol version negotiation and schema conformance fixes

    The server negotiates protocol versions with clients across the 2024-11-05 to 2025-11-25 range, and inputSchema always carries a properties field even for tools taking no arguments. Both are conformance items, but negotiation is what lets one server serve clients pinned to different spec revisions. Contributed externally, as several of the protocol-level fixes here have been.

    View source ↗
  4. 9mo ago

    HTTP transport added alongside stdio

    Adds an HTTP transport with optional host and port, so the server is reachable over a network rather than only as a subprocess — though the implementation is explicitly authless for now, which bounds where it can responsibly be used. Tool results are also formatted the same way ellmer formats them, and session tools can be opted out of. The first step of the outward movement that the Connect engine later completed.

    View source ↗
  5. 11mo ago

    Test fix for an r-devel Fedora clang platform

    Addresses a test failure on one CRAN check platform. Routine packaging maintenance with no user-facing effect.

    View source ↗
  6. 1y ago

    First CRAN release, renamed from acquaint with btw dependency reversed

    The initial CRAN submission, arriving with a rename from acquaint and a reversal of the dependency direction against btw, which had previously supplied the default tool set. Users of the old entry points are pointed at btw equivalents. Worth noting as the moment MCP support in R separated from any particular tool collection and became a standalone concern.

    View source ↗