Skip to main content
Glama

jstage-mcp

Un servidor FastMCP stdio que expone la J-STAGE WebAPI como tres herramientas para usar con Claude Desktop.

Para qué sirve

J-STAGE contiene el texto completo de revistas publicadas por sociedades científicas japonesas, y esto busca dentro de los artículos en lugar de en un catálogo. Un término que ningún catalogador eligió como palabra clave sigue siendo localizable si un autor lo usó en un argumento, lo que convierte esto en la vía para conceptos que circulan antes de ser nombrados.

Resuelve un DOI de J-STAGE directamente a su registro, o recorre el espinazo de volúmenes y números de una revista para ver una colección completa.

Ejecuta un término aquí y en cinii-mcp y lee la brecha: una divergencia amplia te dice si tu vocabulario pertenece a la descripción de catálogo o a la prosa del campo, lo cual es un hallazgo sobre la literatura antes de ser un hallazgo en ella.

Related MCP server: Japan Data MCP

Herramientas

Tool

Propósito

jstage_search_articles

Búsqueda de texto completo / autor / título / revista en los artículos de J-STAGE

jstage_list_issues

Espinazo de volúmenes y números para un título, ISSN o cdjournal conocido

jstage_get_article_by_doi

Resuelve un DOI de J-STAGE a su registro completo de artículo

Todas las herramientas devuelven un sobre de respuesta JSON tipado con títulos, autores y nombres de revistas bilingües (inglés / japonés) cuando J-STAGE los proporciona — ver Formato de respuesta más abajo. El requisito de atribución de JST se cumple mediante el campo attribution del sobre, presente en cada respuesta.

Formato de respuesta

Cada herramienta devuelve un sobre de respuesta JSON, construido por mediation.py y definido en response-schema.json. Versión de esquema 2.3.0. El mismo módulo y esquema se incluyen byte-idénticos en toda la familia de servidores, de modo que un sobre de un servidor puede ser leído por un consumidor escrito para otro.

El sobre informa de cómo se realizó la búsqueda, no solo de lo que encontró:

  • searched_for — en operaciones de búsqueda, el término realmente enviado, su escritura detectada y el modo de coincidencia, elevados a la parte superior del sobre para que un cliente intermediario no pueda eliminarlo. Las operaciones de recuperación (jstage_get_article_by_doi, jstage_list_issues) lo omiten: se les entregó un identificador y no eligieron ningún término.

  • queryinput_terms tal como se proporcionaron, normalized tal como se enviaron, y la script detectada. Este par es el registro de cualquier transformación realizada entre el idioma del llamante y el corpus.

  • matching_modefull_text_broad para este servidor. Te indica cómo leer result.total.

  • result.breadthnone, narrow (1–50), broad (51–1000), very_broad (>1000). Los umbrales son bajos a propósito: unos cientos de resultados que parecen una literatura se marcan en lugar de pasarse limpios.

  • items[].matched_in — en qué campo se realizó la coincidencia, por registro.

  • receipt — una marca de tiempo ISO 8601, un SHA-256 calculado sobre la consulta normalizada y sus parámetros, y los identificadores devueltos. El hash verifica un término que ya posees; no puede invertirse para producir uno, por lo que la unidad de depósito es el sobre, no el recibo.

  • attribution — la línea de crédito requerida, en cada respuesta.

Códigos de diagnóstico

Tipados y cerrados. Un diagnóstico nunca es prosa que el cliente tenga que analizar.

Code

Level

Significado

OK

info

Registros devueltos; nada que señalar.

BROAD_FULLTEXT

warning

La coincidencia se realizó sobre el texto completo, donde los términos de varias palabras se comparan de forma flexible, por lo que un result.total alto suele ser ruidoso.

SCRIPT_LATIN_QUERY

warning

La consulta estaba en escritura latina, por lo que solo coincidió con metadatos romanizados e ingleses. Vuelve a emitirla en kanji o kana.

LITERAL_COMPOUND_EMPTY

warning

Sin registros para esta representación. Prueba un término émico o de componente, o una representación japonesa alternativa.

API_ERROR

error

La API respondió, y respondió con un error.

TRANSPORT_ERROR

error

La solicitud no se completó. Se mantiene distinto de API_ERROR porque una búsqueda fallida tiene un resultado desconocido y nunca debe registrarse como una ausencia.

RECEIPT_NOT_DEPOSITED

info

La respuesta no se escribió en el registro de consultas, porque no hay ningún destino de recibos configurado. La búsqueda no se ve afectada; ningún recibo sobrevive a ella.

RECEIPT_WRITE_FAILED

warning

Hay un destino de recibos configurado, se intentó la escritura y no se completó. Se distingue de la línea anterior porque una es una elección y la otra es un fallo.

Recibos de consulta

Cada sobre puede depositarse en un registro JSONL de solo añadidura y encadenado por hash mediante ledger.py. Está desactivado a menos que se establezca MCP_RECEIPT_DIR (o el heredado MCP_RECEIPT_LOG), y un fallo de registro se traga en lugar de lanzarse: una búsqueda importa más que el registro de la misma. Los secretos se redactan antes de componer una línea.

Desde el esquema 2.3.0 el sobre lo dice. Cuando una respuesta no se deposita, emit() añade RECEIPT_NOT_DEPOSITED si la variable no está establecida, o RECEIPT_WRITE_FAILED si está establecida y la escritura no se completó. La brecha es entonces visible en el artefacto que se convierte en el registro, en lugar de solo en un archivo de configuración. mediation.deposit_enabled() informa del mismo hecho a petición.

MCP_RECEIPT_DIR=C:\path\to\receipts        # a folder, not a file
MCP_RECEIPT_SESSION=project-or-article-slug
MCP_RECEIPT_STRICT=1                         # optional: make logging failure raise
MCP_RECEIPT_LOG=C:\path\to\receipts.jsonl  # legacy single file; ignored when _DIR is set

Una carpeta, y un archivo por servidor. MCP_RECEIPT_DIR apunta a un directorio y cada servidor escribe su propio <server>.jsonl dentro de él. Eso no es orden. Añadir es leer-el-último-hash-y-luego-escribir, y el bloqueo que lo rodea es un bloqueo de hilo, que se mantiene dentro de un proceso y no entre varios: seis servidores son seis procesos, y dos que respondan al mismo tiempo leerán ambos el mismo predecesor y ambos lo reclamarán. Medido, no teorizado: seis procesos escribiendo 150 líneas en un archivo produjeron catorce bifurcaciones. MCP_RECEIPT_LOG sigue funcionando y sigue siendo correcto para un solo servidor; es la forma equivocada para una familia.

install.ps1 configura esto para los seis y escribe un README en la carpeta.

Verifica una cadena, o toda la carpeta:

jstage-mcp-ledger verify      receipts/jstage.jsonl
jstage-mcp-ledger verify-dir  receipts
jstage-mcp-ledger manifest    receipts        # writes receipts/manifest.json

verify sale con código distinto de cero en caso de fallo y dice qué tipo encontró: una bifurcación (escritores concurrentes — un fallo de configuración, y cada línea sigue ahí), una línea faltante, un reordenamiento, o manipulación (una línea que no se corresponde con su propio contenido). Solo la última es una afirmación sobre la honestidad, y reportarlas por igual invitaría a un lector a confundir una con la otra. El manifiesto es el objeto a citar: una descripción de todo el depósito — recuentos de líneas por archivo, primeras y últimas marcas de tiempo, hashes terminales y totales combinados por servidor, escritura y sesión.

Instalación

El paquete instala un script de consola jstage-mcp. Tiene espacio de nombres, por lo que puede compartir un entorno con el resto de esta familia de servidores.

python3 -m venv .venv
.venv/bin/pip install .

En Windows:

py -3.11 -m venv .venv
.venv\Scripts\pip.exe install .

O directamente desde el repositorio, sin clonar:

uvx --from "git+https://github.com/ckgerteis/jstage-mcp" jstage-mcp

Verifica la instalación:

.venv/bin/python -c "import jstage_mcp; print(jstage_mcp.__version__)"

Eso falla de forma ruidosa si el paquete o uno de sus módulos incluidos falta. No uses jstage-mcp --help como comprobación: los argumentos desconocidos se ignoran, el servidor se inicia, lee el final de la entrada y sale con 0, por lo que informa de éxito sea cual sea el estado del código.

Instalar más de este

Seis paquetes independientes. Ninguno importa a otro, ninguno depende de otro, y cada uno se instala y responde por sí mismo — pip install . en este directorio es una instalación completa de este servidor y nada más.

Sí comparten tres cosas: un sobre de respuesta, un registro de consultas y — si ejecutas más de uno — una carpeta de recibos. install.ps1 se incluye byte-idéntico en los seis y se encarga de eso. Instala este servidor por defecto, porque clonar un repositorio no es una solicitud de cinco más.

.\install.ps1                        # this server
.\install.ps1 -All                   # all six
.\install.ps1 -Servers jstage,cinii        # a chosen subset

Cualquier subconjunto que nombres se registra contra una carpeta de recibos, solicitada una vez. El script prefiere una copia hermana a la red, traslada las credenciales ya registradas en lugar de volver a preguntar, deja en paz a los servidores sobre los que no se le preguntó, y se detiene en lugar de adivinar dónde los servidores ya registrados discrepan sobre la carpeta o el slug de sesión. También afirma que ledger.py y mediation.py son byte-idénticos en todo lo que instaló, de modo que dos versiones de sobre no pueden terminar en un entorno sin ser notadas.

Configuración de Claude Desktop

Añade una entrada a %APPDATA%\Claude\claude_desktop_config.json bajo mcpServers, apuntando al script de consola en el entorno en el que instalaste. En macOS o Linux usa la ruta absoluta a .venv/bin/jstage-mcp.

{
  "mcpServers": {
    "jstage": {
      "command": "C:\\path\\to\\.venv\\Scripts\\jstage-mcp.exe"
    }
  }
}

Cambiado en 3.0.0. Las versiones anteriores se registraban por ruta — "command": "…\\python.exe", "args": ["…\\server.py"]. Esa entrada no iniciará esta versión, porque server.py ahora es un módulo dentro de un paquete en lugar de un script junto a sus importaciones. Reemplázala con el script de consola anterior.

Reinicia Claude Desktop. Las tres herramientas deberían aparecer bajo "jstage" en la lista de herramientas.

Límite de velocidad

El servidor impone un intervalo mínimo de un segundo entre solicitudes salientes de acuerdo con la prohibición de JST sobre descargas masivas. El límite es por proceso; si ejecutas varias sesiones de Claude Desktop simultáneamente, podrías superarlo, así que no lo hagas.

Limitaciones

  • No hay herramienta de búsqueda de revistas. jstage_search_journals existía en v1.x y se eliminó en v2.0.0. J-STAGE anunció un endpoint de búsqueda de revistas (service=4) el 26 de marzo de 2026 y la API pública aún rechaza ese código de servicio con ERR_004; una herramienta que silenciosamente recurre a la búsqueda de volúmenes no es una búsqueda de revistas, y este servidor prefiere no ofrecer una. Hasta que JST active service=4, usa jstage_list_issues contra un título, ISSN o cdjournal conocido.

  • jstage_get_article_by_doi requiere DOIs emitidos por J-STAGE. La WebAPI no expone un parámetro de consulta doi=. La herramienta descompone los DOIs que siguen el patrón de J-STAGE (10.<registrant>/<cdjournal>.<vol>.<no>_<page>) en cdjournal+vol y compara el resultado con la respuesta. Para DOIs fuera de ese patrón, la herramienta devuelve la URL de resolución de doi.org con una nota.

  • El uso comercial requiere registro. Según los Términos de Uso de JST, el uso comercial necesita un formulario de solicitud enviado a contact@jstage.jst.go.jp. El uso para investigación y enseñanza no.

Notas de la API

Endpoint: https://api.jstage.jst.go.jp/searchapi/do

Códigos de servicio utilizados:

  • service=2 — Volúmenes/números

  • service=3 — Búsqueda de artículos

  • service=4 — Búsqueda de revistas (documentado, rechazado con ERR_004 a partir del 23 de agosto de 2026; no utilizado por ninguna herramienta)

Parámetros de consulta válidos para la búsqueda de artículos confirmados contra la API en vivo: material, article, author, affil, keyword, abst, text, issn, cdjournal, vol, no, pubyearfrom, pubyearto, start, count.

Atribución

Powered by J-STAGE

Esta cadena se incluye en cada respuesta de herramienta.

Cita

Si este software respalda tu investigación, por favor cítalo. Ver CITATION.cff, o usa el botón "Cite this repository" en GitHub.

Licencia

MIT © 2026 Christopher Gerteis.

Esta licencia cubre únicamente el código del servidor. No otorga ningún derecho sobre el contenido de J-STAGE ni sobre la WebAPI de J-STAGE, que siguen regidos por los Términos de uso de JST.

Descargo de responsabilidad

Una herramienta de investigación, mantenida con el mejor esfuerzo posible y proporcionada "tal cual", sin garantía. No está afiliada ni respaldada por Japan Science and Technology Agency. JST no ofrece soporte para la WebAPI.

Autor

Dr Christopher Gerteis, SOAS University of London.

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
2wRelease cycle
6Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables querying Japan's national academic database, CiNii Research, for articles, books, dissertations, KAKEN projects, and researcher profiles via seven MCP tools.
    7
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to query Japanese public data (laws, corporations, statistics) from official government APIs, returning normalized English metadata with source attribution.
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables searching CiNii Research for academic articles, books, grants, and research data, and retrieving metadata for individual items.
    2
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables scholarly metadata lookups from the Crossref REST API, including works, members, journals, funders, types, licenses, and prefixes, as tools for LLM clients.
    18
    MIT

View all related MCP servers

Related MCP Connectors

  • Multi-engine scholarly research server for search, traversal, full text, and reading lists.

  • Scholarly search: OpenAlex, Crossref, arXiv, OpenCitations and PubMed in one endpoint.

  • Search PubMed/Europe PMC, fetch articles and full text (PMC/EPMC/Unpaywall), citations, MeSH terms.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ckgerteis/jstage-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server