Moyklassmcpserver — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Moyklassmcpserver (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
MCP (Model Context Protocol) сервер для МойКласс CRM. Позволяет AI-агентам (Claude Desktop, Claude Code, ChatGPT и другим MCP-клиентам) читать данные CRM на естественном языке.
Итерация 1: только чтение (GET-эндпоинты).
Стек: TypeScript · MCP SDK 1.27+ · AWS Lambda (Node.js 24) · API Gateway V2 · SAM
| Инструмент | Эндпоинт | Описание |
|---|---|---|
list_joins | GET /v1/company/joins | Список записей учеников в группы с фильтрацией |
get_join | GET /v1/company/joins/{id} | Детали записи в группу |
list_users | GET /v1/company/users | Поиск учеников по имени, телефону, email, тегам |
get_user | GET /v1/company/users/{id} | Полная информация об ученике |
list_user_tags | GET /v1/company/userTags | Список тегов учеников |
list_tasks | GET /v1/company/tasks | Список задач с фильтрацией |
get_task | GET /v1/company/tasks/{id} | Детали задачи |
list_courses | GET /v1/company/courses | Список программ обучения |
list_classes | GET /v1/company/classes | Список учебных групп |
get_class | GET /v1/company/classes/{id} | Детали группы |
list_lessons | GET /v1/company/lessons | Расписание занятий с фильтрацией |
get_lesson | GET /v1/company/lessons/{id} | Детали занятия |
list_lesson_records | GET /v1/company/lessonRecords | Журнал посещаемости |
get_lesson_record | GET /v1/company/lessonRecords/{id} | Детали записи на занятие |
list_user_subscriptions | GET /v1/company/userSubscriptions | Абонементы учеников |
get_user_subscription | GET /v1/company/userSubscriptions/{id} | Детали абонемента |
git clone <repo-url>
cd MoyKlass
npm installСоздайте .env или экспортируйте переменную:
export MOYKLASS_API_KEY=ваш_api_ключ
# Опционально, по умолчанию https://api.moyklass.com
export CRM_API_URL=https://api.moyklass.comAPI-ключ находится в настройках компании в МойКласс → Интеграции → API.
MOYKLASS_API_KEY=ваш_ключ npm run devПри старте сервер автоматически получает accessToken через POST /v1/company/auth/getToken и кэширует его. При получении ошибки 401 токен обновляется автоматически.
npm run build # tsc → build/
npx @modelcontextprotocol/inspector build/index.jsОткроется браузерный инспектор на http://localhost:5173 для ручного вызова инструментов.
npm run build # собрать один раз~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"moyklass": {
"command": "node",
"args": ["/абсолютный/путь/к/MoyKlass/build/index.js"],
"env": {
"MOYKLASS_API_KEY": "ваш_api_ключ"
}
}
}
}Перезапустите Claude Desktop. В интерфейсе появится значок инструментов.
{
"mcpServers": {
"moyklass": {
"transport": "http",
"url": "https://xxx.execute-api.eu-central-1.amazonaws.com/prod/mcp"
}
}
}# AWS CLI + SAM CLI
brew install awscli aws-sam-cli
# Аутентификация AWS
aws configurenpm run build:lambda # → dist/lambda.js (~780 KB)sam deploy --guidedSAM запросит параметры при первом деплое:
| Параметр | Описание |
|---|---|
MoyKlassApiKey | API-ключ МойКласс |
CrmApiUrl | Base URL (по умолчанию https://api.moyklass.com) |
После деплоя SAM выведет McpUrl — URL для подключения MCP-клиентов.
npm run build:lambda
sam deploy # использует сохранённую конфигурациюAI-клиент (Claude Desktop / ChatGPT)
│
│ POST /mcp (MCP JSON-RPC)
▼
API Gateway HTTP API
│
▼
Lambda (Node.js 24)
├── apiGatewayEventToRequest() — адаптер Lambda ↔ Web Request
├── WebStandardStreamableHTTPServerTransport
│ sessionIdGenerator: undefined — stateless (нет хранилища сессий)
│ enableJsonResponse: true — JSON вместо SSE (для API Gateway)
├── McpServer → tool handler
│ └── apiRequest()
│ ├── getAccessToken() — кэш токена в памяти Lambda container
│ │ POST /v1/company/auth/getToken (при промахе кэша)
│ └── fetch() → МойКласс CRM API
└── cleanup: transport.close() + server.close()При старте Lambda-контейнера (cold start) или при истечении токена:
POST /v1/company/auth/getToken с MOYKLASS_API_KEYaccessToken кэшируется в памяти модуля (работает между warm invocations)x-access-token всех запросов401 Unauthorized — токен инвалидируется и немедленно обновляетсяКаждый Lambda-вызов полностью независим: создаёт свой McpServer и транспорт, обрабатывает запрос и уничтожается. Нет shared state, нет сессий, автоматическое горизонтальное масштабирование.
npm run build # tsc → build/ (для stdio)
npm run build:lambda # esbuild → dist/lambda.js (для Lambda)
npm run typecheck # проверка типов без компиляции
npm run dev # tsx watch src/index.ts (hot reload)| Переменная | Обязательная | По умолчанию | Описание |
|---|---|---|---|
MOYKLASS_API_KEY | Да | — | API-ключ компании МойКласс |
CRM_API_URL | Нет | https://api.moyklass.com | Base URL CRM API |
docs/openapi.jsonsrc/client/moyKlassClient.ts (если нужна специфичная обработка) или вызывать apiRequest напрямуюsrc/server.ts через server.tool(name, description, zodSchema, handler)npm run typecheck~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.