SemanticScholar_MCP
SemanticScholar_MCP
Interfaces deterministas del Model Context Protocol para las tres familias de API de Semantic Scholar:
S2AG — búsqueda en Academic Graph, metadatos, autores, citas y referencias.
Recommendations — el servicio de recomendación de artículos de Semantic Scholar.
Datasets — descubrimiento de versiones, manifiestos de conjuntos de datos y actualizaciones incrementales de conjuntos de datos.
El proyecto proporciona deliberadamente envoltorios finos de API en lugar de un sistema agéntico de investigación bibliográfica.
Diseño
La regla central es:
Una invocación de herramienta MCP representa una operación documentada de Semantic Scholar.
Los servidores realizan tareas a nivel de transporte, como validación, autenticación, limitación de velocidad, reintentos y normalización de respuestas.
No deciden qué literatura es científicamente importante.
Por ejemplo:
Agent
│
├── "Search for paired-pulse TMS papers"
│ │
│ ▼
│ S2AG MCP
│ │
│ ▼
│ Semantic Scholar
│
├── "Recommend papers from these three seed papers"
│ │
│ ▼
│ Recommendations MCP
│ │
│ ▼
│ Semantic Scholar
│
└── "Describe the latest S2ORC dataset release"
│
▼
Datasets MCP
│
▼
Semantic ScholarLa expansión de búsqueda, la interpretación científica, el resumen, la estrategia de exploración del grafo de citas y la síntesis de investigación siguen siendo responsabilidad del agente consumidor.
Related MCP server: Semantic Scholar MCP Server
Estructura del repositorio
SemanticScholar_MCP/
├── src/
│ └── semantic_scholar_mcp/
│ ├── common/
│ │ ├── client.py
│ │ ├── errors.py
│ │ ├── models.py
│ │ ├── rate_limit.py
│ │ └── __init__.py
│ ├── datasets/
│ │ ├── server.py
│ │ └── __init__.py
│ ├── recommendations/
│ │ ├── server.py
│ │ └── __init__.py
│ ├── s2ag/
│ │ ├── server.py
│ │ └── __init__.py
│ └── __init__.py
├── tests/
├── AGENTS.md
├── CLAUDE.md
├── pyproject.toml
└── README.mdRequisitos
Python 3.11 o superior
Acceso a Semantic Scholar a través de Internet
Clave de API de Semantic Scholar opcional
La implementación usa la línea v2 actual del SDK oficial de Python para MCP.
Instalación
Cree un entorno virtual:
py -3.14 -m venv .venv
.\.venv\Scripts\Activate.ps1Instale el paquete en modo editable con las dependencias de desarrollo:
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"Alternativamente, con uv:
uv venv --python 3.14
uv pip install -e ".[dev]"Python 3.14 no es necesario; el proyecto es compatible con Python 3.11 y versiones posteriores.
Después de configurar el entorno del paquete Python, ejecute opcionalmente las pruebas:
pytest
ruff check .
ruff format --check .Si ya ha configurado SEMANTIC_SCHOLAR_API_KEY como variable de entorno del sistema (consulte la siguiente sección, Autenticación), también puede probar la integración en vivo:
pytest --run-integrationNota: Si establece la variable de entorno del sistema con su clave de API después de iniciar cualquier ventana de VSCode, debe cerrar todas las ventanas de VSCode para reiniciar VSCode por completo antes de que el entorno del sistema sea capturado por las herramientas ejecutadas a través de las extensiones de VSCode.
Autenticación
Semantic Scholar permite el acceso sin autenticación a muchas operaciones de la API.
Cuando haya una clave de API disponible, expóngala a los procesos MCP mediante:
$env:SEMANTIC_SCHOLAR_API_KEY = "..."No coloque la clave en:
.mcp.json;.codex/config.toml;código fuente;
archivos
.envconfirmados;archivos de prueba.
Los servidores MCP usan la clave automáticamente cuando está presente.
Las operaciones que requieren autenticación deberían devolver un error explícito cuando no hay ninguna clave configurada.
Nota (de nuevo): Si establece la variable de entorno del sistema con su clave de API después de iniciar cualquier ventana de VSCode, debe cerrar todas las ventanas de VSCode para reiniciar VSCode por completo antes de que el entorno del sistema sea capturado por las herramientas ejecutadas a través de las extensiones de VSCode.
Actualizaciones de compilación
Los scripts .\rebuild.ps1 y .\version.ps1 se proporcionan como utilidades para facilitar las actualizaciones de versión al recompilar:
rebuild.ps1
Para recompilar sin incrementar automáticamente el número de patch, especifique explícitamente la opción:
.\rebuild.ps1 -SkipVersionIncrementDe lo contrario, .\rebuild.ps1 incrementa automáticamente el número de patch directamente en pyproject.toml.
version.ps1
Para incrementar <major> | <minor> | <patch> sin recompilar:
.\version.ps1 patch -NoRebuildPara incrementar la versión minor, restableciendo patch a 0, y recompilar:
.\version.ps1 minorPara incrementar la versión major, restableciendo tanto minor como patch a 0, y recompilar:
.\version.ps1 majorConfiguración del cliente MCP
Los tres servidores MCP de Semantic Scholar pueden configurarse:
a nivel de proyecto, de modo que estén disponibles solo dentro de un repositorio concreto; o
a nivel de usuario, de modo que estén disponibles en todos los repositorios.
Los servidores son:
s2ag— Semantic Scholar Academic Graphs2_recommendations— Semantic Scholar Recommendations APIs2_datasets— Semantic Scholar Datasets API
Los ejemplos siguientes asumen que este repositorio está instalado en:
C:\MyRepos\Python\SemanticScholar_MCPAjuste la ruta según sea necesario.
Los ejemplos invocan deliberadamente el intérprete de Python del entorno virtual con python -m ... en lugar de invocar directamente los lanzadores de consola semantic-scholar-*.exe generados. Esto se recomienda durante el desarrollo local en Windows porque ejecutar los lanzadores de consola puede impedir que pip los reemplace durante una reinstalación editable.
Codex
Codex admite tanto archivos config.toml globales de usuario como locales de proyecto.
Configuración de Codex local de proyecto
Cree o edite:
<project>/.codex/config.tomlPor ejemplo:
[mcp_servers.s2ag]
command = 'C:\MyRepos\Python\SemanticScholar_MCP\.venv\Scripts\python.exe'
args = ["-m", "semantic_scholar_mcp.s2ag.server"]
startup_timeout_sec = 15
tool_timeout_sec = 120
enabled = true
[mcp_servers.s2_recommendations]
command = 'C:\MyRepos\Python\SemanticScholar_MCP\.venv\Scripts\python.exe'
args = ["-m", "semantic_scholar_mcp.recommendations.server"]
startup_timeout_sec = 15
tool_timeout_sec = 120
enabled = true
[mcp_servers.s2_datasets]
command = 'C:\MyRepos\Python\SemanticScholar_MCP\.venv\Scripts\python.exe'
args = ["-m", "semantic_scholar_mcp.datasets.server"]
startup_timeout_sec = 15
tool_timeout_sec = 120
enabled = trueLa configuración de Codex con ámbito de proyecto se carga solo para proyectos que Codex considera de confianza.
Configuración de Codex global de usuario
Para que los servidores estén disponibles para Codex en todos los proyectos, coloque la misma configuración en:
~/.codex/config.tomlEn Windows normalmente es:
%USERPROFILE%\.codex\config.tomlPor ejemplo:
C:\Users\<username>\.codex\config.tomlLos bloques de servidor MCP en sí son idénticos al ejemplo local de proyecto anterior.
Verificar la configuración de Codex
Desde una terminal:
codex mcp listLos registros individuales también pueden inspeccionarse con:
codex mcp get s2ag
codex mcp get s2_recommendations
codex mcp get s2_datasetsClaude Code
Claude Code distingue entre servidores MCP compartidos de proyecto y servidores MCP con ámbito de usuario.
Configuración de Claude local de proyecto / compartida de proyecto
Cree:
<project>/.mcp.jsoncon:
{
"mcpServers": {
"s2ag": {
"command": "C:\\MyRepos\\Python\\SemanticScholar_MCP\\.venv\\Scripts\\python.exe",
"args": [
"-m",
"semantic_scholar_mcp.s2ag.server"
]
},
"s2_recommendations": {
"command": "C:\\MyRepos\\Python\\SemanticScholar_MCP\\.venv\\Scripts\\python.exe",
"args": [
"-m",
"semantic_scholar_mcp.recommendations.server"
]
},
"s2_datasets": {
"command": "C:\\MyRepos\\Python\\SemanticScholar_MCP\\.venv\\Scripts\\python.exe",
"args": [
"-m",
"semantic_scholar_mcp.datasets.server"
]
}
}
}Este archivo puede confirmarse en el repositorio consumidor cuando se pretenda compartir la configuración de MCP con otros usuarios de ese repositorio.
Configuración de Claude global de usuario
Para la configuración global de Claude Code, el enfoque preferido es permitir que Claude Code gestione los registros MCP con ámbito de usuario.
Ejecute:
claude mcp add --scope user s2ag -- "C:\MyRepos\Python\SemanticScholar_MCP\.venv\Scripts\python.exe" -m semantic_scholar_mcp.s2ag.server
claude mcp add --scope user s2_recommendations -- "C:\MyRepos\Python\SemanticScholar_MCP\.venv\Scripts\python.exe" -m semantic_scholar_mcp.recommendations.server
claude mcp add --scope user s2_datasets -- "C:\MyRepos\Python\SemanticScholar_MCP\.venv\Scripts\python.exe" -m semantic_scholar_mcp.datasets.serverClaude Code almacena actualmente la configuración MCP con ámbito de usuario en:
~/.claude.jsonEn Windows:
%USERPROFILE%\.claude.jsonUsar claude mcp add --scope user es preferible a editar este archivo manualmente porque Claude Code posee estado adicional en .claude.json.
Verifique los registros con:
claude mcp listSi una versión concreta de Claude Code tiene problemas para cargar servidores MCP con ámbito de usuario, la configuración .mcp.json del proyecto es el recurso alternativo más sencillo.
Clave de API de Semantic Scholar
Muchas operaciones de Semantic Scholar pueden funcionar sin autenticación. Las operaciones que requieren una clave de API usan:
SEMANTIC_SCHOLAR_API_KEYNo confirme la clave en un archivo de configuración de MCP.
En Windows, puede persistirse como variable de entorno de usuario:
[Environment]::SetEnvironmentVariable(
"SEMANTIC_SCHOLAR_API_KEY",
"YOUR_API_KEY",
"User"
)Reinicie VS Code, Codex, Claude Code u otros hosts MCP después de establecer la variable para que los procesos MCP recién iniciados la hereden.
Los servidores MCP usan la clave automáticamente cuando está presente y, en caso contrario, permanecen sin autenticación donde Semantic Scholar permite el acceso anónimo.
Local de proyecto vs. global de usuario
Una regla útil es:
Ámbito | Codex | Claude Code | Recomendado cuando |
Proyecto |
|
| El repositorio depende explícitamente de estas herramientas de investigación |
Usuario |
|
| Quiere que Semantic Scholar esté disponible en muchos repositorios no relacionados |
Para un repositorio de investigación cuyos agentes deben realizar explícitamente descubrimiento bibliográfico, la configuración local de proyecto suele ser preferible porque las herramientas de investigación disponibles viajan con el repositorio.
Para el acceso personal general a Semantic Scholar desde proyectos arbitrarios, la configuración global de usuario es más conveniente.
Limitación de velocidad compartida
El límite de velocidad autenticado inicial de Semantic Scholar se aplica a todos los endpoints de la API, no de forma independiente a cada servidor MCP.
Por lo tanto, este repositorio utiliza un limitador interproceso compartido:
S2AG MCP ────────────────┐
│
Recommendations MCP ─────┼── shared limiter ──> Semantic Scholar
│
Datasets MCP ────────────┘La implementación predeterminada debería permitir no más de aproximadamente una solicitud al servicio ascendente por segundo en los tres servidores locales.
Esto es importante cuando varios hosts se ejecutan simultáneamente, por ejemplo:
VS Code / Codex
Claude Code
MCP Inspector
testsEl limitador debería coordinar estos procesos en lugar de mantener un reloj independiente en cada uno.
Comportamiento de reintentos
Los fallos transitorios del servicio ascendente pueden reintentarse mediante un retroceso exponencial acotado.
Los ejemplos incluyen:
HTTP
429;respuestas
5xxtransitorias;fallos de red temporales.
Se respeta Retry-After cuando se proporciona.
Los errores comunes de cliente, como solicitudes no válidas, autenticación rechazada y recursos inexistentes, no se reintentan repetidamente.
Los reintentos están acotados; el MCP nunca reintenta indefinidamente.
S2AG MCP
Ejecute:
semantic-scholar-s2ago:
python -m semantic_scholar_mcp.s2ag.serverLa superficie inicial de la API pretende incluir:
Tool | Propósito |
| Recuperar un artículo conocido |
| Recuperar artículos conocidos por lotes |
| Búsqueda estructurada/masiva de artículos |
| Búsqueda de artículos ordenados por relevancia |
| Recuperar una página de artículos que citan un artículo |
| Recuperar una página de las referencias de un artículo |
| Recuperar un autor |
| Recuperar autores conocidos por lotes |
| Buscar autores |
| Recuperar una página de los artículos de un autor |
La paginación sigue siendo explícita.
Una solicitud de citas no recorre recursivamente el grafo de citas.
Una búsqueda no emite automáticamente búsquedas de seguimiento.
Recommendations MCP
Ejecute:
semantic-scholar-recommendationso:
python -m semantic_scholar_mcp.recommendations.serverLa superficie inicial es deliberadamente pequeña:
Tool | Propósito |
| Solicitar recomendaciones usando un artículo semilla |
| Solicitar recomendaciones usando los IDs de artículos positivos y negativos proporcionados |
El servidor pasa a Semantic Scholar las semillas seleccionadas por el llamante.
No elige sus propias semillas ni aplica una segunda clasificación generada por LLM a los resultados.
Flujo de trabajo conceptual de ejemplo:
positive:
paper A
paper B
paper C
negative:
paper D
│
▼
recommend_from_examples
│
▼
Semantic Scholar recommendation rankingDatasets MCP
Ejecute:
semantic-scholar-datasetso:
python -m semantic_scholar_mcp.datasets.serverLas herramientas iniciales son:
Tool | Propósito |
| Listar las versiones disponibles de conjuntos de datos |
| Inspeccionar una versión concreta |
| Obtener metadatos/información de manifiesto para un conjunto de datos |
| Obtener manifiestos de actualización/eliminación entre versiones |
El MCP de Datasets deliberadamente no descarga automáticamente conjuntos de datos completos de Semantic Scholar.
Algunos conjuntos de datos de Semantic Scholar son muy grandes. Recuperar un manifiesto es una operación MCP apropiada; iniciar la descarga de un corpus de varios gigabytes requiere herramientas explícitas controladas por el usuario.
Una CLI dedicada futura podría proporcionar comandos como:
s2-dataset download ...
s2-dataset update ...
s2-dataset verify ...sin convertir esas operaciones en comportamiento implícito del MCP.
Determinismo
Para este proyecto, determinista significa que la semántica de las herramientas es explícita e inspeccionable.
Una herramienta puede:
validate input
↓
wait for rate limiter
↓
make one documented API request
↓
retry transient transport failures if necessary
↓
normalize response
↓
return structured dataUna herramienta no debe convertirse silenciosamente en:
search
↓
search again with different terms
↓
fetch every page
↓
walk citations
↓
request recommendations
↓
rank with an LLM
↓
summarize papersLa orquestación de nivel superior queda fuera de este repositorio.
Paginación
La paginación está controlada por el llamante.
Cuando Semantic Scholar devuelve un token de continuación, un desplazamiento o un cursor equivalente, el MCP devuelve ese valor.
El llamante puede solicitar explícitamente otra página.
El MCP no obtiene automáticamente todas las páginas disponibles.
Esto protege tanto el determinismo como el uso de la API.
Campos
Cuando Semantic Scholar admite campos de respuesta explícitos, las herramientas deberían solicitar solo los campos que necesita el llamante.
Se puede proporcionar un pequeño conjunto de campos predeterminado para facilitar su uso.
Los campos grandes, como los resúmenes o los contextos de citas, no deberían solicitarse automáticamente a menos que formen parte del valor predeterminado documentado de la herramienta.
Errores
Las condiciones del servicio ascendente deberían traducirse en errores MCP estables y comprensibles.
Ejemplos:
authentication_required
rate_limited
not_found
invalid_request
upstream_error
transport_errorCuando sea útil, el error estructurado puede conservar:
estado HTTP;
capacidad de reintento;
número de intentos;
mensaje de error de Semantic Scholar.
Los secretos nunca deben incluirse.
Desarrollo
Ejecutar pruebas unitarias:
pytestEjecutar linting:
ruff check .Comprobar el formato:
ruff format --check .Aplicar el formato:
ruff format .Las pruebas en vivo de Semantic Scholar se marcan por separado:
pytest --run-integrationLas pruebas unitarias ordinarias deben simular las interacciones HTTP y no deben consumir la cuota de la API de Semantic Scholar.
Filosofía de pruebas
Las pruebas más importantes verifican la fidelidad de la API.
Para cada herramienta de MCP, las pruebas deben confirmar:
input
↓
exact expected HTTP operation
↓
expected response normalizationLas pruebas también deben verificar la ausencia de comportamiento oculto.
Por ejemplo, una única solicitud de cita debe generar una operación de la API de citas, no solicitar automáticamente páginas o referencias posteriores.
Relación con las herramientas de investigación
Este repositorio debe permanecer neutral en cuanto al dominio.
Por ejemplo, puede exponer:
paper A cites paper Bo:
Semantic Scholar recommends paper C from seeds A and Bpero no debe concluir:
paper C is the strongest evidence for a particular neuroscience hypothesisUn repositorio de investigación separado, Research MCP o un investigador humano puede hacer esa interpretación.
Esta separación permite que la capa de Semantic Scholar siga siendo:
determinista;
reutilizable;
fácil de probar;
independiente de cualquier campo científico específico;
utilizable por diferentes hosts y agentes de MCP.
Uso de Semantic Scholar
Este proyecto está destinado a un uso legítimo de investigación y debe cumplir con la licencia y la documentación actuales de la API de Semantic Scholar.
El uso de la API debe:
respetar los límites de tasa activos;
usar operaciones por lotes/masivas cuando corresponda;
solicitar solo los campos necesarios;
utilizar retroceso exponencial acotado;
proteger las credenciales de la API;
evitar el rastreo no restringido de la API;
preferir la API de Datasets cuando se requiera acceso realmente a escala de corpus.
Los productos o visualizaciones públicos que utilicen datos de respuesta de Semantic Scholar pueden tener requisitos adicionales de atribución. Revise la licencia actual de Semantic Scholar antes de añadir una presentación de datos dirigida al público.
Consulte AGENTS.md para conocer las reglas normativas de desarrollo y uso de la API de este repositorio.
This server cannot be installed
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
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to query the Semantic Scholar Academic Graph for scholarly paper data, supporting tools for search, retrieval, and analysis.12MIT
- FlicenseAqualityDmaintenanceEnables searching and retrieving academic papers, authors, citations, and recommendations from Semantic Scholar via MCP.9
- AlicenseNot gradedqualityDmaintenanceEnables scientific literature research through multi-agent search, analysis, and semantic memory, exposing 9 MCP tools for querying, storing, and retrieving research findings.1MIT
- AlicenseAqualityBmaintenanceEnables AI agents to search and retrieve academic papers, author profiles, and citation data from the Scopus database via MCP tools.7MIT
Related MCP Connectors
Semantic Scholar Academic Graph MCP.
Real-time Amazon, WIPO & PACER data for AI agents — 19 tools via the MCP protocol.
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
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/Neuro-Mechatronics-Interfaces/SemanticScholar_MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server