Réponse rapide
Comment ajouter un serveur MCP de recherche web à Claude Code ou Claude Desktop ?
Enregistrez le court serveur Python de cette page, qui expose les outils search_web et read_urls appelant LLMWebSearch, puis enregistrez-le avec claude mcp add ou dans claude_desktop_config.json, avec votre clé dans env. Le modèle peut alors rechercher sur le web en direct et lire les meilleures pages en Markdown. Une recherche coûte 1 crédit, à partir de 1,20 $US/1K requêtes en octobre 2026. Sans KYC ; payez en crypto.
Le serveur MCP en un coup d'œil
| Langage | Python 3.10+, avec les packages mcp et httpx |
|---|---|
| Transport | stdio : le client démarre le serveur comme un processus local |
| Outil 1 | search_web(query, max_results=5, read=3) → sources numérotées avec URLs et texte des pages |
| Outil 2 | read_urls(urls) → le contenu principal de 1 à 20 pages connues |
| Noms | Pas web_search ni web_fetch : Claude Code et OpenClaw embarquent déjà des outils portant ces noms |
| Clé | Lu depuis LLMWEBSEARCH_API_KEY dans l'environnement du serveur |
| Facturation | Un crédit paie une recherche : jusqu'à 20 résultats classés, avec les pages des 3 premiers lues et renvoyées en Markdown. Lire 4 à 10 pages coûte 2 crédits. Un appel qui se termine sur une erreur ne coûte rien. Lire des pages dont vous avez déjà les URLs coûte 1 crédit par groupe de 3 pages entamé, renvoyées avec leur contenu, jusqu'à 20 URLs par appel ; les URLs refusées ou en échec ne sont pas comptées |
Pourquoi les outils s'appellent-ils search_web et read_urls ?
Parce que deux outils portant le même nom perturbent le client et le modèle. Claude Code et OpenClaw incluent chacun des outils intégrés nommés web_search et web_fetch. Des noms distincts, avec des descriptions claires, permettent au modèle de choisir les nôtres à dessein et vous permettent de distinguer les appels dans les logs.
Les deux outils renvoient du texte, pas du JSON brut. Chaque source commence par un numéro, un titre et son URL, pour que le modèle puisse citer [1] ou [2] et que le lecteur puisse vérifier la page.
import os
import httpx
from mcp.server.fastmcp import FastMCP
BASE = "https://llmwebsearch.com/api/v1"
HEADERS = {"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]}
mcp = FastMCP("llmwebsearch")
def _call(path: str, body: dict) -> dict:
resp = httpx.post(BASE + path, json=body, headers=HEADERS, timeout=90)
data = resp.json()
if resp.status_code != 200:
err = data.get("error", {})
raise RuntimeError(err.get("code", str(resp.status_code)) + ": " + err.get("message", ""))
return data
def _page(n: int, item: dict) -> str:
head = f"[{n}] {item.get('title') or item['url']}\n{item['url']}\n"
if item.get("content_status") == "ok":
return head + item["content"]
return head + "(not read: " + item.get("content_status", "unknown") + ") " + item.get("snippet", "")
@mcp.tool()
def search_web(query: str, max_results: int = 5, read: int = 3) -> str:
"""Search the live web and return numbered sources; the first `read` pages include their text.
Use it for current facts, documentation and news. Cite sources by their number.
"""
body = {"q": query, "max_results": max(1, min(max_results, 20)), "read": max(0, min(read, 10)), "max_chars": 5000}
data = _call("/search", body)
return "\n\n".join(_page(i, r) for i, r in enumerate(data["results"], start=1))
@mcp.tool()
def read_urls(urls: list[str]) -> str:
"""Read 1 to 20 public web pages whose URLs you already have and return their main text."""
data = _call("/extract", {"urls": urls[:20], "max_chars": 12000})
return "\n\n".join(_page(i, r) for i, r in enumerate(data["results"], start=1))
if __name__ == "__main__":
mcp.run()
Comment installer et tester le serveur ?
Créez un environnement virtuel, installez mcp et httpx, et enregistrez le fichier ci-dessus. mcp est le SDK Python officiel du Model Context Protocol ; sa classe FastMCP transforme des fonctions Python typées en outils et utilise chaque docstring comme description de l'outil.
Lancez le fichier une fois depuis un terminal avec votre clé définie. Il attend ensuite silencieusement un client sur l'entrée standard, ce qui signifie qu'il fonctionne ; arrêtez-le avec Ctrl+C. Les erreurs de l'API sont remontées comme erreurs d'outil avec leur code, pour que le modèle voie rate_limited ou insufficient_credits en clair.
python -m venv .venv
. .venv/bin/activate
pip install "mcp[cli]" httpx
LLMWEBSEARCH_API_KEY="your-key" python llmwebsearch_mcp.pyComment l'ajouter à Claude Code ?
Utilisez claude mcp add. La documentation de Claude Code donne la forme claude mcp add [options] <name> -- <command> [args...] : ses propres options d'abord, puis un double tiret, puis la commande qui démarre le serveur. Les variables d'environnement vont dans --env KEY=value, et au moins une autre option, comme --transport stdio, doit se trouver entre --env et le nom du serveur.
Ajoutez --scope user pour rendre le serveur disponible dans tous vos projets ; la portée par défaut, local, ne couvre que le projet courant. Utilisez des chemins absolus pour le Python de votre environnement virtuel et pour le fichier du serveur.
claude mcp add --env LLMWEBSEARCH_API_KEY=your-key --transport stdio --scope user llmwebsearch \
-- /home/you/llmwebsearch/.venv/bin/python /home/you/llmwebsearch/llmwebsearch_mcp.pyComment l'ajouter à Claude Desktop et aux autres clients ?
Claude Desktop lit les serveurs depuis claude_desktop_config.json, sous mcpServers. Donnez au serveur un nom, la commande, ses arguments et un objet env contenant la clé, puis redémarrez l'application ; search_web et read_urls apparaissent dans la liste des outils.
Les autres clients MCP, comme Cursor, demandent les mêmes trois éléments dans leurs propres paramètres MCP : une commande, ses arguments et des variables d'environnement. La clé n'apparaît jamais dans un argument d'outil ni dans la conversation.
{
"mcpServers": {
"llmwebsearch": {
"command": "/home/you/llmwebsearch/.venv/bin/python",
"args": ["/home/you/llmwebsearch/llmwebsearch_mcp.py"],
"env": { "LLMWEBSEARCH_API_KEY": "your-key" }
}
}
}Comment garder les recherches économiques et courtes ?
Indiquez au modèle comment chercher dans vos instructions : une ou deux requêtes par question, puis lisez davantage uniquement si les sources se contredisent. Le serveur plafonne déjà chaque page à 5 000 caractères en search_web et 12 000 en read_urls ; abaissez ces valeurs pour les petits modèles.
Chaque appel search_web avec read jusqu'à 3 coûte un crédit. Un assistant qui lance 40 requêtes par jour consomme environ 1 200 crédits par mois, donc 5 000 requêtes (9,25 $US) dure environ quatre mois. Les crédits de recherche n'ont pas de date d'expiration : ce que vous n'utilisez pas ce mois-ci est toujours là l'année prochaine.
Que voit le modèle quand une page ne peut pas être lue ?
La source apparaît quand même, avec son numéro, son titre et son URL, suivis de la raison entre crochets et de l'extrait de recherche. Notre lecteur respecte robots.txt : il s'annonce comme LLMWebSearch, suit les règles qu'un site écrit pour lui ou pour tous les robots, et laisse de côté le contenu de toute page qu'il n'est pas autorisé à lire. Quand un site refuse notre lecteur, le résultat revient sans contenu et avec le statut du site : nous ne résolvons jamais de CAPTCHA, ne nous connectons pas à des comptes et ne contournons ni un blocage ni un paywall. Le modèle peut alors s'appuyer sur les autres sources ou signaler qu'une page n'était pas disponible.
Serveur MCP : questions fréquentes
Existe-t-il un package MCP ou un endpoint hébergé officiel pour LLMWebSearch ?
Non. Le fichier de cette page constitue l'intégration : environ 50 lignes que vous pouvez lire et modifier. Il s'exécute sur votre machine, et votre clé ne circule que vers notre API.
Dois-je désactiver la recherche web intégrée de Claude Code ?
Pas besoin. Les deux peuvent rester ; les descriptions indiquent au modèle ce que fait chacun. Gardez le nôtre quand vous voulez le texte des pages dans les résultats, un prix fixe par requête ou un seul endroit pour vos logs de recherche.
Puis-je l'utiliser avec OpenClaw ?
Oui, comme serveur MCP enregistré avec openclaw mcp add. La page OpenClaw donne la commande et explique comment il cohabite avec les fournisseurs de recherche intégrés d'OpenClaw.
Le serveur conserve-t-il mes recherches ?
Non. Il ne conserve rien entre les appels. De notre côté, Nous n'entraînons aucun modèle sur vos requêtes ni sur ce que renvoie l'API, et nous n'ajoutons aucune règle de notre cru contre la conservation des résultats ; les droits des sites dont vous lisez les pages s'appliquent toujours.
Sources (1)
- Connecter Claude Code à des outils via MCP — Claude Code docs (read 2026-10-22)