Skip to main content
Glama
Disneik
by Disneik

QuillBot Local MCP

Servidor MCP por STDIO, no oficial y experimental, para automatizar la interfaz web de QuillBot mediante Playwright. Devuelve texto del servicio y no modifica documentos.

Estado: protocolo MCP probado; integración con el sitio real pendiente de validación. Los selectores de la interfaz están vacíos intencionalmente. Después de instalar, quillbot_status funciona; detector y humanizador permanecerán bloqueados hasta configurar y comprobar sus controles reales. No es una integración lista para usar sin configuración. Los análisis hechos por separado desde un navegador no validan este adaptador.

Requisitos e instalación

Node.js 22 o posterior y un cliente compatible con MCP por STDIO. La cuenta, suscripción y límites aplicables dependen de QuillBot.

git clone https://github.com/Disneik/quillbot-local-mcp.git
cd quillbot-local-mcp
npm ci
npx playwright install chromium
npm test

En Linux puede ser necesario npx playwright install --with-deps chromium. Consulte la instalación oficial de Playwright.

Copie settings.example.json como settings.json:

# Linux / macOS
cp settings.example.json settings.json
# PowerShell
Copy-Item settings.example.json settings.json

Related MCP server: jev-browser

Conectar un cliente MCP

Copie la entrada de mcp.example.json a la configuración MCP de su cliente. Sustituya ambas rutas absolutas por las de su copia local. En Windows se pueden utilizar barras /. node debe estar en el PATH del cliente; si no, indique su ruta absoluta. Los formatos de configuración pueden variar entre clientes.

La variable QUILLBOT_SETTINGS selecciona el archivo local. Si se omite, el servidor usa el ejemplo seguro incluido, con navegador deshabilitado. Para iniciar manualmente, use npm start (STDIO queda reservado para MCP).

Configurar y validar QuillBot

  1. Autorice el uso del navegador en su cliente o entorno. Este servidor abre su propio Chromium mediante Playwright y no hereda las restricciones técnicas del navegador del cliente.

  2. En settings.json, active browserAccessEnabled únicamente si tiene esa autorización. Mantenga verifiedAgainstLiveSite: false.

  3. Llame a quillbot_inspect con {"mode":"detector","visible":true}. Complete personalmente el inicio de sesión en la ventana si se solicita. Se usa un perfil propio; no se importan sesiones ni cookies de otros navegadores.

  4. A partir de controles observados en la página, complete editorSelector (CSS), submitButtonName (nombre accesible exacto del botón) y resultSelector (CSS del resultado). flaggedSelector es opcional para pasajes señalados. Repita para humanizer. Las URLs iniciales pueden requerir ajustes si el servicio cambia.

  5. Para efectuar una comprobación manual, habilite verifiedAgainstLiveSite y pruebe con un fragmento autorizado sin información sensible. Compare la entrada y salida con la página. Si la comprobación falla, vuelva a false y corrija la configuración antes de usarlo con otros textos.

Los selectores y el resultado dependen de la interfaz actual, del idioma y de la sesión. Un cambio en el DOM puede requerir una nueva validación. El servidor espera que el contenedor tenga texto diferente al anterior al envío; ese criterio no garantiza por sí solo que una respuesta parcial haya terminado ni que un resultado esté asociado a la entrada correcta. Compruébelo durante la validación. Si el servicio devuelve exactamente el mismo texto que antes, puede agotarse el tiempo de espera.

Para iniciar sesión de forma visible, haga la inspección visible antes de otra operación de navegador. Si ya existe un contexto oculto, reinicie el servidor primero. Las pestañas de inspección visible quedan abiertas para que el usuario pueda completar el acceso.

Herramientas

Herramienta

Uso

quillbot_status

Estado local, sin abrir el navegador ni enviar texto.

quillbot_inspect

Controles visibles, sin ejecutar detección; admite mode y visible.

quillbot_detect

Envía text al detector configurado y devuelve el resultado literal.

quillbot_humanize

Envía text al humanizador configurado y devuelve una propuesta para revisión editorial.

Las respuestas contienen JSON breve, fecha, huella SHA-256 de la entrada y texto literal del servicio. No se infieren porcentajes adicionales. Solo se admite una operación simultánea. El límite local es de 30 000 caracteres por llamada; el límite real del servicio puede ser menor.

Datos y límites

Las herramientas de detección y humanización envían el texto a QuillBot. El servidor no guarda los textos como informes, pero el cliente MCP y QuillBot pueden aplicar sus propias políticas de almacenamiento. El perfil .browser-profile/ conserva la sesión: no lo comparta. settings.json, perfiles, informes y archivos de entorno quedan excluidos de Git.

No se incluyen claves, credenciales, cookies, textos de investigación ni documentos personales. No se automatizan CAPTCHA ni compras. Si hay un desafío, bloqueo, suscripción insuficiente o inicio de sesión pendiente, debe atenderlo el usuario. Los resultados del detector no certifican autoría y la paráfrasis necesita revisión del sentido, los datos y las citas; no se garantiza un resultado en Turnitin u otros servicios.

Pruebas y contribuciones

npm test comprueba el protocolo STDIO, controles de acceso, destinos permitidos, resultados vacíos y exclusión mutua. Usa datos simulados identificados como tales; no inicia Chromium ni constituye una prueba contra QuillBot. Las contribuciones que configuren selectores deben documentar fecha, idioma y pasos de validación, sin aportar sesiones ni textos privados.

Implementado con el SDK oficial de MCP y Playwright. Proyecto independiente, sin afiliación con QuillBot.

Licencia

MIT. Consulte LICENSE.

Available Tools

4 tools
quillbot_detectA

Envía el texto autorizado a la web de QuillBot y devuelve su resultado literal y fragmentos señalados. Requiere integración validada. No certifica autoría.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond the annotations by disclosing that the text leaves the system to an external website (consistent with openWorldHint=true and readOnlyHint=false), that a validated integration is required, and that results do not certify authorship. That is meaningful behavioral context the structured fields do not carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly packed sentences with no waste; the action and its output are front-loaded before the caveats. Efficient without omitting critical warnings.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully characterizes the return ('resultado literal y fragmentos señalados') and states the integration prerequisite and non-certification limit. Complete enough to call the tool correctly, though sibling differentiation is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single self-evident 'text' parameter with 0% schema description coverage. The description adds one semantic note ('texto autorizado', i.e., authorization constraint) but no format or length guidance, so it only marginally compensates for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete verb+resource: it sends authorized text to QuillBot's web and returns the literal result plus flagged fragments. An agent can tell what the tool produces. It does not, however, distinguish itself from quillbot_inspect or quillbot_status, so sibling routing stays ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

A prerequisite is given ('Requiere integración validada'), which is genuine usage context, and 'No certifica autoría' acts as a scope caveat. But there is no when-to-use vs when-to-use-an-alternative guidance relative to the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

quillbot_humanizeB

Solicita a QuillBot una propuesta de redacción para el fragmento autorizado. Devuelve una sugerencia para revisión; no modifica documentos.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true. The description adds that the tool returns a suggestion and does not modify documents, which is useful context. Yet it doesn't clarify why readOnlyHint is false despite no mutation, nor does it describe external API/auth or latency behavior for an open-world call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences are front-loaded: the first states the action, the second clarifies the non-mutating, suggestion-only behavior. There is no unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description covers the high-level purpose and clarifies non-mutation. However, it omits important details about the input text constraints and the nature of the returned suggestion, and does not resolve the mismatch with readOnlyHint=false.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one required parameter 'text' with 0% description coverage. The description only vaguely mentions 'fragmento autorizado' and does not explain constraints like max length 30000, allowed content, or format, leaving the parameter under-specified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it requests a writing suggestion from QuillBot for an authorized fragment. It distinguishes the tool from siblings like quillbot_detect or quillbot_status by focusing on proposing a rewrite.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies usage context ('fragmento autorizado') and clarifies that the result is a suggestion for review, not document modification. However, it does not explicitly compare with alternatives such as quillbot_detect or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

quillbot_inspectB

Inspecciona controles visibles para validar la integración; no ejecuta detección. visible=true permite que el usuario inicie sesión.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNodetector
visibleNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true). The description usefully adds that no detection is executed and that visible=true has a side effect (enabling user login), which is genuine behavioral context beyond the annotations. It does not explain permissions or what the inspection returns, so it stays at a middling 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with no filler, and the core purpose plus the key scoping exclusion are front-loaded. Nothing is wasted, though the terseness contributes to the vagueness noted elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with an undocumented enum parameter, no output schema, and a somewhat ambiguous object of inspection, the description is too thin. An agent cannot tell what mode=humanizer does here or what the inspection actually yields, leaving meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the parameter burden. It only addresses one of two parameters (visible=true → allows login) and leaves the mode enum (detector/humanizer) completely undocumented, so it only partially compensates for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Inspecciona controles visibles para validar la integración") and explicitly carves itself away from detection ("no ejecuta detección"), which separates it from sibling quillbot_detect. However, "controles visibles" remains vague about what is actually being inspected, so it stops short of full specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The negative clause "no ejecuta detección" implicitly routes detection work to quillbot_detect, and the note that visible=true enables user login hints at an interactive setup context. But it never states when to prefer this over quillbot_status, nor gives prerequisites or exclusions explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

quillbot_statusB
Read-only

Estado local del adaptador. No abre navegador ni envía texto.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false; the description usefully reinforces this by stating it opens no browser and sends no text, making the purely local, offline nature concrete. It does not, however, say what state information is actually reported.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler, front-loading the identity of the tool before the no-side-effects note. Every phrase carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no parameters, the description should say what "estado" means (readiness, config, version, errors). As written, an agent cannot tell what it will receive back, leaving a real gap for a status-check tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and schema coverage is 100%, so there is nothing for the description to disambiguate. Baseline 4 applies for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Estado local del adaptador" names a resource (the adapter) and a verb (report state), but the description largely restates the tool name (quillbot_status) in Spanish. It does not distinguish this from quillbot_inspect, which an agent could reasonably read as another status/inspection tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use statement or condition for choosing this over quillbot_inspect, quillbot_detect, or quillbot_humanize. The closest thing, "No abre navegador ni envía texto," describes behavior rather than when the agent should call it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.1.0
    • First observedquillbot_detect
    • First observedquillbot_humanize
    • First observedquillbot_inspect
    • First observedquillbot_status

TDQS

A3.7/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: status checks local adapter state, inspect validates visible controls/login readiness, detect runs AI detection, and humanize requests a rewriting proposal. Although status and inspect both relate to integration health, the descriptions cleanly separate them.

Naming Consistency5/5

All tools follow the same predictable quillbot_ prefix with lowercase snake_case verbs/nouns: status, inspect, detect, humanize. There are no deviations or mixed conventions.

Tool Count5/5

Four tools is well-scoped for a focused local QuillBot adapter. Each tool has a clear role in the workflow: health, validation/login, detection, and humanization.

Completeness4/5

The core detection and humanization operations are covered, along with status and integration validation. Minor lifecycle gaps remain, such as explicit session cleanup/logout, batch operations, or configuration tools, but agents can work around these.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables browser automation through MCP with native Playwright operations, deterministic assertions, and natural-language grounded actions, structured extraction, and bounded agent workflows over live page elements.
    12
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables an MCP client to automate a real browser by requesting one outcome at a time, letting a decision model choose each element, action, and value while Playwright executes. Also exposes direct acting, yes/no page checks, question-focused page reading, screenshots, and any tools a page itself registers via WebMCP.
    509 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables MCP clients to automate a real browser by stating one outcome at a time, with a typesafe decision model picking the element, action, and value while Playwright executes it. It also exposes tools for direct actions, yes/no and multiple-choice page checks, focused document reading, screenshots, and calling a page's own WebMCP tools.
    509 npm
    MIT