react-hook-mcp-demo
v1.0.0
Published
Demo de la biblioteca react-hook-mcp para conectar React con Model Context Protocol
Maintainers
Readme
React Router v7 + LLMRestClient Demo
Este proyecto demuestra cómo usar LLMRestClient dentro de funciones action de React Router v7 para interactuar con Ollama.
🚀 Características
- ✅ React Router v7 con funciones
action - ✅ LLMRestClient para comunicación con Ollama
- ✅ Formularios con manejo de estado de carga
- ✅ Navegación entre páginas
- ✅ Manejo de errores y respuestas
- ✅ Conexión/desconexión al servidor LLM
📋 Requisitos
- Node.js 18+
- Ollama instalado y ejecutándose en
http://localhost:11434 - Al menos un modelo descargado (ej:
llama3.2:3b)
🛠️ Instalación
npm install🚀 Ejecución
1. Iniciar Ollama (si no está ejecutándose)
ollama serve2. Ejecutar la aplicación React Router
npm run dev:reactLa aplicación se abrirá automáticamente en http://localhost:3000
📖 Uso
Páginas disponibles:
- 🏠 Inicio - Información general del proyecto
- 🤖 Consulta LLM - Formulario para enviar consultas al modelo
- 🔗 Conexiones - Gestión de conexiones al servidor LLM
Ejemplo de uso:
- Ve a la página "🔗 Conexiones" y haz clic en "🔗 Conectar"
- Ve a "🤖 Consulta LLM" y selecciona un modelo
- Escribe tu consulta y haz clic en "🚀 Enviar Consulta"
- Ve la respuesta del modelo en tiempo real
🔧 Código de ejemplo
Función Action de React Router v7:
export async function llmAction({ request }: { request: Request }) {
const formData = await request.formData();
const query = formData.get("query") as string;
const model = (formData.get("model") as string) || "llama3.2:3b";
// Crear instancia del cliente LLM
const client = new LLMRestClient({
apiUrl: "http://localhost:11434/api/chat",
model: model,
});
// Conectar al servidor
await client.connect();
// Procesar la consulta
const respuesta = await client.processUserQuery(query);
// Desconectar cuando termines
await client.disconnect();
return {
success: true,
query,
response: respuesta,
model,
};
}Componente con Formulario:
function LLMQueryForm() {
const actionData = useActionData() as any;
const navigation = useNavigation();
const isSubmitting = navigation.state === "submitting";
return (
<Form method="post" action="/llm-query">
<textarea name="query" required />
<select name="model">
<option value="llama3.2:3b">llama3.2:3b</option>
</select>
<button type="submit" disabled={isSubmitting}>
{isSubmitting ? "🔄 Procesando..." : "🚀 Enviar"}
</button>
</Form>
);
}📁 Estructura del proyecto
src/
├── llm_rest_client.ts # Cliente LLM para Ollama
├── react-router-example.tsx # Aplicación React Router v7
├── main.tsx # Punto de entrada
└── index.ts # Servidor Hono (alternativo)🔗 Enlaces útiles
🤝 Contribuir
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
📄 Licencia
Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE para detalles.
