use-mcp es una biblioteca de hooks de React ligera, diseñada específicamente para conectarse a servidores Model Context Protocol (MCP). Este proyecto simplifica el proceso de autenticación y llamada a herramientas del estándar MCP en sistemas de IA, proporcionando a los desarrolladores una solución de integración frontend fácil de usar.
npm install use-mcp
pnpm add use-mcp
yarn add use-mcp
import { useMcp } from 'use-mcp/react'
function MyAIComponent() {
const {
state, // Estado de la conexión: 'discovering' | 'authenticating' | 'connecting' | 'loading' | 'ready' | 'failed'
tools, // Herramientas disponibles proporcionadas por el servidor MCP
error, // Información de error en caso de fallo de conexión
callTool, // Función para llamar a las herramientas del servidor MCP
retry, // Reintento manual de la conexión
authenticate, // Activación manual de la autenticación
clearStorage, // Limpieza de los tokens y credenciales almacenados
} = useMcp({
url: 'https://your-mcp-server.com',
clientName: 'My App',
autoReconnect: true,
})
// Manejo de los diferentes estados de conexión
if (state === 'failed') {
return (
<div>
<p>Conexión fallida: {error}</p>
<button onClick={retry}>Reintentar</button>
<button onClick={authenticate}>Autenticar manualmente</button>
</div>
)
}
if (state !== 'ready') {
return <div>Conectando al servicio de IA...</div>
}
// Uso de las herramientas disponibles
const handleSearch = async () => {
try {
const result = await callTool('search', { query: 'example search' })
console.log('Resultados de la búsqueda:', result)
} catch (err) {
console.error('Fallo al llamar a la herramienta:', err)
}
}
return (
<div>
<h2>Número de herramientas disponibles: {tools.length}</h2>
<ul>
{tools.map(tool => (
<li key={tool.name}>{tool.name}</li>
))}
</ul>
<button onClick={handleSearch}>Buscar</button>
</div>
)
}
Para manejar el flujo de autenticación OAuth, es necesario configurar un punto final de devolución de llamada en la aplicación.
// App.tsx con 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>Autenticando...</h1>
<p>Esta ventana debería cerrarse automáticamente.</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>Autenticando...</h1>
<p>Esta ventana debería cerrarse automáticamente.</p>
</div>
)
}
function useMcp(options: UseMcpOptions): UseMcpResult
Opción | Tipo | Descripción |
---|---|---|
url |
string |
Requerido. URL del servidor MCP |
clientName |
string |
Nombre del cliente durante el registro de OAuth |
clientUri |
string |
URI del cliente durante el registro de OAuth |
callbackUrl |
string |
URL de devolución de llamada personalizada para la redirección de OAuth (por defecto, /oauth/callback en el dominio actual) |
storageKeyPrefix |
string |
Prefijo de la clave de almacenamiento para los datos de OAuth en localStorage (por defecto, "mcp:auth" ) |
clientConfig |
object |
Configuración personalizada para la identidad del cliente MCP |
debug |
boolean |
Habilita el registro de logs de depuración detallado |
autoRetry |
boolean | number |
Reintento automático en caso de fallo de conexión inicial, puede establecerse un retraso en milisegundos |
autoReconnect |
boolean | number |
Reconexión automática en caso de pérdida de conexión establecida, puede establecerse un retraso en milisegundos (por defecto: 3000) |
Propiedad | Tipo | Descripción |
---|---|---|
state |
string |
Estado actual de la conexión: 'discovering' , 'authenticating' , 'connecting' , 'loading' , 'ready' , 'failed' |
tools |
Tool[] |
Herramientas disponibles proporcionadas por el servidor MCP |
error |
string | undefined |
Información de error en caso de fallo de conexión |
authUrl |
string | undefined |
URL de autenticación manual en caso de que se bloquee la ventana emergente |
log |
LogEntry[] |
Array de mensajes de log |
callTool |
(name: string, args?: Record<string, unknown>) => Promise<any> |
Función para llamar a las herramientas del servidor MCP |
retry |
() => void |
Intento manual de reconexión |
disconnect |
() => void |
Desconexión del servidor MCP |
authenticate |
() => void |
Activación manual de la autenticación |
clearStorage |
() => void |
Limpieza de todos los datos de autenticación almacenados |
use-mcp proporciona a los desarrolladores de React una solución potente y concisa para integrar servidores Model Context Protocol. A través de su interfaz de Hook intuitiva, el manejo completo del flujo de autenticación y las potentes funciones de gestión de conexiones, los desarrolladores pueden implementar fácilmente la integración de herramientas de IA en aplicaciones React, reduciendo en gran medida la barrera de entrada para el uso del estándar MCP.