jstage-mcp
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 |
| Búsqueda de texto completo / autor / título / revista en los artículos de J-STAGE |
| Espinazo de volúmenes y números para un título, ISSN o |
| 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.query—input_termstal como se proporcionaron,normalizedtal como se enviaron, y lascriptdetectada. Este par es el registro de cualquier transformación realizada entre el idioma del llamante y el corpus.matching_mode—full_text_broadpara este servidor. Te indica cómo leerresult.total.result.breadth—none,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 |
| info | Registros devueltos; nada que señalar. |
| 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 |
| warning | La consulta estaba en escritura latina, por lo que solo coincidió con metadatos romanizados e ingleses. Vuelve a emitirla en kanji o kana. |
| warning | Sin registros para esta representación. Prueba un término émico o de componente, o una representación japonesa alternativa. |
| error | La API respondió, y respondió con un error. |
| error | La solicitud no se completó. Se mantiene distinto de |
| 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. |
| 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 setUna 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.jsonverify 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-mcpVerifica 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 subsetCualquier 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_journalsexistí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 conERR_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 activeservice=4, usajstage_list_issuescontra un título, ISSN ocdjournalconocido.jstage_get_article_by_doirequiere DOIs emitidos por J-STAGE. La WebAPI no expone un parámetro de consultadoi=. La herramienta descompone los DOIs que siguen el patrón de J-STAGE (10.<registrant>/<cdjournal>.<vol>.<no>_<page>) encdjournal+voly 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úmerosservice=3— Búsqueda de artículosservice=4— Búsqueda de revistas (documentado, rechazado conERR_004a 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.
Maintenance
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
- AlicenseAqualityAmaintenanceEnables querying Japan's national academic database, CiNii Research, for articles, books, dissertations, KAKEN projects, and researcher profiles via seven MCP tools.72MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to query Japanese public data (laws, corporations, statistics) from official government APIs, returning normalized English metadata with source attribution.1MIT
- AlicenseAqualityCmaintenanceEnables searching CiNii Research for academic articles, books, grants, and research data, and retrieving metadata for individual items.2MIT
- AlicenseAqualityAmaintenanceEnables scholarly metadata lookups from the Crossref REST API, including works, members, journals, funders, types, licenses, and prefixes, as tools for LLM clients.18MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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