simple_mcp
MCP DROSPR Server
MCP-сервер для анализа Perl кода с помощью Perl::Critic.
Проект следует AI Engineering Standard (AES) v1.2, уровень AES-L2. См.
PROJECT_CONSTITUTION.mdиCLAUDE.md.
Инструменты
perlcritic_analyze
Анализирует Perl код и возвращает структурированный отчёт.
Параметры:
Параметр | Тип | Описание |
| string | ОБЯЗАТЕЛЬНО - Perl код для анализа |
| string | Имя файла (для отчёта) |
| int | Уровень строгости 1-5 (по умолчанию 1) |
Пример использования:
{
"method": "tools/call",
"params": {
"name": "perlcritic_analyze",
"arguments": {
"code": "use strict;\nopen FILE, 'test.txt';",
"severity": 1
}
}
}lookup_symbol
Найти где определена функция или метод в Perl-проекте.
{"method": "tools/call", "params": {"name": "lookup_symbol", "arguments": {"name": "process_billing"}}}Доступен только если загружен PPI-индекс (POST /index/upload).
get_file_structure
Карта файла: все функции с номерами строк, импорты, глобальные переменные.
{"method": "tools/call", "params": {"name": "get_file_structure", "arguments": {"filepath": "Finance/Billing.pm"}}}get_callers
Найти все места где реально вызывается функция (только фактические вызовы, не комментарии).
{"method": "tools/call", "params": {"name": "get_callers", "arguments": {"name": "process_billing"}}}index_status
Информация об индексе: дата обновления, количество файлов.
{"method": "tools/call", "params": {"name": "index_status", "arguments": {}}}check_before_push
Проверяет список Perl-файлов перед git push. Severity 4-5 блокирует пуш, severity 3 — предупреждение, 1-2 — игнорируется.
{
"method": "tools/call",
"params": {
"name": "check_before_push",
"arguments": {
"files": [{"filename": "Billing.pm", "code": "open(FILE, $path);"}],
"block_severity": 4
}
}
}Используется pre-push git хуком. Возвращает allow_push: true/false.
Related MCP server: mcp-lint-tools
Pre-push git хук — "Husky для Perl"
Автоматически проверяет Perl-файлы перед отправкой в Bitbucket.
Подключение (одна команда)
./setup.shЧто происходит при git push
git push
→ .githooks/pre-push срабатывает локально
→ читает изменённые .pl/.pm файлы
→ отправляет на MCP-сервер
→ severity 4-5 → ❌ пуш заблокирован
→ severity 3 → ⚠ предупреждение, пуш идёт
→ чисто → ✅ пуш проходит молчаНастройка адреса сервера
Поменяй MCP_URL в .githooks/pre-push:
MCP_URL="http://192.168.1.106:8000" # адрес виртуалки банкаТребования на машине разработчика
bash,curl,python3— стандарт, ничего дополнительно ставить не нужноPerl::Critic не нужен — работает в Docker на сервере
PPI-индекс — загрузка
Индекс собирается через TeamCity и загружается на сервер:
# На TeamCity-агенте (или вручную для теста):
perl tools/build_index.pl /path/to/perl/project | gzip > index.json.gz
curl -X POST http://<host>:8000/index/upload \
-H "Authorization: Bearer $MCP_INDEX_TOKEN" \
-H "Content-Encoding: gzip" \
--data-binary @index.json.gzТребует переменную окружения MCP_INDEX_TOKEN на сервере (см. раздел Запуск).
⚠️ Важно: Почему только code параметр
MCP всегда работает удалённо! Сервер запущен в Docker на другом компьютере.
┌─────────────────┐ ┌─────────────────┐
│ Компьютер │ │ MCP Сервер │
│ разработчика │ HTTP │ (Docker) │
│ │ ──────> │ │
│ Файл: │ │ Нет доступа │
│ C:\project\ │ │ к файловой │
│ script.pl │ │ системе! │
└─────────────────┘ └─────────────────┘Проблема:
LLM получает путь
C:\project\script.plLLM "эмулирует" чтение файла
Запускает MCP с
target: "C:\project\script.pl"MCP не видит этот файл! Он на другом компьютере.
Решение: LLM должен:
Прочитать файл реально
Отправить содержимое через параметр
code
Правильный флоу для LLM:
Пользователь: "Проверь C:\project\script.pl"
↓
LLM: Читаю файл C:\project\script.pl...
↓
LLM: Отправляю в MCP:
{
"code": "use strict;\nuse warnings;\n...",
"filename": "script.pl"
}Настройка LLM (Kiloterm/Cline)
Добавь в system prompt:
ПРОВЕРКА PERL КОДА:
1. Всегда читай файл ПОЛНОСТЬЮ перед анализом
2. Используй ТОЛЬКО параметр 'code' для perlcritic_analyze
3. НИКОГДА не используй параметр 'target' - он не работает для удалённого MCPЗапуск
Docker (рекомендуется)
docker pull lenchik8/simple_mcp:latest
docker run -d --name mcp-drospr \
-p 8000:8000 \
-e MCP_INDEX_TOKEN=your_secret_token \
-v mcp_data:/app/data \
lenchik8/simple_mcp:latest-v mcp_data:/app/data — сохраняет index.db между перезапусками контейнера.
Локальная сборка
docker build -t mcp-drospr .
docker run -p 8000:8000 -e MCP_INDEX_TOKEN=your_secret_token mcp-drosprИз исходников
pip install -e .
python server.pyПеременные окружения
Переменная | Обязательна | Описание |
| Для | Bearer-токен для загрузки PPI-индекса |
Структура проекта
mcp-drospr/
├── server.py # FastAPI, SSE, JSON-RPC, роутинг тулов
├── tools/
│ ├── perlcritic.py # Perl::Critic анализ
│ ├── index_store.py # SQLite хранилище PPI-индекса
│ └── build_index.pl # Perl-скрипт сборки индекса (запускается на TeamCity)
├── data/
│ └── index.db # SQLite индекс (создаётся после первой загрузки)
├── docs/
│ └── teamcity_setup.md # Инструкция для TeamCity-администратора
├── Dockerfile
└── pyproject.tomlПодключение к MCP клиенту
{
"mcpServers": {
"DROSPR_JARVIS": {
"url": "http://<IP>:8000",
"transport": "sse"
}
}
}Docker Hub
https://hub.docker.com/r/lenchik8/simple_mcp
GitHub
https://github.com/LENA-EE/simple_mcp
Примеры промптов для анализа Perl кода
Простой анализ файла
Проверь этот Perl файл на ошибки:
/path/to/script.plАнализ с мягким уровнем (только критичные ошибки)
Проверь код, но покажи только серьёзные проблемы (severity 4-5)Анализ кода (отправка кода напрямую)
Проверь этот Perl код:
use strict;
...Анализ проекта
Проанализируй каждый .pl файл в папке /src/Ограничения удалённого MCP
Анализ директорий возможен только если они доступны внутри контейнера
Для полного аудита проекта - отправляй код файлов по одному
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
MCP server for the Seline Analytics API
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for comprehensive code analysis, navigation, and quality assessment across 25+ programming languages.988MIT
- AlicenseNot gradedqualityDmaintenanceCode linting and style checking tools for AI agents, exposed as an MCP server. Supports style checks, naming conventions, complexity analysis, dead code detection, and import analysis.49 npmMIT
- AlicenseAqualityFmaintenanceA code review tool server based on Model Context Protocol (MCP) providing multi-dimensional code review and scoring.46 npmMIT
- AlicenseNot gradedqualityDmaintenanceMCP server for automated code review using AI agents. It analyzes code diffs or file paths for bugs, security issues, and style violations.MIT