BNCC MCP
MCP server that exposes skills from the Brazilian National Common Curricular Base (BNCC) with thematic units, knowledge objects, and prioritization layer from Mapa de Foco, enabling lookup, search, listing, and statistics of educational skills.
README
BNCC MCP
Servidor MCP que expõe as habilidades da Base Nacional Comum Curricular (Educação Infantil, Ensino Fundamental e Ensino Médio) com unidade temática, objeto de conhecimento e a camada de priorização do Mapa de Foco (Instituto Reúna).
A BNCC (MEC) é de livre uso; o Mapa de Foco é © Instituto Reúna, incluído
mediante autorização e sujeito a atribuição/uso não comercial — ver
ATTRIBUTION.md.
Sumário
- Acervo
- Instalação
- Configuração no Claude Code
- Tools
- Esquema dos registros
- Semântica do filtro de ano
- Procedência dos dados
- Limitações
- Estrutura do projeto
Acervo
| Etapa | Habilidades | Enriquecimento |
|---|---|---|
| Ensino Fundamental | 1304 | 100% com unidade temática + objeto de conhecimento |
| Educação Infantil | 93 | campos de experiência |
| Ensino Médio | 179 | área |
| Total | 1576 |
Mapa de Foco — 396 habilidades priorizadas com classificação, conhecimento prévio, objetivos de aprendizagem, competências e habilidades relacionadas e comentários:
| Componente | Em foco |
|---|---|
| Língua Portuguesa | 127 |
| Matemática | 123 |
| Ciências | 56 |
| Geografia | 53 |
| História | 37 |
Instalação
Requer Python 3.10+.
pip install bncc-mcp # quando publicado no PyPI
# ou, a partir do código-fonte:
pip install .
# para desenvolvimento:
pip install -e .
Configuração no Claude Code
Após instalar o pacote:
claude mcp add bncc --scope user -- python -m bncc_mcp
Ou manualmente em .mcp.json / configuração de MCP:
{
"mcpServers": {
"bncc": {
"command": "python",
"args": ["-m", "bncc_mcp"]
}
}
}
As tools aparecem como mcp__bncc__<nome> na sessão seguinte (servidores
adicionados durante uma sessão não carregam retroativamente).
Tools
bncc_lookup(codigo)
Retorna o registro completo de uma habilidade pelo código.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
codigo |
string | sim | Código da habilidade (ex.: EF06MA01, EF01LP01, EM13LGG101). Case-insensitive. |
Quando a habilidade está no Mapa de Foco, o objeto mapa_foco é incluído.
Código inexistente devolve {"erro": ..., "dica": ...}.
Exemplo — bncc_lookup("EF06MA01"):
{
"codigo": "EF06MA01",
"etapa": "Ensino Fundamental",
"componente": "Matemática",
"ano_ou_faixa": "06",
"campo_experiencia": "",
"unidade_tematica": "Números",
"objeto_conhecimento": "Sistema de numeração decimal: características, leitura, escrita e comparação de números naturais e de números racionais representados na forma decimal",
"habilidade": "Comparar, ordenar, ler e escrever números naturais e números racionais cuja representação decimal é finita, fazendo uso da reta numérica.",
"em_foco": true,
"mapa_foco": {
"classificacao": "AF",
"conhecimento_previo": "EF05MA01, EF05MA02, EF05MA05 e EF05MA07",
"objetivos_aprendizagem": "• Ler e escrever números naturais e números racionais decimais\n• Comparar ...",
"competencias_relacionadas": "CG: 1 e 4",
"habilidades_relacionadas": "EF06MA05 EF06MA12",
"comentarios": "..."
}
}
bncc_buscar(texto, etapa, componente, ano, apenas_em_foco, limite)
Busca habilidades por palavra-chave no enunciado/objeto/unidade
(acento-insensível), com filtros opcionais. Todos os termos do texto precisam
estar presentes (AND).
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
texto |
string | "" |
Termo(s) a buscar. Vazio = só aplica filtros. |
etapa |
string | "" |
Ensino Fundamental, Educação Infantil, Ensino Médio (substring). |
componente |
string | "" |
Ex.: Matemática, Língua Portuguesa, Ciências (substring, casa também area do EM). |
ano |
string | "" |
Ver semântica do filtro de ano. |
apenas_em_foco |
bool | false |
Restringe às habilidades do Mapa de Foco. |
limite |
int | 30 |
Máximo de resultados. |
Retorno: { "total": int, "exibindo": int, "resultados": [ {codigo, etapa, componente, ano, em_foco, habilidade} ] }
Exemplo — bncc_buscar(texto="fração", componente="Matemática", apenas_em_foco=true, limite=3):
{
"total": 4,
"exibindo": 3,
"resultados": [
{"codigo": "EF06MA07", "etapa": "Ensino Fundamental", "componente": "Matemática", "ano": "06", "em_foco": true, "habilidade": "Compreender, comparar e ordenar frações associadas às ideias de ..."}
]
}
bncc_listar(componente, ano, etapa, limite)
Lista as habilidades de um recorte (componente + ano), com unidade temática e objeto de conhecimento de cada uma.
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
componente |
string | — (obrigatório) | Ex.: Matemática. |
ano |
string | "" |
Vazio = todos os anos do componente. |
etapa |
string | "" |
Opcional, para desambiguar. |
limite |
int | 100 |
Máximo de resultados. |
Retorno: { "componente", "ano", "total", "exibindo", "resultados": [ {codigo, ano, unidade_tematica, objeto_conhecimento, em_foco, habilidade} ] }
bncc_mapa_de_foco(componente, ano, limite)
Retorna as habilidades priorizadas no Mapa de Foco, com toda a camada pedagógica.
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
componente |
string | "" |
Vazio = todos os componentes cobertos. |
ano |
string | "" |
Vazio = todos os anos. |
limite |
int | 100 |
Máximo de resultados. |
Retorno: { "componente", "ano", "total", "exibindo", "resultados": [ {codigo, componente, ano, unidade_tematica, objeto_conhecimento, habilidade, mapa_foco} ] }
Exemplo — bncc_mapa_de_foco(componente="História", ano="6", limite=1):
{
"componente": "História",
"ano": "6",
"total": 23,
"exibindo": 1,
"resultados": [
{
"codigo": "EF06HI01",
"componente": "História",
"ano": "06",
"unidade_tematica": "História: tempo, espaço e formas de registros",
"objeto_conhecimento": "A questão do tempo, sincronias e diacronias: reflexões sobre o sentido das cronologias",
"habilidade": "Identificar diferentes formas de compreensão da noção de tempo e de periodização dos processos históricos (continuidades e rupturas).",
"mapa_foco": {
"classificacao": "AF",
"conhecimento_previo": "EF05HI07",
"objetivos_aprendizagem": "• Identificar e analisar diferentes noções de tempo.\n• Construir os conceitos de sincronia e de diacronia ...",
"competencias_relacionadas": "CG: 1 e 2\nCA: 2, 4 e 5\nCE: 2 e 6",
"habilidades_relacionadas": "AF:\n- EF06GE11: amplia o conhecimento da AF.\n- EF06GE08: amplia o conhecimento da AF.",
"comentarios": "Ao se trabalhar características físico-naturais da superfície terrestre ..."
}
}
]
}
Campos do mapa_foco:
| Campo | Conteúdo |
|---|---|
classificacao |
Classificação da habilidade no Mapa de Foco (ex.: AF). |
conhecimento_previo |
Códigos de habilidades pré-requisito de anos anteriores. |
objetivos_aprendizagem |
Objetivos de aprendizagem desdobrados (lista com •). |
competencias_relacionadas |
Competências gerais (CG), de área (CA) e específicas (CE). |
habilidades_relacionadas |
Códigos de habilidades relacionadas. |
comentarios |
Comentário pedagógico / orientações de trabalho. |
bncc_estatisticas()
Resumo do acervo. Sem parâmetros.
{
"total_habilidades": 1576,
"por_etapa": {"Ensino Fundamental": 1304, "Educação Infantil": 93, "Ensino Médio": 179},
"em_foco_total": 396,
"em_foco_por_componente": {"Ciências": 56, "Geografia": 53, "História": 37, "Língua Portuguesa": 127, "Matemática": 123}
}
Esquema dos registros
Campos retornados por bncc_lookup (varia conforme a etapa):
| Campo | Etapas | Descrição |
|---|---|---|
codigo |
todas | Código da habilidade. |
etapa |
todas | Ensino Fundamental / Educação Infantil / Ensino Médio. |
componente |
EF | Componente curricular. |
area |
EM | Área do Ensino Médio. |
ano_ou_faixa |
EF/EI | Ano ('06') ou faixa ('69'); faixa etária para EI. |
campo_experiencia |
EI | Campo de experiência. |
unidade_tematica |
EF | Unidade temática (ou prática de linguagem / eixo). |
objeto_conhecimento |
EF | Objeto de conhecimento. |
habilidade |
todas | Enunciado da habilidade. |
em_foco |
todas | true se está no Mapa de Foco. |
mapa_foco |
em foco | Objeto com a camada pedagógica (ver acima). |
Semântica do filtro de ano
O parâmetro ano aceita 6, 06 ou 6º (a pontuação é ignorada) e segue a
convenção de codificação da BNCC:
- Ano único vem com zero à esquerda:
06= 6º ano. - Faixa vem sem zero, com 1º dígito < 2º:
69= 6º ao 9º,15= 1º ao 5º,35= 3º ao 5º,12= 1º e 2º.
Buscar ano="6" retorna tanto as habilidades exclusivas do 6º ano (EF06...)
quanto as de faixas que incluem o 6º (EF69..., EF67...).
Procedência dos dados
Os CSVs em data/ são gerados por dois scripts no diretório-pai do projeto:
extrair_objetos.py— extrai unidade temática + objeto de conhecimento do PDF oficial da BNCC (EI/EF), explorando o layout em spread de duas páginas e casando por coordenada vertical. Cobre 100% das 1304 habilidades EF.add_mapa_foco.py— lê a planilha unificada do Mapa de Foco (MapasDeFocoBncc_Unificados.xlsx, Instituto Reúna) e acrescenta as 7 colunas do Mapa de Foco para as 396 habilidades selecionadas.
Para regerar: rodar os dois scripts (nessa ordem) e copiar
BNCC_habilidades_enriquecido.csv → data/bncc_habilidades.csv e
bncc_em_habilidades.csv → data/bncc_em.csv.
Limitações
- O Mapa de Foco cobre apenas Língua Portuguesa, Matemática, Ciências,
História e Geografia do Ensino Fundamental. Para Arte, Educação Física,
Língua Inglesa, Ensino Religioso, Educação Infantil e Ensino Médio,
em_focoé semprefalse— porque não há Mapa de Foco publicado para esses, não por lacuna do acervo. - Educação Infantil não tem unidade temática nem objeto de conhecimento (usa campos de experiência); esses campos ficam vazios para EI.
- Alguns objetos de conhecimento longos e com marcadores de História podem juntar duas células adjacentes do PDF (limitação da extração por coordenada).
Estrutura do projeto
bncc-mcp/
├── pyproject.toml # empacotamento; console script `bncc-mcp`
├── README.md # este arquivo
├── LICENSE # MIT (cobre o código)
├── ATTRIBUTION.md # proveniência e licenças dos dados
├── CHANGELOG.md
├── bncc_mcp/
│ ├── __init__.py
│ ├── __main__.py # `python -m bncc_mcp`
│ ├── server.py # servidor MCP (FastMCP), 5 tools
│ └── data/
│ ├── bncc_habilidades.csv # EI + EF, enriquecido + Mapa de Foco
│ └── bncc_em.csv # Ensino Médio
└── tests/
└── test_server.py
Licença e atribuição
- Código: licença MIT (ver
LICENSE). - Dados: a BNCC (MEC) é de livre uso; o Mapa de Foco é © 2020 Instituto
Reúna, incluído mediante autorização, e seu reuso exige atribuição e é
restrito a fins não comerciais. Detalhes e forma de citar em
ATTRIBUTION.md.
Dados da BNCC: Ministério da Educação (MEC). Camada de priorização: Mapas de Foco da BNCC © 2020 Instituto Reúna (institutoreuna.org.br), usados com autorização.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。