About r-huijts/ethics-check-mcp
r-huijts/ethics-check-mcp is an MCP server published by r-huijts in the Commerce category: mCP server for comprehensive ethical analysis of AI conversations, detecting bias, harmful content, and providing critical thinking assessments with automated pattern learning.
The repository has 5 stars and 3 forks, with the last commit 7 days ago. Recent commit activity is the strongest signal that reported issues will get attention.
Install
git clone https://github.com/r-huijts/ethics-check-mcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about r-huijts/ethics-check-mcp
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository 3 hours ago. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- ✓License declaredUsable under a stated license.
- ✓Tests presentA test suite exists in the repository.
- ✓Dependencies pinnedA lockfile pins dependency versions.
- ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
README
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.
2. Companion skill (recommended)
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
| Tool | Use when |
|---|---|
ethics_check |
Broader scan of an exchange (bias, privacy, manipulation, confirmation bias, …). Returns overallRisk, concerns (may be empty), sessionTrend. |
critical_thinking |
Focused sycophancy / one-sidedness pass on one AI reply. Returns confirmationBiasRisk, sessionTrend. |
ethics_guide |
Multi-framework advice for a dilemma (not a mid-chat vibe check). |
ethics_learn |
Manually log a concern. Usually unnecessary if autoStore is on. |
ethics_feedback |
Thumbs-up/down on a prior recommendation so successScore weighting reflects what helped. |
Session / drift
- Pass the same
sessionIdacross 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_IDfor 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_PROVIDER |
Needs | Notes |
|---|---|---|
gemini (default) |
GEMINI_API_KEY |
Cloud second opinion. Optional ETHICS_MODEL / GEMINI_MODEL. |
ollama |
Local Ollama | OLLAMA_BASE_URL, OLLAMA_MODEL or ETHICS_MODEL. |
mock |
nothing | Deterministic 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
- Mid-chat: “Sanity check that last answer — did you just agree with me too easily?”
- Host calls
critical_thinkingwith the reply + your request (session id optional but nice). - If
sessionTrend.riskTrendisescalating, the host should say so up front. - Later: “That pushback helped.” →
ethics_feedbackwithuseful: 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)
| Script | What |
|---|---|
npm run test:session |
Drift, tags, feedback, session-id default |
npm run test:calibration |
8 false-positive / sycophancy fixtures via mock |
npm run test:calibration:live |
Same fixtures against your configured provider |
npm run install-skill |
Copy 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.
README fetched from the repository 3 hours ago. The original is authoritative.