{
  "$comment": "Generated by scripts/ci/build-projects.mjs from src/content/profile/projects.yaml. Do not edit by hand. Consumers: filter to the projects you actually publish.",
  "generator": "https://github.com/jmrplens/jmrp.io",
  "projects": [
    {
      "id": "gitlab-mcp-server",
      "name": "GitLab MCP Server",
      "status": "active",
      "schemaType": "SoftwareApplication",
      "applicationCategory": "DeveloperApplication",
      "applicationSubCategory": "Version Control",
      "kicker": "MCP server · AI tooling",
      "language": "Go",
      "license": "MIT",
      "licenseUrl": "https://opensource.org/licenses/MIT",
      "operatingSystem": "Linux, macOS, Windows",
      "repo": "https://github.com/jmrplens/gitlab-mcp-server",
      "docs": "https://docs.jmrp.io/gitlab-mcp-server/",
      "docsEs": "https://docs.jmrp.io/gitlab-mcp-server/es/",
      "description": "Model Context Protocol server that exposes more than 850 GitLab operations as AI-accessible tools on a Free or self-managed instance, and over 1,000 on Ultimate.",
      "descriptionEs": "Servidor Model Context Protocol que expone más de 850 operaciones de GitLab como herramientas accesibles para asistentes de IA en una instancia Free o autoalojada, y más de 1.000 en Ultimate.",
      "keywords": [
        "Model Context Protocol",
        "GitLab",
        "Go",
        "DevOps"
      ],
      "sameAs": [
        "https://github.com/jmrplens/gitlab-mcp-server",
        "https://www.npmjs.com/package/@jmrp.io/gitlab-mcp-server",
        "https://pypi.org/project/jmrplens-gitlab-mcp-server/",
        "https://www.nuget.org/packages/gitlab-mcp-server",
        "https://glama.ai/mcp/servers/jmrplens/gitlab-mcp-server",
        "https://cursor.directory/plugins/gitlab-mcp-server",
        "https://mcp.so/servers/gitlab-mcp-server-jmrplens",
        "https://lobehub.com/mcp/jmrplens-gitlab-mcp-server",
        "https://www.pulsemcp.com/servers/jmrplens-gitlab",
        "https://mcpservers.org/servers/jmrplens/gitlab-mcp-server",
        "https://pickmcp.com/servers/jmrplens/gitlab-mcp-server",
        "https://mcpvault.io/servers/gitlab-mcp-server",
        "https://mcptoplist.com/server/io.github.jmrplens%2Fgitlab-mcp-server",
        "https://github.com/microsoft/winget-pkgs/tree/master/manifests/j/jmrplens/gitlab-mcp-server",
        "https://hub.docker.com/r/jmrplens/gitlab-mcp-server",
        "https://doi.org/10.5281/zenodo.21215045",
        "https://pkg.go.dev/github.com/jmrplens/gitlab-mcp-server/v3",
        "https://deps.dev/go/github.com%2Fjmrplens%2Fgitlab-mcp-server%2Fv2",
        "https://libraries.io/go/github.com%2Fjmrplens%2Fgitlab-mcp-server",
        "https://github.com/jmrplens/gitlab-mcp-server/pkgs/container/gitlab-mcp-server",
        "https://smithery.ai/servers/jmrp/gitlab-mcp-server",
        "https://mcpmarket.com/server/gitlab-32",
        "https://enterprisedna.co/directories/mcp/jmrplens-gitlab-mcp-server",
        "https://mcpbeat.com/mcp-servers/jmrplens/gitlab-mcp-server/",
        "https://hvtracker.net/agents/gitlab-mcp-server/"
      ],
      "endpointSameAs": [
        "https://verifymcp.io/servers/jmrplens-gitlab-mcp-server/gitlab",
        "https://mcpmetrics.io/servers/io-github-jmrplens-gitlab-mcp-server"
      ]
    },
    {
      "id": "phonometry",
      "name": "phonometry",
      "status": "active",
      "schemaType": "SoftwareApplication",
      "applicationCategory": "DeveloperApplication",
      "applicationSubCategory": "Scientific/Engineering",
      "kicker": "Acoustics · DSP",
      "language": "Python",
      "license": "MIT",
      "licenseUrl": "https://opensource.org/licenses/MIT",
      "operatingSystem": "Linux, macOS, Windows",
      "repo": "https://github.com/jmrplens/phonometry",
      "docs": "https://docs.jmrp.io/phonometry/",
      "docsEs": "https://docs.jmrp.io/phonometry/es/",
      "description": "Acoustic measurement, analysis and prediction for Python: sound level metrology, psychoacoustics, room and building acoustics, materials, vibration, environmental and transport noise, underwater acoustics, electroacoustics and wave simulation, with 1893 CI-enforced conformance checks across 111 domains and 523 standards.",
      "descriptionEs": "Medición, análisis y predicción acústica para Python: metrología de niveles sonoros, psicoacústica, acústica de salas y edificación, materiales, vibración, ruido ambiental y de transporte, acústica subacuática, electroacústica y simulación de ondas, con 1893 comprobaciones de conformidad en CI sobre 111 dominios y 523 normas.",
      "keywords": [
        "Acoustics",
        "Signal processing",
        "Sound level meter",
        "Octave band",
        "Python"
      ],
      "sameAs": [
        "https://github.com/jmrplens/phonometry",
        "https://pypi.org/project/phonometry/",
        "https://doi.org/10.5281/zenodo.21215280"
      ]
    },
    {
      "id": "cs-routeros-bouncer",
      "name": "cs-routeros-bouncer",
      "status": "active",
      "schemaType": "SoftwareApplication",
      "applicationCategory": "SecurityApplication",
      "kicker": "Security · networking",
      "language": "Go",
      "license": "MIT",
      "licenseUrl": "https://opensource.org/licenses/MIT",
      "operatingSystem": "Linux, macOS, Windows, FreeBSD",
      "repo": "https://github.com/jmrplens/cs-routeros-bouncer",
      "docs": "https://docs.jmrp.io/cs-routeros-bouncer/",
      "description": "CrowdSec bouncer for MikroTik RouterOS: automatic firewall management via the RouterOS API",
      "descriptionEs": "Bouncer de CrowdSec para MikroTik RouterOS: gestión automática del firewall mediante la API de RouterOS",
      "keywords": [
        "Network security",
        "RouterOS",
        "Firewall",
        "Intrusion detection system",
        "Go"
      ],
      "sameAs": [
        "https://github.com/jmrplens/cs-routeros-bouncer",
        "https://app.crowdsec.net/hub/author/jmrplens/remediation-components/cs-routeros-bouncer"
      ]
    },
    {
      "id": "mikroscope",
      "name": "mikroscope",
      "status": "active",
      "schemaType": "SoftwareApplication",
      "applicationCategory": "DeveloperApplication",
      "applicationSubCategory": "Monitoring",
      "kicker": "Telemetry · MikroTik RouterOS",
      "language": "Go",
      "license": "MIT",
      "licenseUrl": "https://opensource.org/licenses/MIT",
      "operatingSystem": "Linux, macOS, Windows",
      "repo": "https://github.com/jmrplens/mikroscope",
      "docs": "https://docs.jmrp.io/mikroscope/",
      "docsEs": "https://docs.jmrp.io/mikroscope/es/",
      "description": "Sub-second kernel telemetry from inside a MikroTik router, with the cost of the observer measured rather than claimed.",
      "descriptionEs": "Telemetría de kernel por debajo del segundo desde dentro de un router MikroTik, con el coste del observador medido y no prometido.",
      "keywords": [
        "RouterOS",
        "MikroTik",
        "Telemetry",
        "Linux kernel",
        "Go"
      ],
      "sameAs": [
        "https://github.com/jmrplens/mikroscope",
        "https://github.com/jmrplens/mikroscope/pkgs/container/mikroscope-agent",
        "https://hub.docker.com/r/jmrplens/mikroscope-agent",
        "https://hub.docker.com/r/jmrplens/mikroscope",
        "https://github.com/jmrplens/mikroscope/pkgs/container/mikroscope",
        "https://pkg.go.dev/github.com/jmrplens/mikroscope"
      ]
    },
    {
      "id": "Cloudflare-DNS-Updater",
      "name": "Cloudflare DNS Updater",
      "status": "active",
      "schemaType": "SoftwareApplication",
      "applicationCategory": "UtilitiesApplication",
      "applicationSubCategory": "Networking",
      "kicker": "Networking · DDNS",
      "language": "Bash",
      "license": "MIT",
      "licenseUrl": "https://opensource.org/licenses/MIT",
      "operatingSystem": "Linux, macOS, BSD",
      "repo": "https://github.com/jmrplens/Cloudflare-DNS-Updater",
      "docs": "https://docs.jmrp.io/Cloudflare-DNS-Updater/",
      "description": "Bash-based dynamic DNS updater that keeps Cloudflare A and AAAA records pointed at your current public IP.",
      "descriptionEs": "Cliente de DNS dinámico en Bash que mantiene los registros A y AAAA de Cloudflare apuntando a tu IP pública actual.",
      "keywords": [
        "Dynamic DNS",
        "Cloudflare",
        "GNU Bash",
        "IPv6"
      ],
      "sameAs": [
        "https://github.com/jmrplens/Cloudflare-DNS-Updater"
      ]
    },
    {
      "id": "libgen-mcp",
      "name": "libgen-mcp",
      "status": "active",
      "schemaType": "SoftwareApplication",
      "applicationCategory": "DeveloperApplication",
      "applicationSubCategory": "Search Tools",
      "kicker": "MCP server · AI tooling",
      "language": "Go",
      "license": "MIT",
      "licenseUrl": "https://opensource.org/licenses/MIT",
      "operatingSystem": "Linux, macOS, Windows",
      "repo": "https://github.com/jmrplens/libgen-mcp",
      "docs": "https://docs.jmrp.io/libgen-mcp/",
      "description": "MCP server for federated search, citation and reading of books, research papers, comics, magazines and standards across the Library Genesis catalog and open-access sources. No account required.",
      "descriptionEs": "Servidor MCP para búsqueda federada, cita y lectura de libros, artículos de investigación, cómics, revistas y normas en el catálogo de Library Genesis y en fuentes de acceso abierto. Sin necesidad de cuenta.",
      "keywords": [
        "Model Context Protocol",
        "Library Genesis",
        "Digital library",
        "Open access",
        "Go"
      ],
      "sameAs": [
        "https://github.com/jmrplens/libgen-mcp",
        "https://www.npmjs.com/package/@jmrp.io/libgen-mcp",
        "https://glama.ai/mcp/servers/jmrplens/libgen-mcp",
        "https://www.nuget.org/packages/libgen-mcp",
        "https://pypi.org/project/libgen-mcp/",
        "https://cursor.directory/plugins/libgen-mcp",
        "https://lobehub.com/mcp/jmrplens-libgen-mcp",
        "https://mcp.so/servers/libgen-mcp-d62341",
        "https://pickmcp.com/servers/jmrplens/libgen-mcp",
        "https://mcpvault.io/servers/libgen-mcp",
        "https://mcptoplist.com/server/io.github.jmrplens%2Flibgen-mcp",
        "https://hub.docker.com/r/jmrplens/libgen-mcp",
        "https://pkg.go.dev/github.com/jmrplens/libgen-mcp/v2",
        "https://smithery.ai/servers/jmrp/libgen-mcp",
        "https://github.com/jmrplens/libgen-mcp/pkgs/container/libgen-mcp",
        "https://deepwiki.com/jmrplens/libgen-mcp",
        "https://mcpbeat.com/mcp-servers/jmrplens/libgen-mcp/"
      ],
      "endpointSameAs": [
        "https://verifymcp.io/servers/jmrplens-libgen-mcp/libgen",
        "https://mcpmetrics.io/servers/io-github-jmrplens-libgen-mcp"
      ]
    },
    {
      "id": "ghchronicle",
      "name": "ghchronicle",
      "status": "active",
      "schemaType": "SoftwareApplication",
      "applicationCategory": "DeveloperApplication",
      "applicationSubCategory": "Monitoring",
      "kicker": "Collector · GitHub observability",
      "language": "Go",
      "license": "MIT",
      "licenseUrl": "https://opensource.org/licenses/MIT",
      "operatingSystem": "Linux, macOS, Windows",
      "repo": "https://github.com/jmrplens/ghchronicle",
      "docs": "https://docs.jmrp.io/ghchronicle/",
      "docsEs": "https://docs.jmrp.io/ghchronicle/es/",
      "description": "Collects every metric GitHub exposes about an account and keeps it with the date it happened.",
      "descriptionEs": "Recoge todas las métricas que GitHub expone sobre una cuenta y las guarda con la fecha en que ocurrieron.",
      "keywords": [
        "GitHub",
        "Time series",
        "InfluxDB",
        "Grafana",
        "Go"
      ],
      "sameAs": [
        "https://github.com/jmrplens/ghchronicle",
        "https://github.com/jmrplens/ghchronicle/pkgs/container/ghchronicle",
        "https://hub.docker.com/r/jmrplens/ghchronicle",
        "https://github.com/marketplace/actions/ghchronicle",
        "https://pkg.go.dev/github.com/jmrplens/ghchronicle/v2"
      ]
    },
    {
      "id": "TFG-TFM_EPS",
      "name": "TFG-TFM_EPS",
      "status": "active",
      "schemaType": "SoftwareSourceCode",
      "language": "LaTeX",
      "license": "MIT",
      "licenseUrl": "https://opensource.org/licenses/MIT",
      "repo": "https://github.com/jmrplens/TFG-TFM_EPS",
      "docs": "https://github.com/jmrplens/TFG-TFM_EPS#readme",
      "description": "LaTeX template for Bachelor's and Master's theses at the University of Alicante (EPS), with an automated CI build pipeline.",
      "descriptionEs": "Plantilla LaTeX para Trabajos Fin de Grado y Fin de Máster en la Universidad de Alicante (EPS), con pipeline de compilación automatizado en CI.",
      "keywords": [
        "LaTeX",
        "Thesis",
        "University of Alicante"
      ],
      "sameAs": [
        "https://github.com/jmrplens/TFG-TFM_EPS"
      ]
    },
    {
      "id": "portainer-mcp",
      "name": "portainer-mcp",
      "status": "active",
      "schemaType": "SoftwareApplication",
      "applicationCategory": "DeveloperApplication",
      "applicationSubCategory": "Container Management",
      "language": "Go",
      "license": "MIT",
      "licenseUrl": "https://opensource.org/licenses/MIT",
      "repo": "https://github.com/jmrplens/portainer-mcp",
      "docs": "https://github.com/jmrplens/portainer-mcp#readme",
      "description": "MCP server for Portainer: 1:1 coverage of the Portainer REST API across dynamic, meta and individual tool surfaces.",
      "descriptionEs": "Servidor MCP para Portainer: cobertura 1:1 de la API REST de Portainer en superficies de herramientas dinámicas, meta e individuales.",
      "keywords": [
        "Model Context Protocol",
        "Portainer",
        "Docker",
        "REST",
        "Go"
      ],
      "sameAs": [
        "https://github.com/jmrplens/portainer-mcp"
      ]
    },
    {
      "id": "A-Lab",
      "name": "A-Lab",
      "status": "archived",
      "schemaType": "SoftwareApplication",
      "applicationCategory": "DeveloperApplication",
      "applicationSubCategory": "Scientific/Engineering",
      "language": "MATLAB",
      "license": "GPL-3.0",
      "licenseUrl": "https://www.gnu.org/licenses/gpl-3.0.html",
      "repo": "https://github.com/jmrplens/A-Lab",
      "docs": "https://github.com/jmrplens/A-Lab#readme",
      "description": "Matlab-based software for measuring acoustic parameters and experiments.",
      "descriptionEs": "Software en MATLAB para la medición de parámetros acústicos y de experimentos.",
      "keywords": [
        "Acoustics",
        "Acoustic impedance",
        "MATLAB"
      ],
      "sameAs": [
        "https://github.com/jmrplens/A-Lab",
        "https://www.mathworks.com/matlabcentral/fileexchange/93180-a-lab"
      ]
    },
    {
      "id": "mastodon_official_profiles",
      "name": "mastodon_official_profiles",
      "status": "archived",
      "schemaType": "SoftwareSourceCode",
      "language": "Python",
      "license": "AGPL-3.0",
      "licenseUrl": "https://www.gnu.org/licenses/agpl-3.0.html",
      "repo": "https://github.com/jmrplens/mastodon_official_profiles",
      "docs": "https://github.com/jmrplens/mastodon_official_profiles#readme",
      "description": "List of official profiles on Mastodon.",
      "descriptionEs": "Lista de perfiles oficiales en Mastodon.",
      "keywords": [
        "Mastodon",
        "Fediverse",
        "Python"
      ],
      "sameAs": [
        "https://github.com/jmrplens/mastodon_official_profiles"
      ]
    },
    {
      "id": "SetFigPaper",
      "name": "SetFigPaper",
      "status": "archived",
      "schemaType": "SoftwareSourceCode",
      "language": "MATLAB",
      "license": "GPL-3.0",
      "licenseUrl": "https://www.gnu.org/licenses/gpl-3.0.html",
      "repo": "https://github.com/jmrplens/SetFigPaper",
      "docs": "https://github.com/jmrplens/SetFigPaper#readme",
      "description": "Function to modify the style of the graphical representations of MATLAB.",
      "descriptionEs": "Función para modificar el estilo de las representaciones gráficas de MATLAB.",
      "keywords": [
        "Data visualization",
        "MATLAB"
      ],
      "sameAs": [
        "https://github.com/jmrplens/SetFigPaper",
        "https://www.mathworks.com/matlabcentral/fileexchange/75507-setfigpaper"
      ]
    },
    {
      "id": "LoVE-BASS",
      "name": "LoVE-BASS",
      "status": "archived",
      "schemaType": "SoftwareApplication",
      "applicationCategory": "DeveloperApplication",
      "applicationSubCategory": "Scientific/Engineering",
      "language": "MATLAB",
      "license": "GPL-3.0",
      "licenseUrl": "https://www.gnu.org/licenses/gpl-3.0.html",
      "repo": "https://github.com/jmrplens/LoVE-BASS",
      "docs": "https://github.com/jmrplens/LoVE-BASS#readme",
      "description": "Loudspeakers for Vented Enclosures: a Backwards Approach for Speaker Selection. MATLAB (App Designer).",
      "descriptionEs": "Loudspeakers for Vented Enclosures: un enfoque inverso para la selección de altavoces. MATLAB (App Designer).",
      "keywords": [
        "Loudspeaker",
        "Loudspeaker enclosure",
        "Acoustics"
      ],
      "sameAs": [
        "https://github.com/jmrplens/LoVE-BASS"
      ]
    },
    {
      "id": "FDTDexamples",
      "name": "FDTDexamples",
      "status": "archived",
      "schemaType": "SoftwareSourceCode",
      "language": "MATLAB",
      "license": "GPL-3.0",
      "licenseUrl": "https://www.gnu.org/licenses/gpl-3.0.html",
      "repo": "https://github.com/jmrplens/FDTDexamples",
      "docs": "https://github.com/jmrplens/FDTDexamples#readme",
      "description": "Simple and complex FDTD aeroacoustics models for MATLAB 2019b or newer.",
      "descriptionEs": "Modelos FDTD de aeroacústica simples y complejos para MATLAB 2019b o superior.",
      "keywords": [
        "Finite-difference time-domain method",
        "Aeroacoustics",
        "MATLAB"
      ],
      "sameAs": [
        "https://github.com/jmrplens/FDTDexamples",
        "https://www.mathworks.com/matlabcentral/fileexchange/72883-fdtdexamples"
      ]
    },
    {
      "id": "CATT2Matlab",
      "name": "CATT2Matlab",
      "status": "archived",
      "schemaType": "SoftwareApplication",
      "applicationCategory": "DeveloperApplication",
      "applicationSubCategory": "Scientific/Engineering",
      "language": "MATLAB",
      "license": "GPL-3.0",
      "licenseUrl": "https://www.gnu.org/licenses/gpl-3.0.html",
      "repo": "https://github.com/jmrplens/CATT2Matlab",
      "docs": "https://github.com/jmrplens/CATT2Matlab#readme",
      "description": "Application to handle the information generated by CATT-Acoustic 8.",
      "descriptionEs": "Aplicación para manejar la información generada por CATT-Acoustic 8.",
      "keywords": [
        "Acoustics",
        "Reverberation",
        "MATLAB"
      ],
      "sameAs": [
        "https://github.com/jmrplens/CATT2Matlab",
        "https://www.mathworks.com/matlabcentral/fileexchange/64398-catt2matlab"
      ]
    },
    {
      "id": "FFT2octave",
      "name": "FFT2octave",
      "status": "archived",
      "schemaType": "SoftwareSourceCode",
      "language": "MATLAB",
      "license": "GPL-3.0",
      "licenseUrl": "https://www.gnu.org/licenses/gpl-3.0.html",
      "repo": "https://github.com/jmrplens/FFT2octave",
      "docs": "https://github.com/jmrplens/FFT2octave#readme",
      "description": "Filter FFT data to octave-band and fractional octave-band.",
      "descriptionEs": "Filtra datos de FFT a bandas de octava y de fracción de octava.",
      "keywords": [
        "Signal processing",
        "Fast Fourier transform",
        "Octave band",
        "MATLAB"
      ],
      "sameAs": [
        "https://github.com/jmrplens/FFT2octave"
      ]
    },
    {
      "id": "getANSIfrequencies",
      "name": "getANSIfrequencies",
      "status": "archived",
      "schemaType": "SoftwareSourceCode",
      "language": "MATLAB",
      "license": "GPL-3.0",
      "licenseUrl": "https://www.gnu.org/licenses/gpl-3.0.html",
      "repo": "https://github.com/jmrplens/getANSIfrequencies",
      "docs": "https://github.com/jmrplens/getANSIfrequencies#readme",
      "description": "Matlab function to obtain the array of frequencies in octave bands or fractional octave bands.",
      "descriptionEs": "Función de MATLAB que devuelve el array de frecuencias en bandas de octava o de fracción de octava.",
      "keywords": [
        "Octave band",
        "Acoustics",
        "MATLAB"
      ],
      "sameAs": [
        "https://github.com/jmrplens/getANSIfrequencies"
      ]
    },
    {
      "id": "dBFA2Matlab",
      "name": "dBFA2Matlab",
      "status": "archived",
      "schemaType": "SoftwareSourceCode",
      "language": "MATLAB",
      "license": "GPL-3.0",
      "licenseUrl": "https://www.gnu.org/licenses/gpl-3.0.html",
      "repo": "https://github.com/jmrplens/dBFA2Matlab",
      "docs": "https://github.com/jmrplens/dBFA2Matlab#readme",
      "description": "Plots the time-history data exported from dBFA and computes the corrected revised theory.",
      "descriptionEs": "Representa los datos de historia temporal obtenidos con dBFA y calcula la teoría revisada corregida.",
      "keywords": [
        "Acoustics",
        "Sound level meter",
        "MATLAB"
      ],
      "sameAs": [
        "https://github.com/jmrplens/dBFA2Matlab"
      ]
    },
    {
      "id": "MATLAB_Instruments",
      "name": "MATLAB_Instruments",
      "status": "archived",
      "schemaType": "SoftwareSourceCode",
      "language": "MATLAB",
      "license": "GPL-3.0",
      "licenseUrl": "https://www.gnu.org/licenses/gpl-3.0.html",
      "repo": "https://github.com/jmrplens/MATLAB_Instruments",
      "docs": "https://github.com/jmrplens/MATLAB_Instruments#readme",
      "description": "Laboratory instruments control with MATLAB.",
      "descriptionEs": "Control de instrumentos de laboratorio con MATLAB.",
      "keywords": [
        "Measuring instrument",
        "IEEE-488",
        "Data acquisition",
        "MATLAB"
      ],
      "sameAs": [
        "https://github.com/jmrplens/MATLAB_Instruments"
      ]
    },
    {
      "id": "picoScopeMATLAB",
      "name": "picoScopeMATLAB",
      "status": "archived",
      "schemaType": "SoftwareSourceCode",
      "language": "MATLAB",
      "license": "MIT",
      "licenseUrl": "https://opensource.org/licenses/MIT",
      "repo": "https://github.com/jmrplens/picoScopeMATLAB",
      "docs": "https://github.com/jmrplens/picoScopeMATLAB#readme",
      "description": "Library for working with the PicoScope 5000 series (and possibly other models) in MATLAB.",
      "descriptionEs": "Biblioteca para trabajar con la serie PicoScope 5000 (y posiblemente otros modelos) en MATLAB.",
      "keywords": [
        "Oscilloscope",
        "Data acquisition",
        "Measuring instrument",
        "MATLAB"
      ],
      "sameAs": [
        "https://github.com/jmrplens/picoScopeMATLAB"
      ]
    }
  ]
}
