use-mcp é uma biblioteca leve de hooks React, especializada em conectar-se a servidores Model Context Protocol (MCP). Este projeto simplifica o processo de autenticação e chamada de ferramentas do padrão MCP em sistemas de IA, fornecendo aos desenvolvedores uma solução de integração frontend fácil de usar.
npm install use-mcp
# Ou
pnpm add use-mcp
# Ou
yarn add use-mcp
import { useMcp } from 'use-mcp/react'
function MyAIComponent() {
const {
state, // Estado da conexão: 'discovering' | 'authenticating' | 'connecting' | 'loading' | 'ready' | 'failed'
tools, // Ferramentas disponíveis fornecidas pelo servidor MCP
error, // Informações de erro quando a conexão falha
callTool, // Função para chamar ferramentas do servidor MCP
retry, // Tentar reconectar manualmente
authenticate, // Acionar a autenticação manualmente
clearStorage, // Limpar tokens e credenciais armazenados
} = useMcp({
url: 'https://your-mcp-server.com',
clientName: 'My App',
autoReconnect: true,
})
// Lidar com diferentes estados de conexão
if (state === 'failed') {
return (
<div>
<p>Conexão falhou: {error}</p>
<button onClick={retry}>Tentar novamente</button>
<button onClick={authenticate}>Autenticar manualmente</button>
</div>
)
}
if (state !== 'ready') {
return <div>Conectando ao serviço de IA...</div>
}
// Usar as ferramentas disponíveis
const handleSearch = async () => {
try {
const result = await callTool('search', { query: 'example search' })
console.log('Resultado da pesquisa:', result)
} catch (err) {
console.error('Falha ao chamar a ferramenta:', err)
}
}
return (
<div>
<h2>Número de ferramentas disponíveis: {tools.length}</h2>
<ul>
{tools.map(tool => (
<li key={tool.name}>{tool.name}</li>
))}
</ul>
<button onClick={handleSearch}>Pesquisar</button>
</div>
)
}
Para lidar com o fluxo de autenticação OAuth, é necessário configurar um endpoint de callback na aplicação.
// App.tsx com 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 janela deve fechar automaticamente.</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 janela deve fechar automaticamente.</p>
</div>
)
}
function useMcp(options: UseMcpOptions): UseMcpResult
Opção | Tipo | Descrição |
---|---|---|
url |
string |
Obrigatório. URL do servidor MCP |
clientName |
string |
Nome do cliente ao registrar no OAuth |
clientUri |
string |
URI do cliente ao registrar no OAuth |
callbackUrl |
string |
URL de callback personalizada para redirecionamento OAuth (padrão: /oauth/callback no domínio atual) |
storageKeyPrefix |
string |
Prefixo da chave de armazenamento para dados OAuth no localStorage (padrão: "mcp:auth" ) |
clientConfig |
object |
Configuração personalizada para a identidade do cliente MCP |
debug |
boolean |
Se deve habilitar logs de depuração detalhados |
autoRetry |
boolean | number |
Tentar novamente automaticamente em caso de falha na conexão inicial, pode definir um atraso em milissegundos |
autoReconnect |
boolean | number |
Reconectar automaticamente quando a conexão estabelecida for perdida, pode definir um atraso em milissegundos (padrão: 3000) |
Propriedade | Tipo | Descrição |
---|---|---|
state |
string |
Estado atual da conexão: 'discovering' , 'authenticating' , 'connecting' , 'loading' , 'ready' , 'failed' |
tools |
Tool[] |
Ferramentas disponíveis fornecidas pelo servidor MCP |
error |
string | undefined |
Informações de erro quando a conexão falha |
authUrl |
string | undefined |
URL de autenticação manual quando o popup é bloqueado |
log |
LogEntry[] |
Array de mensagens de log |
callTool |
(name: string, args?: Record<string, unknown>) => Promise<any> |
Função para chamar ferramentas do servidor MCP |
retry |
() => void |
Tentar reconectar manualmente |
disconnect |
() => void |
Desconectar do servidor MCP |
authenticate |
() => void |
Acionar a autenticação manualmente |
clearStorage |
() => void |
Limpar todos os dados de autenticação armazenados |
use-mcp fornece aos desenvolvedores React uma solução poderosa e concisa para integrar servidores Model Context Protocol. Através de sua interface de Hook intuitiva, tratamento completo do fluxo de autenticação e poderosos recursos de gerenciamento de conexão, os desenvolvedores podem facilmente implementar a integração de ferramentas de IA em aplicações React, reduzindo significativamente a barreira de entrada para o uso do padrão MCP.