use-mcp est une bibliothèque de hooks React légère, spécialement conçue pour se connecter aux serveurs Model Context Protocol (MCP). Ce projet simplifie le processus d'authentification et d'appel d'outils du standard MCP dans les systèmes d'IA, offrant aux développeurs une solution d'intégration frontale facile à utiliser.
npm install use-mcp
# ou
pnpm add use-mcp
# ou
yarn add use-mcp
import { useMcp } from 'use-mcp/react'
function MyAIComponent() {
const {
state, // État de la connexion : 'discovering' | 'authenticating' | 'connecting' | 'loading' | 'ready' | 'failed'
tools, // Outils disponibles fournis par le serveur MCP
error, // Message d'erreur en cas d'échec de la connexion
callTool, // Fonction pour appeler un outil du serveur MCP
retry, // Nouvelle tentative de connexion manuelle
authenticate, // Déclenchement manuel de l'authentification
clearStorage, // Effacer les jetons et les informations d'identification stockés
} = useMcp({
url: 'https://your-mcp-server.com',
clientName: 'My App',
autoReconnect: true,
})
// Gérer les différents états de connexion
if (state === 'failed') {
return (
<div>
<p>Échec de la connexion : {error}</p>
<button onClick={retry}>Réessayer</button>
<button onClick={authenticate}>Authentification manuelle</button>
</div>
)
}
if (state !== 'ready') {
return <div>Connexion au service d'IA en cours...</div>
}
// Utiliser les outils disponibles
const handleSearch = async () => {
try {
const result = await callTool('search', { query: 'example search' })
console.log('Résultats de la recherche :', result)
} catch (err) {
console.error('Échec de l'appel de l'outil :', err)
}
}
return (
<div>
<h2>Nombre d'outils disponibles : {tools.length}</h2>
<ul>
{tools.map(tool => (
<li key={tool.name}>{tool.name}</li>
))}
</ul>
<button onClick={handleSearch}>Rechercher</button>
</div>
)
}
Pour gérer le flux d'authentification OAuth, il est nécessaire de configurer un point de terminaison de rappel dans l'application.
// App.tsx avec React Router
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'
import { useEffect } from 'react'
import { onMcpAuthorization } from 'use-mcp'
function OAuthCallback() {
useEffect(() => {
onMcpAuthorization()
}, [])
return (
<div>
<h1>Authentification en cours...</h1>
<p>Cette fenêtre devrait se fermer automatiquement.</p>
</div>
)
}
function App() {
return (
<Router>
<Routes>
<Route path="/oauth/callback" element={<OAuthCallback />} />
<Route path="/" element={<YourMainComponent />} />
</Routes>
</Router>
)
}
// pages/oauth/callback.tsx
import { useEffect } from 'react'
import { onMcpAuthorization } from 'use-mcp'
export default function OAuthCallbackPage() {
useEffect(() => {
onMcpAuthorization()
}, [])
return (
<div>
<h1>Authentification en cours...</h1>
<p>Cette fenêtre devrait se fermer automatiquement.</p>
</div>
)
}
function useMcp(options: UseMcpOptions): UseMcpResult
Option | Type | Description |
---|---|---|
url |
string |
Obligatoire. URL du serveur MCP |
clientName |
string |
Nom du client lors de l'enregistrement OAuth |
clientUri |
string |
URI du client lors de l'enregistrement OAuth |
callbackUrl |
string |
URL de rappel personnalisée pour la redirection OAuth (par défaut, /oauth/callback du domaine actuel) |
storageKeyPrefix |
string |
Préfixe de la clé de stockage des données OAuth dans localStorage (par défaut, "mcp:auth" ) |
clientConfig |
object |
Configuration personnalisée de l'identité du client MCP |
debug |
boolean |
Activer la journalisation de débogage détaillée |
autoRetry |
boolean | number |
Nouvelle tentative automatique en cas d'échec de la connexion initiale, peut être configurée avec un délai en millisecondes |
autoReconnect |
boolean | number |
Reconnexion automatique en cas de perte de connexion établie, peut être configurée avec un délai en millisecondes (par défaut : 3000) |
Propriété | Type | Description |
---|---|---|
state |
string |
État actuel de la connexion : 'discovering' , 'authenticating' , 'connecting' , 'loading' , 'ready' , 'failed' |
tools |
Tool[] |
Outils disponibles fournis par le serveur MCP |
error |
string | undefined |
Message d'erreur en cas d'échec de la connexion |
authUrl |
string | undefined |
URL d'authentification manuelle lorsque la fenêtre contextuelle est bloquée |
log |
LogEntry[] |
Tableau de messages de journal |
callTool |
(name: string, args?: Record<string, unknown>) => Promise<any> |
Fonction pour appeler un outil du serveur MCP |
retry |
() => void |
Tentative manuelle de reconnexion |
disconnect |
() => void |
Déconnexion du serveur MCP |
authenticate |
() => void |
Déclenchement manuel de l'authentification |
clearStorage |
() => void |
Effacer toutes les données d'authentification stockées |
use-mcp fournit aux développeurs React une solution puissante et concise pour intégrer les serveurs Model Context Protocol. Grâce à son interface de Hook intuitive, à sa gestion complète du flux d'authentification et à ses puissantes fonctionnalités de gestion de la connexion, les développeurs peuvent facilement implémenter l'intégration d'outils d'IA dans les applications React, réduisant considérablement la barrière à l'entrée pour l'utilisation du standard MCP.