rag-tool-agent
RAG Tool Agent — Servidor MCP
Expone las dos herramientas que hay detrás del proyecto rag-tool-agent-demo (Q&A basado en recuperación sobre las notas del conjunto de datos FordA, y una calculadora aritmética segura) como un auténtico servidor Model Context Protocol, de modo que cualquier cliente compatible con MCP — Claude Desktop, un entorno de agente compatible con MCP o un host personalizado — pueda llamarlas directamente en lugar de hacerlo solo a través de la CLI del propio proyecto o del envoltorio HTTP Flask en rag-tool-api-docker.
Construido para cerrar una brecha concreta y bien definida: varias ofertas de empleo actuales para puestos de ingeniería de IA y de aplicaciones basadas en agentes piden explícitamente experiencia práctica con MCP (y protocolos relacionados de agente a agente/agente a UI). Esta es una implementación pequeña, real y probada, no una afirmación de experiencia en protocolos sin evidencia que la respalde.
Por qué está estructurado así
El agente original hace su propio enrutamiento internamente — un if/else hecho a mano que decide entre "calculator", "retrieval" o "direct answer" para cada pregunta entrante. MCP invierte eso: el cliente (el host LLM/agente) hace el enrutamiento, leyendo el nombre, la descripción y los parámetros de esquema JSON de cada herramienta y decidiendo cuál llamar. Por lo tanto, este servidor no reimplementa la lógica de enrutamiento original — expone las dos capacidades subyacentes como herramientas MCP independientes y llamables por separado, y deja que cualquier cliente MCP enrute hacia ellas. Ese es el verdadero propósito del protocolo: las herramientas se vuelven agnósticas al host en lugar de estar rígidamente integradas en la lógica de despacho de un único agente.
search_notes(query: str) -> str— búsqueda de tipo recuperación sobre un pequeño corpus de notas integrado sobre el conjunto de datos FordA, devuelta con el mismo sufijo de procedencia[Grounded in N retrieved chunk(s) from ...]que usa el agente original, de modo que un cliente pueda distinguir una respuesta fundamentada de una que no lo está. Utiliza un pequeño clasificador por solapamiento de palabras clave en lugar de volver a derivar el índice FAISS/embeddings del proyecto original — el objetivo de este proyecto es la capa de exposición MCP, no duplicar ese trabajo.calculate(expression: str) -> str— herramienta aritmética, restringida a+ - * / ()y literales numéricos mediante un evaluador seguro basado enast(no un simpleeval()sobre entrada arbitraria). Se ha verificado que rechaza tanto entradas no aritméticas como intentos de inyección como__import__('os').system(...).Construido con el SDK oficial de Python
mcp(FastMCP), el mismo SDK que Anthropic publica para construir servidores MCP.
Related MCP server: rag-mcp
Cómo ejecutarlo
pip install -r requirements.txt
python server.pySe ejecuta a través de stdio — el transporte local estándar que los clientes MCP como Claude Desktop usan para lanzar un servidor como subproceso y comunicarse con él. Para que Claude Desktop lo use, añade lo siguiente a su configuración de servidores MCP:
{
"mcpServers": {
"rag-tool-agent": {
"command": "python",
"args": ["/absolute/path/to/server.py"]
}
}
}Ejecutar las pruebas
pytest tests/ -v11 pruebas, todas pasando — llaman a las funciones de las herramientas directamente (no se necesita transporte MCP para la cobertura a nivel de unidad de la lógica de la herramienta en sí): respuestas de recuperación fundamentadas, el contrato de recuento de fundamentación, corrección aritmética (incluido un ejemplo de división que coincide con el ejemplo documentado del propio agente original), rechazo de entradas no aritméticas y de inyección, manejo de división por cero y autorregistro de herramientas con descripciones.
Verificado como un servidor MCP real, no solo como funciones
Más allá de las pruebas unitarias, esto se verificó de extremo a extremo utilizando el SDK de cliente mcp real (ClientSession + stdio_client): lanzando server.py como un subproceso real, completando el handshake initialize de MCP, llamando a list_tools() y llamando a ambas herramientas a través del protocolo real:
TOOLS: ['search_notes', 'calculate']
calculate -> 1320 / (3601 + 1320) = 0.2682381629750051
search_notes -> The FordA dataset is a univariate time-series
classification dataset... [Grounded in 3 retrieved chunk(s) from
forda_dataset_notes.md]
calculate(injection) -> Error: could not evaluate "__import__('os')" ...Eso confirma que el servidor habla MCP real (handshake, descubrimiento de herramientas, invocación de herramientas) y no solo que las funciones de Python subyacentes funcionan de forma aislada.
Relación con los otros dos proyectos
rag-tool-agent-demo— el agente CLI original: LangChain, FAISS, Ollama, cadena de recuperación LCEL, herramienta de calculadora, enrutamiento impulsado por LLM.rag-tool-api-docker— ese agente envuelto en una API HTTP Flask, contenerizado (Docker, compilación multi-etapa, usuario no root, health check), verificado con solicitudes HTTP reales contra un contenedor en ejecución.Este proyecto — las mismas capacidades subyacentes (recuperación, calculadora) expuestas a través de MCP en lugar de HTTP, de modo que cualquier host MCP pueda llamarlas en lugar de solo un cliente REST.
This server cannot be deployed
Maintenance
Related MCP Connectors
Salesforce-grounded retrieval, diagnoses, and a vetted-Force marketplace for MCP clients.
Free OpenAI-compatible inference with signed provenance receipts and 3 focused MCP tools.
Find, vet, and run MCP tools through a secure audited gateway with prompt-injection risk scoring
Agentic search over your Dewey document collections from any MCP-compatible client.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables document search, read-only SQL querying, arithmetic calculation, and corpus introspection through MCP tools, allowing Claude to dynamically discover and chain these tools together to answer multi-step questions.-
- FlicenseNot gradedqualityCmaintenanceEnables querying local documents via retrieval-augmented generation, along with current UTC datetime and safe arithmetic evaluation through MCP tools over HTTP.-
- AlicenseAqualityCmaintenanceProvides a document store, web search, and safe calculator as MCP tools, enabling both offline and LLM-driven clients to discover and call them over the Model Context Protocol.6MIT
- FlicenseNot gradedqualityCmaintenanceEnables an LLM to perform safe arithmetic calculations and web searches through a standardized MCP interface, returning results to generate informed responses.-