Prototype · Preview: every server in the official registry, synced every 30 minutes. Sign in with Google to write reviews.Prototype · updated every 30 min
PopNx MCPMCP servers for people who use AI · explained in plain words

Honestcode

by Fengrruversion 0.5.1i★ 0iRuns on your computer
Registry nameio.github.Fengrru/honestcode

How to install

What it does

Deterministic verification for AI coding agents: catches invented APIs and wrong calls.

  • Connects Runs on your computer
  • Account or key No key needed
  • Category Developer tools

Install

Pick the AI app you use, then copy the settings.

Passed 3/3 checks · Runs on your computer · ✓ Commands checked Nov 13, 2026

First: which AI do you use?

Pick your app and the steps appear below.

Works with Claude, with some setup first

Install Python (uv) on your computer first (one time) · Only the Claude desktop app (Windows or Mac), not the web or phone

Let AI install it

Copy this message into a Claude chat. The AI checks your computer, tells you which file it will change, and waits for your OK every time.

Please install the MCP server Honestcode for Claude on this computer, in this order: 1) Check uv with uv --version. If it is missing, tell me to install it from https://docs.astral.sh/uv/getting-started/installation/; do not install it yourself. 2) Use only this config (already checked by PopNx MCP): { "mcpServers": { "honestcode": { "command": "uvx", "args": [ "honestcode" ] } } } 3) Tell me the full path of the file you will change, or the command you will run, and wait for my OK. 4) No key is needed. 5) Do what we agreed, then check that the Honestcode tools really show up.

This message has no key in it. If a key is needed, the AI will ask you to paste it yourself into the file or the app’s field.

  1. Install uv (if you don’t have it)

    Already installed? Check first · Open Terminal, type this command and press Enter

    uv --version
    • A version number such as uv … = installed, skip this step
    • "command not found" (on Windows: "is not recognized") = not installed yet, or installed but Terminal needs to be closed and reopened
    How to open Terminal

    Mac: press ⌘ + Space, type Terminal, press Enter

    Windows: open Start, type Windows PowerShell, then Open

    Not installed: uv has no click-through installer. Copy the one-line command for your system (macOS or Windows) from uv’s official page into Terminal · no separate Python install needed; uv downloads it when required

    Open the uv download page ↗

    When it’s done, close Terminal, open it again and run the same command. You should see a version number: uv --version

    Install once; it works for everything that needs uv

  2. Open the Claude desktop app’s settings file

    SettingsDeveloperEdit Config

  3. Paste these settings and save the file

    {
      "mcpServers": {
        "honestcode": {
          "command": "uvx",
          "args": [
            "honestcode"
          ]
        }
      }
    }
  4. Quit Claude and open it again

  5. Try it

    Use Honestcode and tell me what you can do for me, then show me one thing

    ✓ If Claude says it is using Honestcode or shows a Honestcode tool in the answer, you are connected

Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version

ChatGPT cannot connect Honestcode yet

Honestcode runs on your computer, but ChatGPT can only connect servers that run on the web

What you can do instead

A · Use an app that can connect Honestcode

  • Install Python (uv) on your computer first (one time) · Only the Claude desktop app (Windows or Mac), not the web or phone
  • Install Python (uv) on your computer first (one time)
  • Install Python (uv) on your computer first (one time)
  • Install Python (uv) on your computer first (one time)

B · Others in Developer tools that work with ChatGPT

Picked from the most used in the same category, only ones that connect by address with no key

Works with Claude Code, with some setup first

Install Python (uv) on your computer first (one time)

Let AI install it

Copy this message into a Claude Code chat. The AI checks your computer, tells you which file it will change, and waits for your OK every time.

Please install the MCP server Honestcode for Claude Code on this computer, in this order: 1) Check uv with uv --version. If it is missing, tell me to install it from https://docs.astral.sh/uv/getting-started/installation/; do not install it yourself. 2) Use only this config (already checked by PopNx MCP): claude mcp add --scope user honestcode -- uvx honestcode 3) Tell me the full path of the file you will change, or the command you will run, and wait for my OK. 4) No key is needed. 5) Do what we agreed, then check that the Honestcode tools really show up.

This message has no key in it. If a key is needed, the AI will ask you to paste it yourself into the file or the app’s field.

  1. Install uv (if you don’t have it)

    Already installed? Check first · Open Terminal, type this command and press Enter

    uv --version
    • A version number such as uv … = installed, skip this step
    • "command not found" (on Windows: "is not recognized") = not installed yet, or installed but Terminal needs to be closed and reopened
    How to open Terminal

    Mac: press ⌘ + Space, type Terminal, press Enter

    Windows: open Start, type Windows PowerShell, then Open

    Not installed: uv has no click-through installer. Copy the one-line command for your system (macOS or Windows) from uv’s official page into Terminal · no separate Python install needed; uv downloads it when required

    Open the uv download page ↗

    When it’s done, close Terminal, open it again and run the same command. You should see a version number: uv --version

    Install once; it works for everything that needs uv

  2. Open Terminal

    Mac: press Command+Space and type Terminal · Windows: open PowerShell

  3. Paste this command and press Enter

    claude mcp add --scope user honestcode -- uvx honestcode
  4. Type /mcp in Claude Code

    You should see Honestcode listed as connected

  5. Try it

    Use Honestcode and tell me what you can do for me, then show me one thing

    ✓ If Claude Code says it is using Honestcode or shows a Honestcode tool in the answer, you are connected

Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version

Works with Cursor, with some setup first

Install Python (uv) on your computer first (one time)

Let AI install it

Copy this message into a Cursor chat. The AI checks your computer, tells you which file it will change, and waits for your OK every time.

Please install the MCP server Honestcode for Cursor on this computer, in this order: 1) Check uv with uv --version. If it is missing, tell me to install it from https://docs.astral.sh/uv/getting-started/installation/; do not install it yourself. 2) Use only this config (already checked by PopNx MCP): { "mcpServers": { "honestcode": { "command": "uvx", "args": [ "honestcode" ] } } } 3) Tell me the full path of the file you will change, or the command you will run, and wait for my OK. 4) No key is needed. 5) Do what we agreed, then check that the Honestcode tools really show up.

This message has no key in it. If a key is needed, the AI will ask you to paste it yourself into the file or the app’s field.

  1. Install uv (if you don’t have it)

    Already installed? Check first · Open Terminal, type this command and press Enter

    uv --version
    • A version number such as uv … = installed, skip this step
    • "command not found" (on Windows: "is not recognized") = not installed yet, or installed but Terminal needs to be closed and reopened
    How to open Terminal

    Mac: press ⌘ + Space, type Terminal, press Enter

    Windows: open Start, type Windows PowerShell, then Open

    Not installed: uv has no click-through installer. Copy the one-line command for your system (macOS or Windows) from uv’s official page into Terminal · no separate Python install needed; uv downloads it when required

    Open the uv download page ↗

    When it’s done, close Terminal, open it again and run the same command. You should see a version number: uv --version

    Install once; it works for everything that needs uv

  2. Click this button to open Cursor

    Open in Cursor

    Cursor asks you to confirm; click Install

  3. Open the AI chat in Cursor in Agent mode

  4. Try it

    Use Honestcode and tell me what you can do for me, then show me one thing

    ✓ If Cursor says it is using Honestcode or shows a Honestcode tool in the answer, you are connected

Menu names checked against Cursor’s help page on Nov 11, 2026 · your screen may differ slightly by app version

Works with VS Code, with some setup first

Install Python (uv) on your computer first (one time)

Let AI install it

Copy this message into a VS Code chat. The AI checks your computer, tells you which file it will change, and waits for your OK every time.

Please install the MCP server Honestcode for VS Code on this computer, in this order: 1) Check uv with uv --version. If it is missing, tell me to install it from https://docs.astral.sh/uv/getting-started/installation/; do not install it yourself. 2) Use only this config (already checked by PopNx MCP): { "servers": { "honestcode": { "type": "stdio", "command": "uvx", "args": [ "honestcode" ] } } } 3) Tell me the full path of the file you will change, or the command you will run, and wait for my OK. 4) No key is needed. 5) Do what we agreed, then check that the Honestcode tools really show up.

This message has no key in it. If a key is needed, the AI will ask you to paste it yourself into the file or the app’s field.

  1. Install uv (if you don’t have it)

    Already installed? Check first · Open Terminal, type this command and press Enter

    uv --version
    • A version number such as uv … = installed, skip this step
    • "command not found" (on Windows: "is not recognized") = not installed yet, or installed but Terminal needs to be closed and reopened
    How to open Terminal

    Mac: press ⌘ + Space, type Terminal, press Enter

    Windows: open Start, type Windows PowerShell, then Open

    Not installed: uv has no click-through installer. Copy the one-line command for your system (macOS or Windows) from uv’s official page into Terminal · no separate Python install needed; uv downloads it when required

    Open the uv download page ↗

    When it’s done, close Terminal, open it again and run the same command. You should see a version number: uv --version

    Install once; it works for everything that needs uv

  2. Click this button to open VS Code

    Open in VS Code

    VS Code asks you to confirm; click Install

  3. Open the AI chat in VS Code in Agent mode

  4. Try it

    Use Honestcode and tell me what you can do for me, then show me one thing

    ✓ If VS Code says it is using Honestcode or shows a Honestcode tool in the answer, you are connected

Menu names checked against VS Code’s help page on Nov 11, 2026 · your screen may differ slightly by app version

Other apps that use MCP, such as Windsurf, Zed or Gemini CLI, each add servers differently. See how in the app list.

See every app that uses MCP →

JSON settings are under “For developers” below

Stuck? Ask people who use Honestcode💬 Discussion →
For developers: Terminal commands and JSON settings

Installed on your computer

Claude Code

claude mcp add --scope user honestcode -- uvx honestcode

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "honestcode": {
      "command": "uvx",
      "args": [
        "honestcode"
      ]
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "honestcode": {
      "command": "uvx",
      "args": [
        "honestcode"
      ]
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "honestcode": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "honestcode"
      ]
    }
  }
}

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

At a glance

Downloads per weeki
76/wk
Connection
Runs on your computer
Latest versioni
0.5.1
Published to registryi
Oct 25, 2026
Code last changedi
Oct 25, 2026
Maker
Fengrru
Packages
pypi: honestcode
Registry status
Active

Which apps can use it

Based on how this server connects and on each app’s own docs, checked Nov 10, 2026.

Run on your computer in

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

All apps, with pros and cons →

Related guides

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 16, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account Fengrru, which owns the repo

  • ✓ Pass

    Still maintained

    Code last changed 22 days ago

  • ✓ Pass

    Has a licence

    Uses MIT

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Published vulnerabilities (OSV.dev)

No entries on OSV.dev for honestcode@0.5.1

Checks only this package version, not every dependency · checked Nov 15, 2026

What we check → · JSON

Makers: ask for a re-check or report wrong info

Discussion

Ask, share a tip or report that it does not work. Sorted by what people marked helpful.

No posts yet. Be the first to ask or share.

Posts here are written by users, not the PopNx team.

Sign in to post

User reviews

No reviews yet

Sign in to write a review

Compared with others in Developer toolsi

  • More stars than 0% of the other 5935 servers in this category
  • Published to the registry more recently than 57% of the other 5935 servers in this category
  • Basic checks equal to or better than 100% of the other 5935 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Honestcode safe?

It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).

Is it still maintained?

The GitHub repo last changed 22 days ago, and the latest version (0.5.1) reached the registry 22 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.

What can I use instead?

In the same category: GitDiagram, Appllama, Cloudflare MCP, Omnara, Repowise

Similar alternatives

Same category, other makers, commands already checked. Official ones first, then by stars.

Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

GitDiagram

Architecture diagrams, explanations and Mermaid source for public GitHub repositories.

by ahmedkhaleel2004Widely used★ 18.9KUpdated 2 months ago

Runs in the cloud✓ service owner · gitdiagram.comTried by the PopNx team

Appllama

Study screens, flows and paywalls from top-earning iOS apps, then build from what wins.

by AppllamaWidely used★ 5.2KUpdated 3 months ago

Runs in the cloud✓ service owner · appllama.io

Cloudflare MCP

Cloudflare MCP servers

by cloudflareWidely used★ 4.5KUpdated 14 months ago

Runs in the cloud✓ service owner · mcp.cloudflare.comTried by the PopNx team

Omnara

Deploy durable AI agents with Omnara, an open-source managed-agent platform.

by omnara-aiWidely used★ 3.4KUpdated 2 months ago

Runs in the cloud✓ service owner · omnara.com

Repowise

Codebase intelligence for AI coding agents: graph, git history, docs, decisions, code health.

by repowise-devWidely used↓ 6.5K/wk★ 8.1K Stars for the whole repoUpdated 3 days ago

Computer or cloud✓ service owner · repowise.dev
  • GitDiagram — Runs in the cloud, nothing to install · No key needed
  • Appllama — Runs in the cloud, nothing to install · No key needed
  • Cloudflare MCP — Runs in the cloud, nothing to install · No key needed · In Claude’s directory
  • Omnara — Runs in the cloud, nothing to install · No key needed
  • Repowise — Cloud or install on your computer · No key needed

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

HonestCode

The deterministic verification layer for AI coding agents.

Catch invented APIs, undefined symbols, wrong calls, and other code hallucinations before your agent moves on.


The problem

AI coding agents hallucinate. They invent function names, fabricate library APIs, and call methods that do not exist.

HonestCode is the layer that checks what the agent just wrote against the repository it is supposed to be grounded in.

Agent

↓ writes code ↓ HonestCode ↓ evidence ↓ Agent fixes ↓ verified code

No LLM calls. No network. Pure AST + symbol resolution.


Demo

The agent was asked to *"add authentication using the existing UserClient."* It generated:

client.refresh_token()

The real project only has:

class UserClient:

def refresh(self): ... def refresh_access_token(self): ...

HonestCode catches it deterministically:

✗ verification failed — 1 issue in app/login_broken.py

[invented_api] app/login_broken.py:9 UserClient.refresh_token() does not exist. did you mean: refresh_access_token()? available methods:

  • refresh()
  • refresh_access_token() confidence: deterministic · action: revise

Run it yourself:

cd demos/invented-api

python run.py


Why not just use Ruff / Pyright?

HonestCode is not a replacement — it is a verification layer that answers a specific question: *did the agent's code actually come from this repository?*

ErrorRuffPyrightHonestCode
Syntax error✓✓✓
Type mismatch—✓structural only
Undefined symbol✓✓✓
Invented APIpartialpartialcore
Wrong method call—partialcore
Agent-generated API mismatch——core

The key difference is repository grounding. Ruff checks the file. Pyright types the call. HonestCode checks whether the call resolves to a real symbol that exists in the codebase the agent is editing. (HonestCode does not do full type inference — its structural checks catch mismatched arities, iterating None, and calling constants, not general type errors.)

What a call site is checked against depends on how the receiver's type is known: an annotation (client: UserClient), a constructor assignment (client = UserClient()), self/cls, and an inline constructor (UserClient().refresh()) are all resolved. A receiver produced by a factory function (make_client().refresh()) is not judged — function signatures carry no return type in the surface model, and guessing there would trade a missed finding for a false one.


Install

One line — no clone, no virtualenv:

claude mcp add honestcode -- uvx honestcode-mcp

uvx fetches the server into an isolated environment on first use; install uv first if you do not have it. From a checkout (to hack on the code, or if you prefer not to use uv):

git clone https://github.com/Fengrru/honestcode

cd honestcode pip install -e . claude mcp add honestcode -- honestcode-mcp

Cursor / VS Code / Claude Desktop: the honestcode install command probes those clients' config files and registers the server for you:

honestcode install            # all detected clients

honestcode install --client cursor --dry-run # preview without writing

Requires Python >= 3.10. 100% local.


30-second setup with Claude Code

# Add HonestCode as an MCP server

claude mcp add honestcode -- honestcode-mcp

Or add it manually to your Claude Code config (~/.claude.json on macOS/Linux, %USERPROFILE%\.claude.json on Windows):

{

"mcpServers": { "honestcode": { "command": "honestcode-mcp", "args": [] } } }

Restart Claude Code. You now have two verification tools available:

  • scan_file(path) — legacy tool, returns issues plus the new evidence shape.
  • verify_file(path) — agent-facing tool, returns status, findings with evidence, and a human-readable text summary.

Try prompting Claude:

Add a login endpoint using the existing UserClient, then run verify_file on the

file you just wrote and fix anything it reports.

HonestCode auto-discovers the project root from the file path, indexes the codebase, and returns grounded evidence.

Making it automatic (no prompt discipline required)

MCP tools only run when the model chooses to call them. To make verification unconditional, wire the hook in scripts/claude_hook.py into Claude Code's PostToolUse event — every .py file the agent writes is verified, and a finding blocks the edit with the evidence fed straight back into the conversation:

{

"hooks": { "PostToolUse": [ { "matcher": "Write|Edit", "hooks": [ { "type": "command", "command": "python /absolute/path/to/honestcode/scripts/claude_hook.py" } ] } ] } }

Put that in ~/.claude/settings.json (all projects) or .claude/settings.json (one project). The hook never blocks on its own failures: unreadable input, non-Python files, and verification crashes all exit silently, so it can never turn into a wall that blocks every edit.


Real example

# auth/client.py

class UserClient: def refresh_access_token(self): ...

auth/login.py

from auth.client import UserClient

def login(client: UserClient): client.refresh_token() # invented API

>>> from honestcode.mcp.tools import verify_file

>> verify_file("auth/login.py")

{ "status": "fail", "file": "auth/login.py", "findings": [ { "line": 7, "kind": "invented_api", "symbol": "refresh_token", "owner": "UserClient", "message": "UserClient.refresh_token() does not exist.", "evidence": { "available_methods": ["refresh", "refresh_access_token"], "did_you_mean": "refresh_access_token" }, "confidence": "deterministic", "action": "revise" } ], "text": "✗ verification failed — 1 issue in auth/login.py\n ..." }


Agent output protocol

verify_file returns evidence an agent can act on directly, not just an error message:

{

"status": "fail", "file": "auth/client.py", "line": 42, "kind": "invented_api", "symbol": "refresh_token", "owner": "UserClient", "message": "UserClient.refresh_token() does not exist.", "evidence": { "available_methods": ["refresh", "refresh_access_token"] }, "confidence": "deterministic", "action": "revise" }


How it works

  1. Auto-index the project (or reuse the cached symbol index).
  2. Parse the target file with the standard-library ast module.
  3. Resolve every call site to a concrete symbol:
  • infer the receiver type from annotations, constructors, and imports;
  • reconstruct the class's member surface from the repository AST;
  • mark the surface as *unknown* when a base class cannot be resolved or the class defines __getattr__.
  1. Emit findings with kind, owner, evidence, confidence, and action.

The loop is deterministic and auditable.

Scope and limitations

The verifier stays silent wherever it cannot *prove* absence — that is the feature, but it means detection has known boundaries:

  • Decorated classes are not judged for invented members. Any class decorator (including @dataclass) may add or rewrite members, so invented method calls on such classes are not reported. Undecorated classes are fully checked.
  • Standard-library member calls are not checked. from typing import TypeVarr (an invented *import*) is caught, but os.path.joinn() (an invented *call* on a real module) is not — third-party and project members are the covered surface.
  • Factory-function receivers are not judged. make_client().refresh() is skipped; annotations, constructor assignments, self/cls, and inline constructors (UserClient().refresh()) are resolved.
  • `undefined_symbol` carries `confidence: high`, not `deterministic`. Only member-surface claims (invented APIs on a fully enumerated class) are provable from the repository; name absence rests on the syntactic binding model and keeps the lower confidence. Variables reassigned across types in one scope are treated as unknown and never judged.
  • Graph tools are anchored to the last indexed project. scan_file / verify_file resolve the project root per file (including monorepo sub-projects); find_dead_code, explore_call_graph, search_code and friends operate on the project most recently passed to index_project.
  • `check_api` imports the base package on demand — but only when it is genuinely installed (or stdlib). A bare file dropped into the workspace is never imported, so agent-authored code cannot be executed server-side through this tool.

MCP tools

By default scan_file and verify_file are exposed. Set HONESTCODE_TOOLS=all to enable the full set, including:

ToolPurpose
scan_fileScan a file for invented APIs, undefined calls, and wrong arities.
verify_fileReturn the agent-facing structured evidence protocol.
index_projectBuild or reuse the project symbol index.
load_project_depsLoad dependency APIs from requirements.txt / pyproject.toml.
check_symbolVerify a symbol is defined.
check_apiVerify a library API call exists.
validate_typesStructural type checks.

Dependency manifests (requirements.txt, pyproject.toml) are declared automatically on the first scan, so imports from a dependency that is not installed in the MCP server's interpreter are trusted rather than reported as invented. Set HONESTCODE_AUTO_DEPS=0 to disable that.

See the old tool reference below for the complete list.


Crash-safe side effects

verify_file checks code before it runs. guards/ covers what happens after: an agent that retries a tool call can charge a card twice, and no durable execution engine prevents it — Temporal and Restate both guarantee deterministic replay of *orchestration* and leave exactly-once external effects to the application.

from honestcode.guards import EffectStore, SideEffectGuard, durable_scope

guard = SideEffectGuard(session_id="run-42", store_path=".agent/effects.db")

outcome = guard.run( "charge", target="cus_123", payload={"cents": 4200}, execute=lambda: charge_card("cus_123", 4200), approve_irreversible=True, scope=durable_scope("order-4711", "charge", "cus_123"), )

outcome.executed # False on the retry — a receipt, not a second charge outcome.effect_id # stable across a restart, because the key is on disk

The interesting part is what scope does. Pass it and the effect's identity comes from the scope rather than the session — which is the difference between a retry being recognised and a customer being charged twice, because a restart *is* a new session id. Pass nothing and the guard stays session-scoped.

Refusing is the default direction: an unrecognised action is treated as irreversible rather than idempotent, and irreversible effects need explicit approval. A run that dies between the call and the record leaves the effect executing, and the next attempt reports the outcome as unknown instead of guessing — which is what stops the retry. Scoped effects are recovered with guard.recover(scope=durable_scope(...)), and guard.effects(scope=...) / guard.summary(scope=...) report them; the records live under a namespace d

Only the beginning is shown; read the rest in the repo