Prototipo · Versión preliminar: todos los servidores del registro oficial, sincronizados cada 30 minutos. Las reseñas y las cuentas llegarán en una etapa posterior.
PopNx MCPServidores MCP para quienes usan IA · explicados con palabras sencillas

defluff

de ahmedakversión 0.1.2i★ –iSe ejecuta en tu computadora
Nombre en el registroio.github.ahmedak/defluff

Instalar

Resumen

Descripción del creador (original en inglés)

Deterministic prose linter for LLM text — flags AI slop, filler, buzzwords, hedges, clichés.

Los tres pilares de PopNx MCP

Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.

Qué puedes hacer con él

Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.

  • Conexión: Se ejecuta en tu computadora
  • Transporte: stdio
  • Categoría: Búsqueda y memoria de IA

Instalación

Elige la app de IA que usas y copia la configuración.

Antes de instalar

Necesitas

  • PyPIuv de Python instalado (para el comando uvx)

¿Qué app usas?

Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.

Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json

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

Ejecuta esto en tu terminal

claude mcp add defluff -- uvx defluff defluff-mcp

Abrir en Cursor

O copia la configuración tú

Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json

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

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Abrir en VS Code

O copia la configuración tú

Pégalo en .vscode/mcp.json de tu proyecto

{
  "servers": {
    "defluff": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "defluff",
        "defluff-mcp"
      ]
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.

Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.

Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.

Qué puede hacer

Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.

Revisiones básicasi

Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026

  • ✓ Superada

    El creador coincide con el repo

    El nombre en el registro se verificó con la cuenta de GitHub ahmedak, dueña del repo

  • … Aún sin revisar

    Sigue en mantenimiento

    Todavía no hemos leído este repo en GitHub

  • … Aún sin revisar

    Tiene licencia

    Todavía no hemos leído este repo en GitHub

  • – No aplica

    El endpoint responde

    Este se ejecuta en tu computadora; no hay endpoint en internet

  • – No aplica

    Inicio de sesión con OAuth

    Se ejecuta en tu computadora y usa ajustes locales en su lugar

  • … Aún sin revisar

    Sin instrucciones ocultas en las descripciones de herramientas

    Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet

Comparado con otros en Búsqueda y memoria de IAi

  • Más estrellas que el 0% de los otros 7257 servidores de esta categoría
  • Publicado en el registro más recientemente que el 18% de los otros 7257 servidores de esta categoría
  • Revisiones básicas iguales o mejores que el 100% de los otros 7257 servidores de esta categoría

Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.

Preguntas frecuentes

¿Es seguro defluff?

Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.

¿Qué claves o códigos necesita?

El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.

¿Se ejecuta en mi computadora o en la nube?

Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).

¿Sigue en mantenimiento?

El repo de GitHub cambió por última vez –, y la última versión (0.1.2) llegó al registro hace 5 meses.

¿Qué apps pueden usarlo?

Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Python (uv) en tu computadora.

¿Qué puedo usar en su lugar?

En la misma categoría: Context7, Codebase Memory, Exa

Alternativas

Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.

Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi

Context7

de upstash

Up-to-date docs for AI agents

Computadora o nube★ 64.224MITActualizado hoy
Instalar

Codebase Memory

de DeusData

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

Se ejecuta en tu computadora★ 48.148MITActualizado hace 20 días
Instalar

Exa

de exa-labs

Connect AI agents to Exa for web search, content fetching, and multi-step research.

Se ejecuta en la nube★ 5213MITActualizado el mes pasado
Instalar

README del creador

Abrir el README

Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.

defluff

*The deterministic slop check for AI-generated prose. Point it at a changelog, a doc, or an agent's own output and get back the filler phrases to cut — plus a CI exit code and a pinnable score, identical on every run. No model, no API key.*

Every flagged span carries no information, so cutting them loses nothing. Clean text, same tool, passes straight through:

What makes defluff worth installing over a one-off grep is the engine around the list: bring your own phrases, per-project overlays, and an MCP server your agents pick up with no wiring.


Install

pip install defluff

Or on macOS/Linux via Homebrew:

brew install ahmedak/defluff/defluff

That's it. No model download. No API key. Runs anywhere Python does.


Quick start

# Lint a file — exit 1 on slop, 0 when clean

defluff lint essay.md

Pipe text

cat draft.md | defluff lint

Get a bare score for scripts (0.0 – 1.0)

defluff score essay.md

Machine-readable JSON for downstream tooling

defluff lint essay.md --json


MCP server

Exposes three tools so any MCP-aware agent can self-check prose without bespoke wiring — including its own draft, before returning it.

Zero-install via uvx (recommended) — pulls the package and the mcp extra on first run:

{

"mcpServers": { "defluff": { "command": "uvx", "args": ["--from", "defluff[mcp]", "defluff-mcp"] } } }

Or install it and run the entry point directly:

pip install "defluff[mcp]"

defluff-mcp

{

"mcpServers": { "defluff": { "command": "defluff-mcp" } } }

Published to the MCP Registry as io.github.ahmedak/defluff (see server.json).

mcp-name: io.github.ahmedak/defluff

ToolArgsReturns
slop_detecttext: strslop_score, spans (text, category, weight, offsets), categories, lexicon_version
slop_add`pattern: str, category: str, scope: "user"\"project"`adds a phrase to the lexicon overlay
slop_ignore`pattern: str, scope: "user"\"project"`suppresses a phrase (e.g. domain jargon)

Common use cases

  • Agent self-correction — call slop_detect on a draft and revise the flagged phrases before returning it. Zero wiring, one session, no second model in the loop.
  • CI gate on generated content — fail the build when an AI-drafted changelog or doc ships full of "furthermore" and "robust." Deterministic + exit codes + a pinnable lexicon is what an LLM-judge gate can't give you.
  • Writing assistant feedback — highlight the exact phrases an editor would cut, instead of a vague "this sounds AI."
  • **A reward *component* for fine-tuning** — see reward loops for caveats; on its own it's gameable.

Why defluff?

Every "AI detector" tries to classify *whether* text was AI-generated — a hard, unreliable problem. defluff asks a different question: does this text contain removable filler? That's deterministic, and it's true whether a human or an LLM wrote "at the end of the day."

proselint is the closest prior art — deterministic, no model — but emits yes/no warnings rather than a tunable density score, and isn't built around a list you swap, overlay, or pin.

A grep over a word list gives you raw hits. defluff gives you what you'd otherwise have to build around that list:

  • An MCP server — agents self-check with zero wiring.
  • Markdown- and code-aware — strips code fences, inline code, and URLs first.
  • Whole-word matching — "foster" won't fire inside "fostering".
  • A normalized score instead of a hit count — filler *density*, so one threshold works on a tweet or a 5,000-word doc.
  • Overlap handling — "at the end of the day" overlapping "end of the day" counts each word once (longest-match-wins).
  • Exit codes, JSON, and char-offset spans — drop into CI, pre-commit, and editor tooling.
  • A pinnable lexicon hash — prove the ruler didn't move between runs.
Bring your own slop
defluff lint draft.md --lexicon team-slop.md
# team-slop.md
  • circle back
  • low-hanging fruit
  • boil the ocean

paradigm shift

One phrase per line (# comments and -/* markers ignored). These layer on top of the built-in defaults and report under a neutral custom category. For real categories and per-phrase weights, use a .json list (see Lexicon overlays).

Ready-made domain packs
defluff lint post.md --pack marketing-growth

defluff lint post.md --pack marketing-growth,ai-llm # stack several

PackCatchesPackCatches
corporate-linkedinoffice jargoncrypto-web3crypto hype
startup-vcpitch-deck speakpr-press-releasepress-release boilerplate
marketing-growthhype copyacademicresearch hedging
ai-llmLLM tellswellness-selfhelpinfluencer-speak
social-mediaX/Twitter engagement-bait

List them with defluff packs. High-false-positive terms (e.g. pivot, detox) ship commented-out so they're inert until you opt in. See the packs README.

Batteries-included defaults

~130 curated patterns across five weighted categories, case-insensitive, whole-word matched:

CategoryWhat it catchesExamples
ai-vocabWords disproportionately overused by LLMs*delve, tapestry, nuanced, pivotal, robust, showcase*
clicheHollow idioms that add no information*at the end of the day, move the needle, circle back, game changer*
hedgeEmpty qualifiers*it should be noted that, needless to say, basically, essentially*
corporateBuzzword inflation*leverage, synergy, actionable insights, cutting-edge, scalable*
transitionFiller connectives LLMs reach for by default*furthermore, moreover, in conclusion, first and foremost*
Rhetorical patterns (beyond the list)

Some AI tells are sentence *shapes*, not fixed phrases — the antithesis: it's not X, it's Y, not just a list but a runtime. A regex pattern layer catches these under a rhetoric category:

ModeWhat it looks forDefaultWhy
Compound *(confident)*full shape: it's not X, it's Y · not just X but Yonthe second clause proves the rhetorical move — rarely a false alarm
Fragment *(guessing)*bare X, not Y — e.g. a signal, not a verdictoff, --pack rhetoricalso fires on plain corrections (shipped Tuesday, not Wednesday)

Each match counts as one unit toward the score regardless of length. Turning on fragment mode changes the lexicon hash.

defluff lint draft.md                  # compound antithesis caught by default

defluff lint draft.md --pack rhetoric # also catch the punchy "X, not Y" fragment defluff lint draft.md --category rhetoric # gate CI on antithesis alone


Python API

import defluff

report = defluff.detect("It is worth noting that we should leverage synergies.") print(report.slop_score) # 0.0 – 1.0 print(report.spans) # flagged phrase locations + categories

score = defluff.score(text) # bare float clean = defluff.is_slop(text) # bool at default threshold

lex = defluff.load_lexicon() # pin for reproducible runs score = defluff.score(text, lexicon=lex)

SlopReport fields:

FieldTypeNotes
slop_scorefloatClamped [0, 1] — use for thresholds
slop_densityfloatRaw unclamped — better gradient for reward loops
spanslist[Span]Per hit: text, category, weight, char offsets *into the cleaned text* (see Limitations)
categoriesdict[str, float]Per-category density
n_wordsintToken count
low_confidenceboolTrue when n_words < 20
lexicon_versionstrSHA prefix of resolved entry set

Lexicon overlays and versioning

The bundled lexicon is the baseline; layer on top without editing the package:

# "synergy" is slop on this machine

defluff lexicon add "synergy" --category corporate --scope user

"leverage" is fine in this repo (finance context) — commit this with the repo

defluff lexicon rm "leverage" --scope project git add .defluff/ignore.json && git commit -m "allow 'leverage' in finance context"

  • User overlay (~/.config/defluff/) — machine-wide, not committed
  • Project overlay (.defluff/ at git root) — per-repo, commit it for your whole team

Writes are atomic and cross-process locked; a corrupt overlay is warned and skipped — detect() never crashes.

Every resolved lexicon (bundled + overlays + packs) carries a short content hash, printed on every run (lexicon: 2cc05ba84457) and exposed as SlopReport.lexicon_version. Pass lexicon=defluff.load_lexicon() once and every call scores against the same ruler — pinnable for CI baselines and RL rewards, and auditable since the hash changes if and only if the resolved entry set changes. Each release ships a dated lexicon with a changelog (CHANGELOG.md); ai-vocab is expected to turn over release to release, cliche/hedge/corporate/transition are near-stable.


Reading the output and setting the threshold

  1. The spans — the exact filler phrases, with category. Deterministic, reliable. Act on these.
  2. The score — slop_score = flagged words ÷ total, weighted by category (ai-vocab counts a little more, transition a little less). 0.20 ≈ "a fifth of this text is listed filler." Usually 0.0–1.0; can edge slightly above on text that's almost nothing but slop. Instead of being a quality quantfier, its just a tripwire that drives the CI exit code.

Pick a threshold based on how filler-dense the text is *allowed* to be:

--thresholdMeaningGood for
0.05~5% filler — strictmarketing copy, landing pages, customer-facing text
0.08 *(default)*~8% filler — a tripwire for triagegeneral prose, blog drafts
0.12–0.20only flag heavy paddingtechnical docs that legitimately use robust, scalable, in order to

The default 0.08 is provisional — hand-chosen, not yet calibrated on a labeled corpus (hence the [threshold provisional] tag). For a hard CI gate, set your own threshold and suppress your domain

Solo se muestra el principio; lee el resto en el repo

Pregunta a PopNx