Skip to main content
Glama
SantoshpHiremath

rag-tool-agent

RAG Tool Agent — MCP-сервер

Предоставляет два инструмента, лежащие в основе проекта rag-tool-agent-demo (Q&A с опорой на поиск по заметкам набора данных FordA и безопасный арифметический калькулятор), как полноценный сервер Model Context Protocol, так что любой MCP-совместимый клиент — Claude Desktop, MCP-совместимая агентная обвязка или собственный хост — может вызывать их напрямую, а не только через собственный CLI этого проекта или через Flask HTTP-обёртку в rag-tool-api-docker.

Создан, чтобы закрыть конкретный, явно обозначенный пробел: несколько актуальных вакансий в сфере AI-инженерии/агентных приложений явно требуют практического опыта работы с MCP (и смежных протоколов agent-to-agent/agent-to-UI). Это небольшая, реальная, протестированная реализация, а не заявление об опыте работы с протоколом без доказательств.

Почему это так устроено

Оригинальный агент выполняет собственную маршрутизацию внутри: самодельный if/else, который для каждого входящего вопроса решает: «калькулятор» против «поиска» против «прямого ответа». MCP переворачивает это: клиент (хост LLM/агента) выполняет маршрутизацию, читая имя, описание и параметры JSON-schema каждого инструмента и решая, какой из них вызвать. Поэтому этот сервер не воссоздаёт исходную логику маршрутизации — он предоставляет две базовые возможности как автономные, независимо вызываемые MCP-инструменты и позволяет любому MCP-клиенту самому направлять к ним запросы. В этом и заключается суть протокола: инструменты становятся независимыми от хоста, а не жёстко встроенными в диспетчерскую логику одного агента.

  • search_notes(query: str) -> str — поиск по небольшому встроенному корпусу заметок о наборе данных FordA; результат возвращается с тем же суффиксом происхождения [Grounded in N retrieved chunk(s) from ...], который использует оригинальный агент, так что клиент может отличить обоснованный ответ от необоснованного. Используется небольшой ранжировщик по пересечению ключевых слов, а не пересоздаётся индекс FAISS/embeddings исходного проекта — суть этого проекта в слое предоставления через MCP, а не в дублировании той работы.

  • calculate(expression: str) -> str — арифметический инструмент, ограниченный + - * / () и числовыми литералами через безопасный вычислитель на основе ast (а не голый eval() для произвольного ввода). Проверено, что он отклоняет как неарифметический ввод, так и попытки инъекций, например __import__('os').system(...).

  • Создан с использованием официального Python SDK mcp (FastMCP) — того же SDK, который Anthropic публикует для создания MCP-серверов.

Related MCP server: NotebookLM MCP Server

Запуск

pip install -r requirements.txt
python server.py

Работает через stdio — стандартный локальный транспорт, который MCP-клиенты, такие как Claude Desktop, используют для запуска сервера и общения с ним как с подпроцессом. Чтобы подключить Claude Desktop к нему, добавьте в его конфигурацию MCP-сервера:

{
  "mcpServers": {
    "rag-tool-agent": {
      "command": "python",
      "args": ["/absolute/path/to/server.py"]
    }
  }
}

Запуск тестов

pytest tests/ -v

11 тестов, все проходят — вызываются функции инструментов напрямую (для модульного покрытия самой логики инструментов транспорт MCP не нужен): обоснованные ответы на поисковые запросы, контракт на количество обоснований, корректность арифметики (включая пример деления, совпадающий с документированным примером самого оригинального агента), отклонение неарифметического и инъекционного ввода, обработка деления на ноль и самостоятельная регистрация инструментов с описаниями.

Проверено как настоящий MCP-сервер, а не просто как функции

Помимо модульных тестов, проведена сквозная проверка с использованием настоящего клиентского SDK mcp (ClientSession + stdio_client): запуск server.py как реального подпроцесса, выполнение рукопожатия MCP initialize, вызов list_tools() и вызов обоих инструментов по реальному протоколу:

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')" ...

Это подтверждает, что сервер поддерживает настоящий MCP (рукопожатие, обнаружение инструментов, вызов инструментов), а не только то, что лежащие в основе функции Python работают по отдельности.

Связь с двумя другими проектами

  • rag-tool-agent-demo — оригинальный CLI-агент: LangChain, FAISS, Ollama, поисковая цепочка LCEL, инструмент-калькулятор, маршрутизация на основе LLM.

  • rag-tool-api-docker — тот агент, обёрнутый в Flask HTTP API, контейнеризированный (Docker, многоступенчатая сборка, пользователь без root-прав, проверка состояния), проверенный реальными HTTP-запросами к запущенному контейнеру.

  • Этот проект — те же базовые возможности (поиск, калькулятор), предоставляемые через MCP вместо HTTP, так что их может вызывать любой MCP-хост, а не только 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