Claudexor
Routes coding tasks to Claude Code, Codex, Cursor, OpenCode, Antigravity or Grok Build and tracks quota
Runs code from an AI assistant inside your live R or Python session in RStudio or Positron
By I M NV (individual) Python Local · stdio Data and analyticsDeveloper tools
57 popularity score ★ 365 ↓ 5.8k/mo
Opens the app, which asks before it adds the server.
claude mcp add clauder -- uvx clauder-mcp{
"mcpServers": {
"clauder": {
"command": "uvx",
"args": [
"clauder-mcp"
]
}
}
}{
"mcpServers": {
"clauder": {
"command": "uvx",
"args": [
"clauder-mcp"
]
}
}
}{
"servers": {
"clauder": {
"type": "stdio",
"command": "uvx",
"args": [
"clauder-mcp"
]
}
}
}[mcp_servers.clauder]
command = "uvx"
args = ["clauder-mcp"]gemini mcp add --scope user clauder uvx -- clauder-mcpCLAUDER_AGENT_ID |
Optional: Name this bridge logs its code under when several agents share a session; same as --agent-id. |
|---|
ClaudeR links an MCP client to an R session that is already open in RStudio or Positron. It has two parts. The ClaudeR R package adds an add-in that starts a small HTTP listener inside the session, and the clauder-mcp Python package is the stdio bridge your client launches. The assistant can then run R where your data frames and fitted models already sit, get plots back as images, read and edit the open editor buffer, and run long jobs in a background R process. A companion Python package (clauder) does the same for a live Python session, without the editor, checkpoint and audit tools.
Around that core it carries tools for academic work: checking a manuscript's numbers against the outputs your code produced, verifying references against CrossRef and arXiv, finding citations in OpenAlex, fetching BibTeX, building codebooks and Quarto lab notebooks, and summarising systematic-review screening. Several agents can share one session and message each other through a shared log, and the environment can be checkpointed and rolled back.
The bridge registers 41 tools in server.py. Since 0.16.2, get_async_result holds the call open until the background job ends, checking every 2 to 10 seconds, and gives up after wait_s seconds (300 by default, never more than 1800). The add-in can hide groups of tools per session. With a Python session connected, the bridge refuses 27 tools that post R code, read_file among them.
run_annotation_job starts a fresh claude, codex, agy or qwen process for each row of a dataset, or calls a local Ollama server. Gemini CLI was dropped after Google shut it down in June 2026, and asking for "gemini" now returns an error pointing to agy. Claude calls start in an empty folder with no tools loaded. By default each call sees one row. batch_size raises that to 200, which is cheaper but lets rows in one call sway each other. With no_api_key set, the Anthropic and OpenAI key variables are stripped so the CLI uses your subscription login.
| Runtime | Python 3.10+ |
|---|---|
| Runs on | macOS, Windows, Linux |
| Also |
|
R with the ClaudeR package installed from GitHub (devtools::install_github("IMNMV/ClaudeR")), RStudio or Positron, and the add-in started with claudeAddin() and Start Server before the client connects. uv for the uvx command, or Python 3.10+ for the pip install. run_annotation_job needs the chosen CLI (claude, codex, agy or qwen) on PATH, or a running Ollama server.
Does nothing until the R add-in (or clauder.start() in Python) is running. A Python session gets code execution, plots, logging and coordination only; editor, suggest_edit, checkpoint and audit tools are R only. Each R session takes one Claude Desktop or Cursor app at a time. Async jobs run in a separate callr process with no access to the main session's objects. The default port is 8787, which clashes with RStudio Server's own port. The code blocklist is a regex the docs call trivially bypassable. Changing the R version means re-running install_clauder() or install_cli().
Suits researchers and analysts who work in RStudio or Positron and want an assistant to act on the objects already loaded in their session, or to audit a manuscript against the code behind it. It runs entirely on your machine and needs no account. It is a poor fit if you want an assistant that cannot run arbitrary code with your own permissions, or if you do not use R or a live Python session: the bridge is useless without the add-in running.
19 only read, 20 change things, 2 can delete or overwrite. A ? marks an optional parameter.
execute_r changescode: stringexecute_r_with_plot changescode: stringget_r_infowhat: stringget_active_documentpath?: stringmodify_code_section deletessearch_pattern: stringreplacement: stringline_start?: numberline_end?: numberpath?: stringsave?: booleaninsert_text changestext: stringline?: numbercolumn?: numberpath?: stringsave?: booleansuggest_edit changessearch_pattern: stringreplacement: stringpath?: stringcreate_task_list changestasks: arrayupdate_task_status changestask_id: stringstatus: stringnotes?: stringclean_error_log changeslog_path: stringoutput_path?: stringexecute_r_async changescode: stringinputs?: arrayoutputs?: arrayget_async_resultjob_id: stringwait_s?: numbercancel_async_job changesjob_id: stringlist_sessionsconnect_session changessession_name: stringread_filefile_path: stringstart_line?: numberend_line?: numbersearch_project_codepattern: stringfile_extensions?: stringroot_dir?: stringmax_results?: numberignore_case?: booleanprobe_scriptsscript_paths: arraytimeout?: numbercapture_output?: booleanverify_referencesfile?: stringtext?: stringstart_line?: integerend_line?: integerget_viewer_contentmax_length?: numberoffset?: numberget_session_historyagent_filter?: stringlast_n?: numberinclude_past?: booleanrun_annotation_job changescsv_path: stringtool?: stringmodel?: stringtimeout?: numberreasoning_effort?: stringollama_base_url?: stringbatch_size?: integerno_api_key?: booleanget_annotation_job_statusjob_id: stringcancel_annotation_job changesjob_id: stringload_annotation_data changescsv_path: stringannotate changesannotations: objectcheckpoint_session changeslabel?: stringrestore_session deletescheckpoint?: stringlist_checkpointsscreening_report changespass_a: stringpass_b?: stringinclude_field?: stringreason_field?: stringset_agent_name changesname: stringforce?: booleansend_message changesbody: anyto?: stringtype?: stringreply_to?: numberas_agent?: stringcheck_messagesack?: booleanas_agent?: stringwait_for_messagetimeout_s?: numberfrom_agent?: stringtype?: stringas_agent?: stringcoordination_rosterstale_after_s?: numberhide_after_s?: numbercheck_cross_referencesdocument: stringreconcile_valuesdocument: stringsources: arrayignore_years?: booleangenerate_codebook changesproject_dir?: stringdata_files?: arrayoutput_path?: stringgenerate_notebook changeslog_path?: stringoutput_path?: stringtitle?: stringsearch_citationsquery: stringmax_results?: numberget_bibtexdoi: string