LPrati/echart-mcp-server
If you are the rightful owner of echart-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
MCP Server for Apache ECharts provides tools for creating professional data visualizations with Brazilian Portuguese formatting.
MCP Server para Gráficos Apache ECharts
Servidor MCP (Model Context Protocol) para construção de gráficos usando o padrão Apache ECharts. Fornece ferramentas para criar visualizações de dados profissionais com formatação em português brasileiro.
Características
- ✅ Gráficos de linha para séries temporais
- ✅ Gráficos de barras para comparação de categorias
- ✅ Gráficos de pizza para visualização de proporções
- ✅ Gráficos combinados (linha + barra)
- ✅ Formatação automática de valores em R$
- ✅ Suporte para porcentagens e valores absolutos
- ✅ Formatação de datas em padrão brasileiro
Instalação
# Instalar dependências com uv
uv pip install -r requirements.txt
# Ou com pip
pip install -r requirements.txt
Uso
Executar o servidor
# Executar com configurações padrão (127.0.0.1:8000)
uv run python echart_server.py
# Especificar host e porta customizados
uv run python echart_server.py --host 0.0.0.0 --port 8080
# Ver opções disponíveis
uv run python echart_server.py --help
Parâmetros de Execução
-
--host: Endereço IP para bind do servidor (padrão:127.0.0.1)- Use
127.0.0.1para acesso local apenas - Use
0.0.0.0para aceitar conexões de qualquer interface (útil em Docker)
- Use
-
--port: Porta para o servidor (padrão:8000)
Exemplos de Uso
# Desenvolvimento local
python echart_server.py
# Produção/Docker - aceitar conexões externas
python echart_server.py --host 0.0.0.0 --port 8080
# Porta customizada mantendo acesso local
python echart_server.py --port 3000
Ferramentas Disponíveis
1. create_line_chart
Cria gráficos de linha para visualizar séries temporais ou tendências.
Parâmetros:
title(str): Título do gráficox_data(List[str]): Valores do eixo X (ex: datas, meses)y_data(List[List[float]]): Valores do eixo Y (uma lista por série)series_names(List[str]): Nomes das sériesx_label(str, opcional): Rótulo do eixo Xy_label(str, opcional): Rótulo do eixo Yy_format_type(str, opcional): Tipo de formatação ('currency_brl', 'percentage', 'absolute')
Retorno: String formatada no padrão:
```echarts
{
"title": {...},
"xAxis": {...},
...
}
**Exemplo:**
```python
result = create_line_chart(
title="Vendas Mensais",
x_data=["Jan", "Fev", "Mar", "Abr"],
y_data=[[100000, 120000, 115000, 140000]],
series_names=["Vendas 2024"],
y_format_type="currency_brl"
)
# result será uma string começando com ```echarts
2. create_bar_chart
Cria gráficos de barras para comparar categorias ou grupos.
Parâmetros:
title(str): Título do gráficocategories(List[str]): Categorias do eixo Xseries_data(List[List[float]]): Valores (uma lista por série)series_names(List[str]): Nomes das sériesx_label(str, opcional): Rótulo do eixo Xy_label(str, opcional): Rótulo do eixo Yy_format_type(str, opcional): Tipo de formataçãostack(bool, opcional): Se True, cria barras empilhadas
Retorno: String formatada com configuração ECharts.
Exemplo:
result = create_bar_chart(
title="Comparação de Vendas por Loja",
categories=["Jan", "Fev", "Mar"],
series_data=[
[50000, 60000, 55000], # Loja A
[45000, 58000, 62000] # Loja B
],
series_names=["Loja A", "Loja B"],
y_format_type="currency_brl"
)
# result será uma string com a configuração completa do gráfico
3. create_pie_chart
Cria gráficos de pizza para mostrar proporções ou distribuições.
Parâmetros:
title(str): Título do gráficodata(List[Dict]): Lista de dicionários com 'name' e 'value'show_percentage(bool): Se True, mostra porcentagem no tooltipradius(str): Raio do gráfico (padrão: "50%")center(List[str]): Posição do centro [x, y]
Retorno: String formatada com configuração ECharts.
Exemplo:
result = create_pie_chart(
title="Distribuição de Vendas por Categoria",
data=[
{"name": "Eletrônicos", "value": 45000},
{"name": "Roupas", "value": 32000},
{"name": "Alimentos", "value": 28000}
],
show_percentage=True
)
# result será uma string formatada no padrão especificado
4. create_combined_chart
Cria gráficos combinados com linhas e barras.
Parâmetros:
title(str): Título do gráficox_data(List[str]): Valores do eixo Xline_data(List[Dict], opcional): Dados para séries de linhabar_data(List[Dict], opcional): Dados para séries de barrax_label(str, opcional): Rótulo do eixo Xy_label(str, opcional): Rótulo do eixo Yy_format_type(str, opcional): Tipo de formatação
Retorno: String formatada com configuração ECharts.
Exemplo:
result = create_combined_chart(
title="Vendas vs Meta",
x_data=["Jan", "Fev", "Mar"],
bar_data=[{"name": "Vendas", "data": [100000, 120000, 115000]}],
line_data=[{"name": "Meta", "data": [110000, 110000, 110000]}],
y_format_type="currency_brl"
)
# result será uma string formatada para uso direto
Tipos de Formatação
currency_brl
Formata valores como moeda brasileira (R$ 1.234,56)
percentage
Formata valores como porcentagem (45.2%)
absolute
Formata números com separador de milhares (1.234)
date
Formata datas no padrão brasileiro (DD/MM/YYYY)
Integração com Aplicações Web
As ferramentas retornam strings formatadas com a configuração completa do Apache ECharts:
// No frontend JavaScript
const response = await getChartFromMCP(); // String retornada do MCP server
// A string vem no formato ```echarts\n{...}\n```
// Extrair o JSON da string
const jsonContent = response.slice(11, -4); // Remove ```echarts\n e \n```
const chartConfig = JSON.parse(jsonContent);
// Usar no ECharts
const myChart = echarts.init(document.getElementById('chart'));
myChart.setOption(chartConfig);
Estrutura do Projeto
echart-mcp-server/
├── echart_server.py # Servidor MCP principal
├── formatters.py # Funções de formatação
├── requirements.txt # Dependências
└── README.md # Esta documentação
Requisitos
- Python 3.8+
- FastMCP
- Apache ECharts (no frontend para renderização)