Skip to main content
Glama
Nur1sat

Product Management MCP Server

by Nur1sat

AI Engineer Test Task

Реализация тестового задания:

  • MCP сервер на FastMCP (stdio, 4 инструмента)

  • LangGraph агент с mock LLM и custom tools

  • FastAPI endpoint для общения с агентом

  • Dockerfile + docker-compose

  • Набор тестов (3+)

Стек

  • Python 3.11+

  • FastMCP

  • MCP Python SDK

  • LangGraph + langchain-core

  • FastAPI + Uvicorn

  • Pytest

Структура проекта

.
├── app
│   ├── agent
│   │   ├── graph.py
│   │   ├── mcp_client.py
│   │   ├── mock_llm.py
│   │   └── tools.py
│   ├── main.py
│   └── schemas.py
├── mcp_server
│   ├── data/products.json
│   └── server.py
├── tests
│   ├── test_agent.py
│   ├── test_api.py
│   └── test_mcp_server.py
├── Dockerfile
├── docker-compose.yml
└── requirements.txt

MCP инструменты

В mcp_server/server.py реализованы tools:

  1. list_products(category: str | None = None)

  2. get_product(product_id: int)

  3. add_product(name: str, price: float, category: str, in_stock: bool = True)

  4. get_statistics()

Особенности:

  • transport: stdio

  • декораторы @mcp.tool

  • type hints + docstrings

  • ValueError, если товар не найден

Агентный flow (LangGraph)

  1. Узел analyze: mock LLM (rule-based) разбирает запрос и формирует action + params.

  2. Узел execute: вызывает MCP tools через stdio-клиент + custom tools.

  3. Узел respond: формирует финальный текст пользователю.

Custom tools:

  • calculate_discount

  • форматтеры ответа (format_products, format_statistics)

API

  • POST /api/v1/agent/query

  • GET /health

Пример запроса:

curl -X POST "http://localhost:8000/api/v1/agent/query" \
  -H "Content-Type: application/json" \
  -d '{"query":"Покажи все продукты в категории Электроника"}'

Запуск

Вариант 1: Docker Compose (рекомендуется)

docker compose up --build

API будет доступен на http://localhost:8000.

Вариант 2: Локально

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000

Тесты

pytest -q

Покрытие требований тестами:

  • tests/test_mcp_server.py:

    • добавление продукта

    • статистика

    • обработка ошибки ValueError

  • tests/test_agent.py:

    • вычисление средней цены

    • расчет скидки через custom tool

  • tests/test_api.py:

    • проверка POST /api/v1/agent/query

Примеры запросов к агенту

  • Покажи все продукты в категории Электроника

  • Какая средняя цена продуктов?

  • Добавь новый продукт: Мышка, цена 1500, категория Электроника

  • Посчитай скидку 15% на товар с ID 1

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

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/Nur1sat/MCP_'

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