No description
- Go 99.1%
- Dockerfile 0.9%
|
|
||
|---|---|---|
| cmd | ||
| docs | ||
| internal | ||
| .gitignore | ||
| .woodpecker.yml | ||
| config.yml.example | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| README.md | ||
MCP Chart Server
MCP-сервер для генерации диаграмм из JSON данных с помощью MCP protocol (Model Context Protocol).
Возможности
- 9 инструментов для разных типов визуализаций: bar, scatter, pie, sankey, indicator, heatmap_graph, finance, geo_stat, distribution
- 23 render-функции в pure Go через gonum/plot (встроенный PNG encoder)
- Транспорты: stdio и HTTP streamable
- Конфигурация: YAML файл + CLI флаги с приоритетом flags > config > defaults
- Фильтрация групп по
--groupsпараметру - Логирование через slog с уровнями от off до debug
Диаграммы
| Инструмент | Чарты | Данные |
|---|---|---|
charts.generate_bar |
bar, line, area, dotplot | {categories, series[]} |
charts.generate_scatter |
scatter, effect_scatter, bubble | {series[].points[]} |
charts.generate_pie |
pie, donut, sunburst | {series[][name, value]} |
charts.generate_sankey |
sankey, treemap | {nodes[], links[]} |
charts.generate_indicator |
gauge, liquid_fill | {value} |
charts.generate_heatmap_graph |
heatmap, graph, word_cloud, treemap | {categories, series[]} |
charts.generate_finance |
kline | {series[][open, high, low, close]} |
charts.generate_geo_stat |
radar, parallel | {indicator[], series[]} |
charts.generate_distribution |
boxplot, violin, histogram_kde, stem_leaf, errorbar, contour | {series[].values[]} |
Все инструменты возвращают результат как image/png.
Быстрый старт
Сборка
go build -o mcp-chart ./cmd/mcp-chart/
Запуск
# stdio режим (по умолчанию)
./mcp-chart
# HTTP streamable
./mcp-chart --mode http-streamable --port 8080
# Конфиг из файла
./mcp-chart --config config.yml.example
# Только bar и pie группы
./mcp-chart --groups bar,pie
CLI флаги
| Флаг | Переменная окружения | По умолчанию | Описание |
|---|---|---|---|
--config |
— | — | Путь к config файлу (yaml/json) |
-m, --mode |
MODE |
stdio |
Режим: stdio, http-streamable, http-standalone |
-p, --port |
PORT |
8080 |
Порт для HTTP режимов |
-f, --log-file |
LOG_FILE |
"" |
Путь к файлу логов (jsonl) |
-L, --log-level |
LOG_LEVEL |
info |
Уровень: off, error, warn, info, debug |
-g, --groups |
CHART_GROUPS |
[] |
Группы инструментов (через запятую) |
Конфигурация
Скопируйте и отредактируйте пример:
cp config.yml.example ./.mcp-config.yml
Полный формат см. в config.yml.example.
Структура проекта
cmd/mcp-chart/ # Точка входа
internal/
config/ # Конфигурация и CLI парсинг
log/ # Логирование через slog
mcp/
server.go # Инициализация сервера, транспорта
tools/ # Инструменты (bar, scatter, pie, sankey, etc.)
render/
png.go # Рендеринг всех чартов в PNG
docs/ # Документация
config.yml.example # Пример конфигурации
Зависимости
github.com/modelcontextprotocol/go-sdk— MCP protocolgonum.org/v1/plot— визуализация (pure Go, встроенный png.Encoder)git.ymnuktech.ru/ymnuk/go-simple-args— CLI парсинг + конфиг
Лицензия
MIT