Atlas / MCP servers / jacck / Reasoner

ReasonerBLOCK

mcp/jacck/reasoner

A systematic reasoning MCP server implementation for Claude Desktop with beam search and thought evaluation.

Verdict
BLOCK
Grade
F
Trust score
47 /100
Exposed tools
1 1r · 0w · 0d
Transport
sse · stdio
License
MIT
Stars
277
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

A reasoning implementation for Claude Desktop that lets you use both Beam Search and Monte Carlo Tree Search (MCTS). tbh this started as a way to see if we could make Claude even better at complex problem-solving... turns out we definitely can.

Current Version:

v2.0.0

What's New:

Added 2 Experimental Reasoning Algorithms: - mcts-002-alpha - Uses the A Search Method along with an early alpha implementation of a Policy Simulation Layer - Also includes an early alpha implementation of Adaptive Exploration Simulator & Outcome Based Reasoning Simulator NOTE the implementation of these alpha simulators is not complete and is subject to change - `mcts-002alt-alpha` - Uses the Bidirectional Search Method along with an early alpha implementation of a Policy Simulation Layer - Also includes an early alpha implementation of Adaptive Exploration Simulator & Outcome Based Reasoning Simulator NOTE* the implementation of these alpha simulators is not complete and is subject to change

What happened to mcts-001-alpha and mcts-001alt-alpha?

Quite simply: It was useless and near similar to the base mcts method. After initial testing the results yielded in basic thought processes was near similar showing that simply adding policy simulation may not have an effect.

So why add Polciy Simulation Layer now?

Well i think its important to incorporate Policy AND Search in tandem as that is how most of the algorithms implement them.

Previous Versions:

v1.1.0

Added model control over search parameters: beamWidth - lets Claude adjust how many paths to track (1-10) numSimulations - fine-tune MCTS simulation count (1-150)

Features

  • Two search strategies that you can switch between:
  • Beam search (good for straightforward stuff)
  • MCTS (when stuff gets complex) with alpha variations (see above)
  • Tracks how good different reasoni
Read from source at commit d1e3696613e8OBSERVED · 2026-10-05
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code
claude mcp add mcp-reasoner -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "mcp-reasoner": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ]
    }
  }
}
03

Exposed tools (1)

1 read · 0 write · 0 destructive.

ToolRiskDescription
mcp-reasonerreadAdvanced reasoning tool with multiple strategies including Beam Search and Monte Carlo Tree Search
04

Trust audit

BLOCKgrade F · trust 47/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (5 observation(s))
Shell
declared (9 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (25)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
node_modules/depd/index.js:425
var deprecatedfn = new Function('fn', 'log', 'deprecate', 'message', 'site',
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
node_modules/depd/index.js:427
'return function (' + args + ') {' +
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
node_modules/function-bind/implementation.js:74
bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
node_modules/shelljs/src/common.js:334
if (options.unix === false) { // this branch is for exec()
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHSupply chain · supply.typosquat · CWE-829, CWE-1357
node_modules/iconv-lite/package.json
request ~ requests
Why it matters. dependency name one edit from a popular package
Fix. verify the package; likely typosquat
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
node_modules/@types/node/url.d.ts:543
* console.log(myURL.password);
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
node_modules/iconv-lite/encodings/sbcs-data-generated.js:100
"chars": "€پ‚ƒ„...†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—کTMڑ›œں ،¢£¤¥¦§ ̈©ھ«¬® ̄°±23 ́μ¶· ̧1؛»1⁄41⁄23⁄4؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûüے"
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
node_modules/iconv-lite/encodings/sbcs-data-generated.js:373
"chars": "«»...“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาําิีึืฺุู–—฿เแโใไๅๆ็่้๊๋์ํTM๏๐๑๒๓๔๕๖๗๘๙®©����"
LOWInventory / provenance · inv.hidden_file · CWE-1104
node_modules/.package-lock.json
.package-lock.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
node_modules/concat-map/.travis.yml
.travis.yml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
node_modules/function-bind/.nycrc
.nycrc
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
node_modules/hasown/.nycrc
.nycrc
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
node_modules/is-core-module/.nycrc
.nycrc
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
node_modules/resolve/test/list-exports/packages/tests/index.js:189
await Function('fixtureSpec', 'return import(fixtureSpec)')(fixtureSpec); // eslint-disable-line no-new-func
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
node_modules/resolve/test/list-exports/packages/tests/fixtures/resolve-2/project/test/resolver/without_basedir/main.js:1
var resolve = require('../../../');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
node_modules/resolve/test/list-exports/packages/tests/index.js:184
const fullFilename = fs.realpathSync(path.join(__dirname, `../../node_modules/@fixtures/${file.replace(/^\./, resultsNative.name)}`));
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js:9
var expected = path.join(__dirname, '../../node_modules/jquery/dist/jquery.js');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js:19
assert.equal(resolve.sync('../../node_modules/jquery', { basedir: basedir, preserveSymlinks: false }), expected);
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js:33
assert.equal(resolve.sync('../../../../../node_modules/jquery', { basedir: basedir, preserveSymlinks: true }), expected);
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
node_modules/@types/node/buffer.d.ts:1897
function atob(data: string): string;
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
node_modules/typescript/lib/lib.webworker.d.ts:8713
atob(data: string): string;
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
node_modules/typescript/lib/lib.webworker.d.ts:9525
declare function atob(data: string): string;
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
node_modules/zod/lib/index.mjs:1006
const decoded = JSON.parse(atob(base64));
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
node_modules/zod/lib/index.umd.js:1012
const decoded = JSON.parse(atob(base64));
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
node_modules/@modelcontextprotocol/sdk/package.json
content-type, raw-body, zod, @eslint/js, @types/content-type, @types/eslint__js, @types/eventsource, @types/express
Why it matters. 20 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-10-05 · audit v0.4.1 · source sha d1e3696613e8full audit observations/trust-audit/mcp-server/jacck__reasoner.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-05d1e3696613e8BLOCKF47first audit
06

Questions

What is the Reasoner MCP server?

A systematic reasoning MCP server implementation for Claude Desktop with beam search and thought evaluation.

What tools does Reasoner expose?

1 in total: 1 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is Reasoner safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (47/100) and found 5 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does Reasoner need?

No credential environment variables were found in its source, so it appears to need none.

How does Reasoner run?

It speaks sse and stdio, so it runs as a local process your client starts. It is published on npm as mcp-reasoner at 2.0.0.

How current is this page?

The grade is for one exact copy of the source (d1e3696613e8), read on 2026-10-05. The repository is watched and re-audited when it changes.

Advertisement