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/ -v11 тестов, все проходят — вызываются функции инструментов напрямую (для модульного покрытия самой логики инструментов транспорт 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-клиент.
This server cannot be installed
Maintenance
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
- AlicenseNot gradedqualityDmaintenanceEnables basic arithmetic operations (add, subtract, multiply, divide, modulo) via natural language, with a FastMCP-based server and client for exploring MCP tool calling.MIT
- AlicenseNot gradedqualityCmaintenanceExposes Google NotebookLM as MCP tools, enabling management of notebooks, sources, chat, artifacts, and research via natural language.2MIT
- AlicenseNot gradedqualityBmaintenanceEnables document-based Q&A with multi-modal RAG, hybrid retrieval, knowledge graph reasoning, and multi-agent orchestration via MCP tools.4MIT
- FlicenseNot gradedqualityCmaintenanceEnables local document question-answering and retrieval via MCP, supporting multi-turn conversation, intent recognition, and tools for document search, Q&A, and summarization.5
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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