flowR

io.github.flowr-analysisPublished by GitHub account flowr-analysisv0.1.3Updated Oct 29, 2026

Static dataflow analysis, program slicing, linting, and dependency extraction for R code.

VerifiedSTDIODesktop onlyDeveloper ToolsData & Analytics

Overview

AI-generated overview

flowR exposes one query tool that lets an assistant statically analyze R code — slicing, linting, dependencies and signature search — without running it.

What you can do
  • Analyze R code statically: program slicing to find the code affecting a variable, lint findings, and dependency extraction
  • Search R package signatures and guess package versions from the signature database
  • Run any other query of the flowR Query API through the same single query tool
When to use it
Useful when an assistant works with R source code and needs to understand dataflow, find what affects a value, lint a script, list dependencies, or look up package signatures — without an R installation or executing the code.
Requirements
Runs locally over stdio via the npm package @eagleoutice/flowr-mcp (npx), so Node.js is needed; no R installation required. On first start it downloads flowR's signature database (about 66 MB) into ~/.cache/flowr and verifies its hash. Remote clients need the server started over HTTP behind HTTPS, optionally with PORT, HOST and FLOWR_MCP_PATH set.
Before you install
The server never runs the analyzed code, but the linter's checkUrls option can make it contact URLs found in the code. Over HTTP it treats code as untrusted and restricts file access, network, processes and R, but a secret path (FLOWR_MCP_PATH) is the only access control remote clients support, so a rate limit is advised for public instances. The first start downloads a database from flowR releases.

Installation

In SourceWeft

  1. Open flowR 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

flowR MCP Server

A Model Context Protocol server with a single query tool that lets LLM clients analyze R code with flowR: slicing, linting, dependencies, version guessing, signature database search, and every other query of the Query API. No R installation is needed.

On its first start, the server downloads flowR's signature database (about 66 MB) from the flowR releases into ~/.cache/flowr and checks its hash. Version guessing and signature search need this database. Everything else also works offline. The server never runs the analyzed code. It contacts no other server, unless a query asks the linter to check the URLs in the code (checkUrls, which is never allowed over HTTP).

In Claude Code, one plugin installs both this server and the flowR skill:

text
/plugin install flowr --marketplace flowr-analysis/flowr

Other local clients start it over stdio:

shell
claude mcp add flowr -- npx -y --omit=optional --ignore-scripts @eagleoutice/flowr-mcp      # Claude Codecodex mcp add flowr -- npx -y --omit=optional --ignore-scripts @eagleoutice/flowr-mcp       # OpenAI Codexgemini mcp add flowr npx -y --omit=optional --ignore-scripts @eagleoutice/flowr-mcp         # Gemini CLI

or, configured by JSON (Claude Desktop, Cursor, VS Code, ...):

json
{ "mcpServers": { "flowr": { "command": "npx", "args": ["-y", "--omit=optional", "--ignore-scripts", "@eagleoutice/flowr-mcp"] } } }

The flags keep the install small. They skip the optional dependencies flowR does not need here, and they run no install scripts. The package's npm-shrinkwrap.json pins every dependency.

Remote clients (ChatGPT, claude.ai, ...) need the server running over HTTP behind HTTPS:

shell
npx -y --omit=optional --ignore-scripts @eagleoutice/flowr-mcp --http 1042cloudflared tunnel --url http://localhost:1042

Then add https://<host>/mcp as a connector (in ChatGPT, this needs developer mode). Without a port, the server uses $PORT or 1042. It listens on 127.0.0.1 unless HOST says otherwise, for example HOST=0.0.0.0 in a container. Setting FLOWR_MCP_PATH=/mcp/<random> replaces /mcp with a secret path. A secret path is the only access control that every remote client supports.

Over HTTP, the server treats the code as untrusted:

  • It never reads its own files: there is no files argument, source() is ignored, and the config query is refused.
  • It runs in flowR's secure mode, without network access, processes, or R.
  • It keeps stack traces to itself.
  • It refuses requests from browser pages and requests over 1 MB.
  • It runs one analysis at a time, with at most 16 waiting, and stops each after 30 seconds or 2 GB of memory.
  • It cuts answers at 50000 characters.

Put a rate limit in front of a public instance.

SKILL.md is an agent skill (Claude, Codex, Gemini CLI, ...) that says when and how to use flowR, with or without this server. To use it, copy it to, for example, ~/.claude/skills/flowr/SKILL.md.

Source: mcp/README.md at commit e2b2464

Tools

1

query

Statically analyze R code and search R package signatures with flowR queries (https://github.com/flowr-analysis/flowr/wiki/Query-API). Common ones: {"type":"static-slice","criteria":["12@x"]} for the code affecting x in line 12, {"type":"linter"} for lint findings, {"type":"dependencies"} for loaded libraries, read and written files, {"type":"guess-dep-versions"} for the package versions the code works with, {"type":"call-context","callName":"^read_"} for calls, and, needing no code, {"type":"signature","package":"dplyr","function":"across"} to search signatures and versions (globs allowed), {"type":"function-info","name":"filter"} for the packages exporting a function. A query with wrong arguments is answered with its schema. Types: call-context (Call-Context Query), config (Config Query), control-flow (Control-Flow Query), call-graph (Call-Graph Query), dataflow (Dataflow Query), does-call (Does-Call Query), dataflow-lens (Dataflow Lens Query), absint (Abstract Interpretation Query), files (Files Query), id-map (Id-Map Query), normalized-ast (Normalized AST Query), dataflow-cluster (Dataflow Cluster Query), static-slice (Static Slice Query), provenance (Provenance Query), input-sources (Input Sources Query), dependencies (Dependencies Query), location-map (Location Map Query), search (Search Query), happens-before (Happens-Before Query), inspect-exception (Inspect Exceptions of Functions Query), inspect-higher-order (Inspect Higher-Order Functions Query), inspect-recursion (Inspect Recursive Functions Query), inspect-fn-props (Inspect Argument Roles Query), resolve-value (Resolve Value Query), project (Project Query), signature (Signature Query), origin (Origin Query), linter (Linter Query), dice (Dice Query), guess-dep-versions (Guess Dependency Versions Query), function-info (Function Info Query)

Parameterscodefilesqueriesrequired

Version history

2
  1. v0.1.3LatestOct 22, 2026
  2. v0.1.0Oct 20, 2026

Score

90% 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
  • 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 listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts