MCP LangChainJS Search Server
by PlumyCat
README.md
# MCP LangChainJS Server
[](https://github.com/PlumyCat/mcp-github-langchain-js/actions/workflows/ci.yml)
Serveur MCP (Model Context Protocol) en TypeScript permettant de rechercher des exemples et du code dans le dépôt GitHub LangChainJS (`langchain-ai/langchainjs`). Il expose un outil `search_langchain` que les clients MCP (ex. Claude Desktop) peuvent appeler pour retrouver rapidement des snippets TS/JS/MD pertinents.
## Aperçu
- Outil principal: `search_langchain`
- Source: GitHub Search Code API via `@octokit/rest`
- Transport: `stdio` (pour intégration avec clients MCP)
- Langage: TypeScript (build vers `dist/`)
## Prérequis
- Node.js 18+ et npm
- (Optionnel) Un jeton GitHub personnel pour des quotas plus généreux
- Variable d’environnement: `GITHUB_TOKEN`
## Installation
```bash
npm install
npm run build
```
## Démarrage
- Développement (TypeScript, sans build):
```bash
npm run dev
```
- Watch (redémarrage auto):
```bash
npm run watch
```
- Production (depuis `dist/`):
```bash
npm start
```
Le serveur écoute via `stdio` et est destiné à être lancé par un client MCP.
## Configuration du client MCP (ex. Claude Desktop)
Exemple de configuration Claude Desktop (à adapter à votre chemin local) :
```json
{
"mcpServers": {
"langchain-js": {
"command": "node",
"args": [
"/chemin/vers/votre/projet/dist/index.js"
],
"env": {
"GITHUB_TOKEN": "votre_token_optionnel"
}
}
}
}
```
Notes:
- `GITHUB_TOKEN` est recommandé pour éviter les limitations strictes de l’API publique.
- Ne commitez jamais de secrets. Préférez des variables d’environnement ou un fichier `.env` ignoré par Git.
## Variables d’environnement
Vous pouvez fournir un jeton GitHub pour augmenter les limites d’API :
```bash
export GITHUB_TOKEN=ghp_xxx_votre_token
```
Ou via un fichier `.env` (non commité) si votre outil de lancement le supporte.
## Outils exposés
- `search_langchain`
- Entrée:
- `query` (string, requis): la requête de recherche (TS/JS/MD)
- Sortie (texte): liste des correspondances avec nom, chemin, et URL HTML
Exemple d’appel (côté client MCP):
```json
{
"name": "search_langchain",
"arguments": { "query": "RetrievalQA" }
}
```
## Architecture
- `src/index.ts`: serveur MCP + transport `stdio`, enregistrement des handlers
- `src/tools/search.ts`: schéma de l’outil et handler `search_langchain`
- `src/github-client.ts`: client GitHub (Octokit) pour recherche et lecture de contenu
- `src/types.ts`: types internes (exemples, résultats)
## Scripts npm
- `npm run dev`: exécute `src/index.ts` avec `ts-node`
- `npm run watch`: redémarre avec `nodemon` sur changements
- `npm run build`: compile TypeScript vers `dist/`
- `npm start`: lance `node dist/index.js`
## Dépannage
- Erreurs 403/abuse/ratelimit: fournissez `GITHUB_TOKEN`.
- Résultats vides: vérifiez la requête (`query`) et les extensions ciblées (TS/JS/MD).
- Import/ESM: le projet est configuré en `type: commonjs` avec `ts-node` adapté; utilisez `npm run build` puis `npm start` en prod.
## Sécurité
- Ne mettez jamais un jeton en clair dans le dépôt.
- Préférez des variables d’environnement et des gestionnaires de secrets.
## Licence
ISC
TDQS
A3.7/5.0
Scored across 1 tool
Disambiguation5/5
With only one tool available, there is no possibility of confusing it with another tool. The tool's purpose is clearly defined by its name and description.
Naming Consistency5/5
The single tool name follows a clear verb_noun pattern (search_langchain), and since there are no other tools, there is no inconsistency to worry about.
Tool Count3/5
The server is explicitly a search-only server, so one tool is arguably appropriate, but it falls below the typical 3-15 tool range, making it feel minimal.
Completeness5/5
For its stated purpose of searching LangChainJS examples and code, the tool provides the core functionality without obvious gaps. The agent can search and receive results directly.
Maintenance
ActivityInactive
ResponsivenessNo issues