Skip to main content
Glama
SantoshpHiremath

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 en ast (no un simple eval() 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: NotebookLM MCP Server

Cómo ejecutarlo

pip install -r requirements.txt
python server.py

Se 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/ -v

11 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.

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Free OpenAI-compatible inference with signed provenance receipts and 3 focused MCP tools.

  • Agentic search over your Dewey document collections from any MCP-compatible client.

  • Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SantoshpHiremath/rag-tool-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server