bookstack-mcp

Los proyectos que siguen las mejores prácticas a continuación pueden autocertificarse voluntariamente y demostrar que han obtenido una insignia de mejores prácticas de Open Source Security Foundation (OpenSSF).

No existe un conjunto de prácticas que pueda garantizar que el software nunca tendrá defectos o vulnerabilidades; incluso los métodos formales pueden fallar si las especificaciones o suposiciones son incorrectas. Tampoco existe ningún conjunto de prácticas que pueda garantizar que un proyecto mantenga una comunidad de desarrollo saludable y que funcione bien. Sin embargo, seguir las mejores prácticas puede ayudar a mejorar los resultados de los proyectos. Por ejemplo, algunas prácticas permiten la revisión por parte de múltiples personas antes del lanzamiento, lo que puede ayudar a encontrar vulnerabilidades técnicas que de otro modo serían difíciles de encontrar y ayudar a generar confianza y un deseo repetido de interacción entre desarrolladores de diferentes compañías. Para obtener una insignia, se deben cumplir todos los criterios DEBE y NO DEBE, se deben cumplir, así como todos los criterios DEBERÍAN deben cumplirse o ser justificados, y todos los criterios SUGERIDOS se pueden cumplir o incumplir (queremos que se consideren al menos). Si desea añadir texto como justificación mediante un comentario genérico, en lugar de ser un razonamiento de que la situación es aceptable, comience el bloque de texto con '//' seguido de un espacio. Los comentarios son bienvenidos a través del sitio de GitHub mediante "issues" o "pull requests". También hay una lista de correo electrónico para el tema principal.

Con mucho gusto proporcionaríamos la información en varios idiomas, sin embargo, si hay algún conflicto o inconsistencia entre las traducciones, la versión en inglés es la versión autorizada.
Si este es su proyecto, por favor muestre el estado de su insignia base en la página de su proyecto. El estado de la insignia base se ve así: El nivel de insignia base para el proyecto 12116 es baseline-3 Aquí se explica cómo insertar la insignia base:
Puede mostrar el estado de su insignia base insertando esto en su archivo markdown:
[![OpenSSF Baseline](https://www.bestpractices.dev/projects/12116/baseline)](https://www.bestpractices.dev/projects/12116)
o insertando esto en su HTML:
<a href="https://www.bestpractices.dev/projects/12116"><img src="https://www.bestpractices.dev/projects/12116/baseline"></a>


Estos son los criterios de Nivel Base 2. Estos criterios son de la versión base v2025.10.10 con texto de criterios actualizado de la versión v2026.02.19. Los criterios que son nuevos en la versión v2026.02.19 están etiquetados como "futuros" y comenzarán a aplicarse a partir del 2026-06-01. Por favor, proporcione respuestas a los criterios "futuros" antes de esa fecha.

Baseline Series: Nivel Base 1 Nivel Base 2 Nivel Base 3

        

 Fundamentos

  • General

    Tenga en cuenta que otros proyectos pueden usar el mismo nombre.

    BookStack stores your team's knowledge — but AI assistants can't access it without an integration. BookStack MCP Server bridges that gap, connecting AI assistants (Claude Desktop, LibreChat, and any MCP-compatible client) directly to your BookStack instance so they can search, read, and manage your documentation through natural language.

    Por favor use formato de expresión de licencia SPDX; los ejemplos incluyen "Apache-2.0", "BSD-2-Clause", "BSD-3-Clause", "GPL-2.0+", "LGPL-3.0+", "MIT" y "(BSD-2-Clause OR Ruby)". No incluya comillas simples o comillas dobles.
    Si hay más de un lenguaje, enumérelos como valores separados por comas (los espacios son opcionales) y ordénelos de más a menos usado. Si hay una lista larga, por favor enumere al menos los tres primeros más comunes. Si no hay lenguaje (por ejemplo, este es un proyecto solo de documentación o solo de pruebas), use el carácter único "-". Por favor use una capitalización convencional para cada lenguaje, por ejemplo, "JavaScript".
    La Common Platform Enumeration (CPE) es un esquema de nomenclatura estructurado para sistemas de tecnología de la información, software y paquetes. Se utiliza en varios sistemas y bases de datos al reportar vulnerabilidades.

 Controles 19/19

  • Controles


    Cuando una tarea de CI/CD se ejecuta sin permisos especificados, el sistema de CI/CD DEBE establecer por defecto los permisos de la tarea a los permisos más bajos otorgados en el pipeline. [OSPS-AC-04.01]
    Configure las configuraciones del proyecto para asignar los permisos más bajos disponibles a nuevos pipelines por defecto, otorgando permisos adicionales solo cuando sea necesario para tareas específicas.

    All workflows declare permissions: read-all at the top level, establishing read-only as the baseline for every job. Individual jobs that require write access (e.g. pushing to GHCR, creating git tags) override only the specific permissions they need at the job level. GitHub Actions honours the most restrictive scope when no job-level override is present, so any task without explicit permissions inherits the read-all baseline rather than the default broad token permissions.



    Cuando se crea un lanzamiento oficial, ese lanzamiento DEBE ser asignado un identificador de versión único. [OSPS-BR-02.01]
    Asigne un identificador de versión único a cada lanzamiento producido por el proyecto, siguiendo una convención de nomenclatura o esquema de numeración consistente. Los ejemplos incluyen SemVer, CalVer o ID de commit de git.

    Every release is tagged with a unique semantic version identifier (e.g. v2.5.6) derived from the version field in packages/stdio/package.json. The CI/CD pipeline (docker-publish.yml) reads this value at merge time, asserts the version tag does not already exist in the registry, and creates the git tag only after the multi-arch Docker manifest is verified. Attempting to release a version that already exists in GHCR causes the pipeline to fail, enforcing uniqueness.



    Cuando se crea un lanzamiento oficial, ese lanzamiento DEBE contener un registro descriptivo de modificaciones funcionales y de seguridad. [OSPS-BR-04.01]
    Asegúrese de que todos los lanzamientos incluyan un registro de cambios descriptivo. Se recomienda asegurar que el registro de cambios sea legible por humanos e incluya detalles más allá de los mensajes de commit, como descripciones del impacto de seguridad o relevancia para diferentes casos de uso. Para asegurar la legibilidad automática, coloque el contenido bajo un encabezado markdown como "## Changelog".

    Each release produces a GitHub Release (automated via the merge job in docker-publish.yml) with notes extracted from the corresponding ## [X.Y.Z] section of CHANGELOG.md. The changelog follows the Keep a Changelog format and documents changes under categorised headings: Added, Fixed, Security, Dependencies, and Changed. See the v2.5.6 release as an example.



    Cuando un pipeline de construcción y lanzamiento ingiere dependencias, DEBE usar herramientas estandarizadas donde estén disponibles. [OSPS-BR-05.01]
    Use herramientas comunes para su ecosistema, como gestores de paquetes o herramientas de gestión de dependencias para ingerir dependencias en tiempo de construcción. Esto puede incluir usar un archivo de dependencias, archivo de bloqueo o manifiesto para especificar las dependencias requeridas, que luego son incorporadas por el sistema de construcción.

    The build pipeline uses npm ci — the standardized, deterministic install command for Node.js/npm projects. npm ci installs exclusively from package-lock.json, ensuring exact, reproducible dependency versions across all CI runs. This is the npm-recommended practice for automated environments over npm install.



    Cuando se crea un lanzamiento oficial, ese lanzamiento DEBE estar firmado o registrado en un manifiesto firmado que incluya los hashes criptográficos de cada activo. [OSPS-BR-06.01]
    Firme todos los activos de software lanzados en tiempo de construcción con una firma criptográfica o atestaciones, como firma GPG o PGP, firmas Sigstore, proveniencia SLSA, o VSAs SLSA. Incluya los hashes criptográficos de cada activo en un manifiesto firmado o archivo de metadatos.

    Docker images are published to GHCR with SLSA Level 2 provenance attestations generated by actions/attest-build-provenance during each post-merge build. The attestation records the builder identity, source commit SHA, and a signed manifest of the image digests, anchored to the GitHub Actions OIDC token. The attestation is stored in the repository's attestation log and can be verified with gh attestation verify.



    Cuando el proyecto ha realizado un lanzamiento, la documentación del proyecto DEBE incluir una descripción de cómo el proyecto selecciona, obtiene y rastrea sus dependencias. [OSPS-DO-06.01]
    Se recomienda publicar esta información junto con la documentación técnica y de diseño del proyecto en un recurso públicamente visible como el repositorio de código fuente, sitio web del proyecto u otro canal.

    Dependencies are declared in packages/core/package.json and packages/stdio/package.json and locked in package-lock.json. All installs use npm ci for reproducible builds. Updates are automated via Dependabot (weekly schedule for npm, GitHub Actions, and Docker base image). Vulnerability tracking uses npm audit on every CI build, OSV Scanner, and Trivy image scanning. See the Dependency Management section in README.md.



    (Criterio futuro) La documentación del proyecto DEBE incluir instrucciones sobre cómo compilar el software, incluyendo las bibliotecas, marcos, SDK y dependencias necesarias. [OSPS-DO-07.01]
    Se recomienda publicar esta información junto con la documentación para colaboradores del proyecto, por ejemplo en CONTRIBUTING.md u otra documentación de tareas para desarrolladores. También puede documentarse utilizando objetivos de Makefile u otros scripts de automatización.

    Build instructions are documented in README.md under "Quick Start" (prerequisites: Node.js 18+, npm; steps: npm install, npm run build) and in CONTRIBUTING.md under "Getting started". Required dependencies are listed in packages/core/package.json and packages/stdio/package.json. The project has no system-level library requirements beyond Node.js and npm.



    Mientras esté activo, la documentación del proyecto DEBE incluir una lista de miembros del proyecto con acceso a recursos sensibles. [OSPS-GV-01.01]
    Documente los participantes del proyecto y sus roles a través de artefactos tales como members.md, governance.md, maintainers.md, o archivo similar dentro del repositorio de código fuente del proyecto. Esto puede ser tan simple como incluir nombres o identificadores de cuenta en una lista de mantenedores, o más complejo dependiendo de la gobernanza del proyecto.

    MAINTAINERS.md in the repository root lists all project members with access to sensitive resources (GitHub repo admin, GHCR registry, GitHub Actions secrets). The project has a single maintainer: @paradoxbound. No manually stored secrets exist — the only credential used by CI is the auto-provisioned GITHUB_TOKEN



    Mientras esté activo, la documentación del proyecto DEBE incluir descripciones de los roles y responsabilidades para los miembros del proyecto. [OSPS-GV-01.02]
    Documente los participantes del proyecto y sus roles a través de artefactos tales como members.md, governance.md, maintainers.md, o archivo similar dentro del repositorio de código fuente del proyecto.

    MAINTAINERS.md describes the project's single Maintainer role held by @paradoxbound, with responsibilities covering repository administration, release management (approving and merging PRs, triggering the release pipeline), and ownership of sensitive resources (GitHub repo, GHCR registry, Actions secrets).



    Mientras esté activo, la documentación del proyecto DEBE incluir una guía para contribuidores de código que incluya requisitos para contribuciones aceptables. [OSPS-GV-03.02]
    Extienda el CONTRIBUTING.md o los contenidos de CONTRIBUTING/ en la documentación del proyecto para delinear los requisitos para contribuciones aceptables, incluyendo estándares de codificación, requisitos de pruebas y pautas de envío para contribuidores de código. Se recomienda que esta guía sea la fuente de verdad tanto para contribuidores como para aprobadores.

    CONTRIBUTING.md in the repository root provides a contribution guide covering: repository setup and build steps, project structure, the pull request workflow (fork → branch from main → pass type-check and build → open PR), how to run tests, security vulnerability reporting, and the code style requirements (TypeScript strict mode, native fetch only, Zod schemas for inputs, specific error handling patterns). These constitute the requirements for acceptable contributions.



    Mientras esté activo, el sistema de control de versiones DEBE requerir que todos los contribuidores de código afirmen que están legalmente autorizados para hacer las contribuciones asociadas en cada commit. [OSPS-LE-01.01]
    Incluya un DCO en el repositorio del proyecto, requiriendo que los contribuidores de código afirmen que están legalmente autorizados para confirmar las contribuciones asociadas en cada commit. Use una verificación de estado para asegurar que se haga la afirmación. Un CLA también satisface este requisito. Algunos sistemas de control de versiones, como GitHub, pueden incluir esto en los términos de servicio de la plataforma.

    All pull requests are checked by a GitHub Actions DCO workflow (dco.yml) that fails if any commit lacks a Signed-off-by: line. The DCO sign-off check is required before merging. Contributors are instructed to use git commit -s in CONTRIBUTING.md. This implements the Developer Certificate of Origin, asserting legal authorisation to contribute under the MIT License.



    Cuando se realiza un commit a la rama principal, cualquier verificación de estado automatizada para commits DEBE pasar o ser omitida manualmente. [OSPS-QA-03.01]
    Configure el sistema de control de versiones del proyecto para requerir que todas las verificaciones de estado automatizadas pasen o requieran reconocimiento manual antes de que un commit pueda fusionarse en la rama principal. Se recomienda que cualquier verificación de estado opcional NO esté configurada como un requisito de pasar o fallar que los aprobadores puedan estar tentados a omitir.

    GitHub branch protection on main requires all status checks to pass before merging. The required checks are: test (functional-tests.yml), build-and-push (docker-publish.yml), and pre-merge-cd-check (docker-publish.yml). "Do not allow bypassing the above settings" is enabled, preventing administrators from merging without passing checks. Bypasses are therefore explicit and require removing branch protection rules, which is itself a logged, auditable action.



    Antes de que se acepte un commit, los pipelines de CI/CD del proyecto DEBEN ejecutar al menos un conjunto de pruebas automatizado para asegurar que los cambios cumplan las expectativas. [OSPS-QA-06.01]
    Las pruebas automatizadas deben ejecutarse antes de cada fusión en la rama principal. El conjunto de pruebas debe ejecutarse en un pipeline de CI/CD y los resultados deben ser visibles para todos los contribuidores. El conjunto de pruebas debe ejecutarse en un entorno consistente y debe ejecutarse de manera que permita a los contribuidores ejecutar las pruebas localmente. Ejemplos de conjuntos de pruebas incluyen pruebas unitarias, pruebas de integración y pruebas de extremo a extremo.

    The functional-tests.yml workflow runs on every pull request targeting main and on every push to main. It executes npm run build, npm run type-check, and npm test (the full vitest suite including unit tests, fuzz tests, and where credentials are available, functional tests against a live BookStack instance). This check is a required status check — PRs cannot merge unless it passes.



    Cuando el proyecto ha realizado un lanzamiento, la documentación del proyecto DEBE incluir documentación de diseño que demuestre todas las acciones y actores dentro del sistema. [OSPS-SA-01.01]
    Incluya diseños en la documentación del proyecto que expliquen las acciones y los actores. Los actores incluyen cualquier subsistema o entidad que pueda influir en otro segmento del sistema. Asegúrese de que esto se actualice para nuevas características o cambios importantes.

    The README Architecture section documents all actors (MCP client, bookstack-mcp server, BookStack API client, BookStack instance, operator) in a table, and includes an ASCII data flow diagram showing the complete request/response path through the system — from MCP client through stdio transport, Zod validation, the BookStack HTTP client, and back. Key design decisions (native fetch, write-gate, Zod schemas, stdio transport, monorepo split) are also documented.



    Cuando el proyecto haya realizado un lanzamiento, la documentación del proyecto DEBE incluir descripciones de todas las interfaces de software externas de los activos de software liberados. [OSPS-SA-02.01]
    Documente todas las interfaces de software (APIs) de los activos de software liberados, explicando cómo los usuarios pueden interactuar con el software y qué datos se esperan o se producen. Asegúrese de que esto se actualice para nuevas funcionalidades o cambios incompatibles.

    The README documents all external software interfaces: the MCP tool interface (45 tools listed with descriptions), the environment variable configuration interface, the BookStack REST API dependency (with authentication format), and the stdio transport interface as consumed by each supported MCP client (Claude Desktop and LibreChat).



    Cuando el proyecto haya realizado un lanzamiento, el proyecto DEBE realizar una evaluación de seguridad para comprender los problemas de seguridad potenciales más probables e impactantes que podrían ocurrir dentro del software. [OSPS-SA-03.01]
    Realizar una evaluación de seguridad informa tanto a los miembros del proyecto como a los consumidores posteriores que el proyecto comprende qué problemas podrían surgir dentro del software. Comprender qué amenazas podrían materializarse ayuda al proyecto a gestionar y abordar el riesgo. Esta información es útil para los consumidores posteriores para demostrar la competencia y prácticas de seguridad del proyecto. Asegúrese de que esto se actualice para nuevas funcionalidades o cambios incompatibles.

    SECURITY.md contains a Security Assessment section documenting six threats with severity ratings (HIGH/MEDIUM/LOW) and existing mitigations: API credential exposure, unintended write operations, prompt injection via BookStack content, insecure transport (now enforced at startup), supply chain compromise, and SSRF via BOOKSTACK_BASE_URL.



    Mientras esté activo, la documentación del proyecto DEBE incluir una política para la divulgación coordinada de vulnerabilidades (CVD), con un plazo de tiempo claro para la respuesta. [OSPS-VM-01.01]
    Cree un archivo SECURITY.md en la raíz del directorio, describiendo la política del proyecto para la divulgación coordinada de vulnerabilidades. Incluya un método para reportar vulnerabilidades. Establezca expectativas sobre cómo el proyecto responderá y abordará los problemas reportados.

    SECURITY.md documents a coordinated vulnerability disclosure policy: reporters use GitHub's private Security Advisory feature, can expect acknowledgement within 7 days and a patch or mitigation within 30 days where feasible, and will be credited in the advisory unless they request otherwise.



    Mientras esté activo, la documentación del proyecto DEBE proporcionar un medio para el reporte privado de vulnerabilidades directamente a los contactos de seguridad dentro del proyecto. [OSPS-VM-03.01]
    Proporcione un medio para que los investigadores de seguridad reporten vulnerabilidades de forma privada al proyecto. Esto puede ser una dirección de correo electrónico dedicada, un formulario web, herramientas especializadas del VCS, direcciones de correo electrónico para contactos de seguridad, u otros métodos.

    SECURITY.md directs reporters to use GitHub's private Security Advisory feature (https://github.com/paradoxbound/bookstack-mcp/security/advisories/new), which routes directly to the maintainer without public disclosure. The README also links to SECURITY.md via the Security Considerations section.



    Mientras esté activo, la documentación del proyecto DEBE publicar públicamente datos sobre las vulnerabilidades descubiertas. [OSPS-VM-04.01]
    Proporcione información sobre vulnerabilidades conocidas en un canal público predecible, como una entrada CVE, publicación de blog u otro medio. En la medida de lo posible, esta información debe incluir la(s) versión(es) afectada(s), cómo un consumidor puede determinar si es vulnerable, e instrucciones para la mitigación o remediación.

    SECURITY.md states that once a fix is released, the GitHub Security Advisory will be published publicly and a CVE requested where appropriate, and that security fixes are recorded in CHANGELOG.md under the relevant release.



Estos datos están disponibles bajo el Acuerdo de Licencia de Datos de la Comunidad – Permisivo, Versión 2.0 (CDLA-Permissive-2.0). Esto significa que un Destinatario de Datos puede compartir los Datos, con o sin modificaciones, siempre que el Destinatario de Datos ponga a disposición el texto de este acuerdo con los Datos compartidos. Por favor, acredite a Jim Bailey y a los colaboradores de la insignia de Mejores Prácticas de OpenSSF.

Entrada de insignia del proyecto propiedad de: Jim Bailey.
Entrada creada el 2026-03-08 10:20:21 UTC, última actualización el 2026-03-10 14:13:23 UTC. Última obtención de la insignia de nivel básico el 2026-03-10 14:13:23 UTC.