watch-materials-mcp

watch-materials-mcp

MCP server for materials science monitoring, searching ArXiv preprints and OpenAlex articles with sovereign intelligence filtering by country.

Category
访问服务器

README

watch-materials-mcp — Serveur MCP de veille scientifique en science des matériaux

Premier serveur Model Context Protocol (MCP) construit from scratch en JavaScript, branché sur Claude Desktop. Objectif : comprendre le protocole MCP de bout en bout et fournir un outil de veille technique souveraine sur la science des matériaux et les alliages.

Le serveur tourne en local (process Node.js, communication via stdio) et expose 5 tools que Claude découvre et orchestre automatiquement.


Pourquoi ce projet

Construire un serveur MCP minimal mais réel, qui :

  • couvre deux types de sources et donc deux formats de réponse : XML (ArXiv) et JSON (OpenAlex) ;
  • reste lisible et appropriable (code commenté, chaque tool autonome) ;
  • apporte une vraie valeur métier : croiser preprints et publications validées, et identifier qui publie où (angle souverain).

Les deux sources

Source Format Nature Particularité
ArXiv XML (Atom) Preprints (non validés par les pairs) Parsing via fast-xml-parser
OpenAlex JSON Articles publiés (validés par les pairs) Citations, institutions, accès libre

Travailler les deux formats était un objectif assumé : ArXiv impose un parsing XML (et son piège objet/tableau), OpenAlex se consomme directement en .json().


Les 5 tools

Tool Source Rôle
search_arxiv_materiaux ArXiv Recherche de preprints par matériau, triés par date
last_articles_arxiv_materiaux ArXiv Veille large : derniers preprints, tous matériaux confondus
search_openalex_materiaux OpenAlex Recherche d'articles publiés par matériau, info accès libre
last_articles_openalex_materiaux OpenAlex Veille large : dernières publications parues
intel_openalex_materiaux OpenAlex Recherche avancée : filtre par pays d'institution + choix du tri (citations ou date) — l'angle souverain

Installation

Cloner le dépôt puis installer les dépendances (déclarées dans package.json : dotenv, zod, @modelcontextprotocol/sdk, fast-xml-parser, @types/node) :

```bash git clone <url-du-depot> cd materials-mcp npm install ```

ℹ️ Le package.json contient "type": "module" : le SDK MCP fonctionne en ESM (import/export), pas en CommonJS.

Variable d'environnement

Créer un fichier .env à la racine :

OPENALEX_MAILTO=ton@email.fr

Le mailto n'est pas un secret : il sert à intégrer le polite pool d'OpenAlex (requêtes plus stables). Optionnel mais recommandé.


Branchement sur Claude Desktop

Dans claude_desktop_config.json (mcpServers à la racine, pas dans preferences) :

{
  "mcpServers": {
    "materials-mcp": {
      "command": "node",
      "args": ["CHEMIN_ABSOLU/watch-materials-mcp/src/server.js"]
    }
  }
}

Puis quitter Claude Desktop complétement et le relancer. Le serveur doit apparaître dans Réglages → Développeur avec le statut running.


Campagne de test réalisé

Test 1 — Recherche preprints par matériau

Requête : Cherche des preprints récents sur le titane Tool attendu : search_arxiv_materiaux Vérifier : tri par date, XML parsé (titre/auteurs/date/lien/résumé), ~10 résultats. Statut : Réussi

Test 2 — Veille large preprints

Requête : Donne-moi les 20 derniers preprints en science des matériaux Tool attendu : last_articles_arxiv_materiaux Vérifier : pas de filtre matériau, tri par date, 20 résultats. Statut : Réussi

Test 3 — Recherche publiés par matériau

Requête : Quels sont les articles publiés sur les superalliages ? Tool attendu : search_openalex_materiaux Vérifier : JSON, info accès libre affichée, reste dans le domaine matériaux. Statut : Réussi

Test 4 — Veille large publiés

Requête : Les dernières publications parues en science des matériaux Tool attendu : last_articles_openalex_materiaux Vérifier : pas de filtre matériau, info accès libre. (Voir la note OpenAlex ci-dessous.) Statut : Echec (Cause: API OpenAlex qui remonte des dates aberrantes)

Test 5 — Angle souverain (le test clé)

Requête : Quels articles sur le titane sont publiés par des labos français ? Tool attendu : intel_openalex_materiaux avec pays: "fr" Vérifier : filtre pays appliqué, institutions affichées, en-tête « pays = fr ». Statut : Réussi

Test 6 — Tri par citations explicite

Requête : Les articles les plus cités sur les alliages d'aluminium Tool attendu : intel_openalex_materiaux (triParCitations: true) Vérifier : tri par citations décroissant. Statut : Réussi


Note sur l'API OpenAlex (limite connue)

Le tool last_articles_openalex_materiaux (veille large triée par date) remonte des dépôts institutionnels (thèses, datasets) dont les métadonnées de date sont parfois erronées (publications datées 2029–2032 lors d'une recherche effectuée en 2026). Le tri par date s'en trouve pollué et le résultat est peu exploitable en l'état.

Ce n'est pas un bug du serveur : le code fait ce qui est demandé, c'est la qualité de la donnée source qui est en cause. La recherche ciblée par matériau (search_openalex_materiaux) contourne le problème en remontant des articles de revues sérieuses.

Piste d'amélioration : ajouter type:article au filtre pour exclure thèses et datasets.


Choix d'architecture

Le formatage des réponses est volontairement dupliqué dans chaque tool plutôt que factorisé dans un utilitaire commun. Ce choix assumé pour ce premier serveur privilégie l'apprentissage, la lisibilité et l'autonomie de chaque tool : on lit un tool de bout en bout sans naviguer entre fichiers.

La factorisation d'un formatResponse mutualisé est prévue pour le serveur suivant.


Stack

  • JavaScript (ESM) + Node.js
  • @modelcontextprotocol/sdk — protocole MCP
  • zod — validation des paramètres des tools
  • fast-xml-parser — parsing du XML d'ArXiv
  • dotenv — variable d'environnement (mailto OpenAlex)
  • Client : Claude Desktop (transport stdio)

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选