Ethics Check MCP

Community AI and agents

Ethical analysis of AI conversations: detect bias and harmful content and provide critical-thinking assessments, with automated pattern learning.

What can you do with Ethics Check MCP?

  • Pass the same sessionId across checks in one chat when you can.
  • If omitted, the server uses a process-scoped default (typical MCP hosts run one process per conversation).
  • Override with ETHICS_SESSION_ID for evals or known ids.

Install

The installation steps are in the documentation below. Documentation

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. Ethics Vibe Check
  2. What it is
  3. Quick start
  4. Tools
  5. Providers
  6. Example flow
  7. Develop / verify
  8. Who this is for
  9. License

Ethics Vibe Check

A gut-check button for AI conversations.

MCP tools that run an independent second-opinion model over an exchange so you can catch sycophancy, confirmation bias, or quiet drift — when you ask, not as ambient surveillance.

Package: @r-huijts/ethics-vibe-check · Repo: r-huijts/ethics-check-mcp


What it is

LLMs are trained to be helpful. That often means they agree too easily and let a chat slide toward whatever you already believe.

This server does not intercept every turn. It exposes tools you (or your host, when you ask) call mid-conversation:

“Sanity check that.” · “Play devil’s advocate.” · “Are we drifting?”

A second model grades the exchange. Reuse (or omit) a session id to get a sessionTrend — escalating / improving / stable — so creep shows up as a signal, not a pile of disconnected snapshots.


Quick start

1. MCP server

Cursor one-click (above) installs the server command only. Afterward, open MCP settings and add env (Gemini by default):

{
  "mcpServers": {
    "ethics-vibe-check": {
      "command": "npx",
      "args": ["-y", "@r-huijts/ethics-vibe-check"],
      "env": {
        "ETHICS_PROVIDER": "gemini",
        "GEMINI_API_KEY": "your_actual_gemini_api_key_here"
      }
    }
  }
}

Local second opinion (no cloud):

"env": {
  "ETHICS_PROVIDER": "ollama",
  "OLLAMA_MODEL": "llama3.2",
  "OLLAMA_BASE_URL": "http://127.0.0.1:11434"
}

CLI:

npm install -g @r-huijts/ethics-vibe-check
npx @r-huijts/ethics-vibe-check

Full env reference: env.example.

The skill teaches the host when to call tools, how to treat sessionTrend, and when to record feedback. Prefer it over a fat always-on rule.

# global install:
ethics-vibe-check-install-skill

# from a clone / local package:
npm run install-skill

# one-shot without a global install:
npx -y -p @r-huijts/ethics-vibe-check ethics-vibe-check-install-skill

Installs skills/ethics-vibe-check/SKILL.md → ~/.cursor/skills/ethics-vibe-check/ (override with CURSOR_SKILLS_DIR).

Optional always-on checkpoint templates: docs/system-prompts.md.


Tools

ToolUse when
ethics_checkBroader scan of an exchange (bias, privacy, manipulation, confirmation bias, …). Returns overallRisk, concerns (may be empty), sessionTrend.
critical_thinkingFocused sycophancy / one-sidedness pass on one AI reply. Returns confirmationBiasRisk, sessionTrend.
ethics_guideMulti-framework advice for a dilemma (not a mid-chat vibe check).
ethics_learnManually log a concern. Usually unnecessary if autoStore is on.
ethics_feedbackThumbs-up/down on a prior recommendation so successScore weighting reflects what helped.

Session / drift

  • Pass the same sessionId across checks in one chat when you can.
  • If omitted, the server uses a process-scoped default (typical MCP hosts run one process per conversation).
  • Override with ETHICS_SESSION_ID for evals or known ids.

Calibration

Prompts are written so ordinary helpful replies can return low risk and empty findings. Empty is a valid gut-check result — not a failure.


Providers

ETHICS_PROVIDERNeedsNotes
gemini (default)GEMINI_API_KEYCloud second opinion. Optional ETHICS_MODEL / GEMINI_MODEL.
ollamaLocal OllamaOLLAMA_BASE_URL, OLLAMA_MODEL or ETHICS_MODEL.
mocknothingDeterministic offline answers for tests/demos only.

Storage defaults to ~/.ethics-vibe-check/data (ETHICS_DATA_DIR to override).

With Gemini, analysis leaves your machine — don’t paste secrets you wouldn’t send to a third-party API. Use Ollama for local-only checks.


Example flow

  1. Mid-chat: “Sanity check that last answer — did you just agree with me too easily?”
  2. Host calls critical_thinking with the reply + your request (session id optional but nice).
  3. If sessionTrend.riskTrend is escalating, the host should say so up front.
  4. Later: “That pushback helped.” → ethics_feedback with useful: true.

Develop / verify

npm install
cp env.example .env   # or ETHICS_PROVIDER=mock for offline work
npm run build
npm run test:all      # session unit tests + calibration fixtures (mock)
ScriptWhat
npm run test:sessionDrift, tags, feedback, session-id default
npm run test:calibration8 false-positive / sycophancy fixtures via mock
npm run test:calibration:liveSame fixtures against your configured provider
npm run install-skillCopy companion skill into Cursor skills dir

More detail: USAGE.md.


Who this is for

Yes if you want a deliberate pause when a chat feels too comfortable, and you’ll act on an uncomfortable answer.

No if you want the model to always agree, or you need fully automatic enforcement with zero prompting — that’s a different product.


License

MIT © 2024–2026

The point isn’t to be right. The point is to be thoughtful.

Frequently asked questions

What is Ethics Check MCP?

Ethical analysis of AI conversations: detect bias and harmful content and provide critical-thinking assessments, with automated pattern learning.

How do I install Ethics Check MCP?

Follow the installation steps in its documentation, shown on this page and in its repository.

Is Ethics Check MCP open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains Ethics Check MCP?

It is published by r-huijts. AI.tn lists it but does not maintain or endorse it.

From the community awesome-mcp-servers lists and the project's GitHub repository. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.