Skip to main content
Glama
pdmtt

Brazilian Law Research MCP Server

by pdmtt

Brazilian Law Research MCP Server

🇧🇷 Leia em português

A MCP (Model Context Protocol) server for agent-driven research on Brazilian law using official sources.

Foreword

This server empowers models with scraping capacities, thus making research easier to anyone legitimately interested in Brazilian legal matters.

This facility comes with a price: the risk of overloading the official sources' servers if misused. Please be sure to keep the load on the sources to a reasonable amount.

Related MCP server: mcp-brasil

Requirements

  • git

  • uv (recommended) or Python >= 3.12

  • Google Chrome

How to use

  1. Clone the repository:

git clone https://github.com/pdmtt/brlaw_mcp_server.git
  1. Install the dependencies

uv run patchright install
  1. Setup your MCP client (e.g. Claude Desktop):

{
  "mcpServers": {
    "brlaw_mcp_server": {
      "command": "uv",
      "args": [
        "--directory",
        "/<path>/brlaw_mcp_server",
        "run",
        "serve"
      ]
    }
  }
}

Available Tools

  • StjLegalPrecedentsRequest: Research legal precedents made by the National High Court of Brazil (STJ) that meet the specified criteria.

  • TstLegalPrecedentsRequest: Research legal precedents made by the National High Labor Court of Brazil (TST) that meet the specified criteria.

  • StfLegalPrecedentsRequest: Research legal precedents made by the Supreme Court (STF) that meet the specified criteria.

Development

Tooling

The project uses:

  • Ruff for linting and formatting.

  • BasedPyright for type checking.

  • Pytest for testing.

Language

Resources, tools and prompts related stuff must be written in Portuguese, because this project aims to be used by non-dev folks, such as lawyers and law students.

Technical legal vocabulary is highly dependent on a country's legal tradition and translating it is no trivial task.

Development related stuff should stick to English as conventional, such as source code.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Available Tools

3 tools
StfLegalPrecedentsRequestC

Requisição dos precedentes judiciais do Supremo Tribunal Federal (STF) que satisfaçam os critérios passados.

O STF é o órgão máximo do Poder Judiciário brasileiro, e a ele compete, precipuamente, zelar pelo cumprimento da Constituição, conforme definido em seu art. 102. Por esse motivo, o STF é conhecido como o Guardião da Constituição Federal.

Entre suas principais atribuições está a de julgar a ação direta de inconstitucionalidade de lei ou ato normativo federal ou estadual, a ação declaratória de constitucionalidade de lei ou ato normativo federal, a arguição de descumprimento de preceito fundamental decorrente da própria Constituição e a extradição solicitada por Estado estrangeiro.

Na área penal, destaca-se a competência para julgar, nas infrações penais comuns, o presidente da República, o vice-presidente, os membros do Congresso Nacional, seus próprios ministros e o procurador-geral da República, entre outros.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo A página dos resultados a ser retornada. Cada página contém uma fração dos resultados da pesquisa. A página 1 é a primeira página dos resultados. É útil requisitar mais de uma página para conseguir mais informações, se necessário. Por exemplo, se os resultados retornados pela página anteriormente requisitada forem pertinentes, mas não satisfatórios, é adequado requisitar a página seguinte para obter mais precedentes relacionados.
summaryYes Critérios que serão buscados na ementa das decisões desejadas. É possível utilizar operadores textuais para aumentar a assertividade da busca. Na ausência de qualquer operador explícito entre duas palavras, o sistema presumirá o operador `e`. Ou seja, `supermercado furto veículo` é o mesmo que `supermercado e furto e veículo`. ## `e` Todos os termos devem necessariamente aparecer no documento. EXEMPLO: direitos E humanos ATENÇÃO: por se tratar do operador padrão, não é necessário explicitar o E na expressão de busca. ## `ou` Ao menos um dos termos deve aparecer no documento. EXEMPLO: droga OU entorpecente ## `não` O termo adjacente não pode aparecer no documento. EXEMPLO: prisão NÃO preventiva EFEITO: no caso do exemplo, o sistema buscará documentos que envolvam prisões que NÃO sejam preventivas. ## `" "` Os termos devem aparecer no documento na exata ordem e com a exata grafia indicadas. EXEMPLO: "princípio da presunção de inocência" ATENÇÃO: os operadores contidos dentro das aspas perdem a função de operador lógico. Assim, `"direitos E humanos"` não é o mesmo que `direitos E humanos`. ## `" "~` Os termos podem aparecer no documento em qualquer ordem, desde que estejam separados, no máximo, pelo número de palavras indicado após o til. EXEMPLO: "provimento cargo"~5 EFEITO: no caso do exemplo, o sistema buscará quaisquer documentos que contenham as palavras `provimento` e `cargo` separadas por entre zero e cinco palavras. As seguintes expressões seriam consideradas válidas: - provimento cargo - cargo provimento - provimento de cargo - cargo teve o seu provimento ATENÇÃO: dentro dessa estrutura (aspas duplas + til), os únicos operadores admitidos são o `OU` e os parênteses; todos os demais (`E`, `NÃO`, `~`, `$`, `?`) são anulados. ## `~` Quando posicionado logo após determinada palavra, o til permite o resgate de documentos que contenham pequenas variações do termo pesquisado. O número de variações toleradas depende do número de caracteres do termo pesquisado: - até 3 caracteres, o operador til não produz efeito - entre 4 e 6 caracteres, o operador admite 1 variação - com mais de 6 caracteres, a busca contempla 2 variações Conta-se como 1 variação: - a troca de um caractere por outro (exemplo: de triagem para friagem) - a remoção de um caractere (exemplo: de místico para mítico) - a inserção de um caractere (exemplo: de recorre para recorrer) - a troca de posição de dois caracteres adjacentes (exemplo: de 598356 para 598365) EXEMPLO: amaldiçoado~ EFEITO: no caso do exemplo, o sistema buscará documentos que contenham a palavra `amaldiçoado` e outras que possam ser criadas a partir de até duas variações, pois a palavra-base tem mais de 6 caracteres. As seguintes expressões seriam consideradas válidas: - amaldiçoado - amaldiçoados - amaldiçoada - amaldiçoadas ## `$` O sinal de dólar substitui um, nenhum ou mais de um caractere no início, no meio ou no final do termo. EXEMPLO: $classificado ## `?` O ponto de interrogação substitui um único caractere no início, no meio ou no final do termo. EXEMPLO: RE 56394? ## `( )` Os parênteses indicam a ordem de prioridade das operações, quando utilizado mais de um operador. EXEMPLO: direito E (privacidade OU intimidade) EFEITO: no caso do exemplo, o sistema buscará documentos que contenham tanto a palavra `direito` quanto uma das duas palavras `privacidade` ou `intimidade`.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must fully disclose behavior. It mentions returning precedents based on criteria but omits side effects, auth requirements, rate limits, or limitations like only published decisions. The lengthy legal text adds no behavioral insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is excessively long and includes redundant paragraphs (repeated in the schema description). Unnecessary legal background about STF's role wastes space and is not front-loaded with actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, yet the description does not explain the return format, pagination behavior beyond the page parameter, or error cases. For a simple tool with two parameters, this missing context hurts completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents parameters well. The tool description itself does not add parameter semantics beyond what's in the schema (the operator guide is part of the schema description). Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool requests legal precedents from the STF that satisfy given criteria. The resource (STF precedents) and verb (request) are evident, and the name distinguishes it from siblings for other courts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the tool's purpose and sibling names (STJ, TST), but there is no explicit guidance on when to use this tool versus alternatives. No exclusion criteria or context-specific recommendations are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

StjLegalPrecedentsRequestA

Requisição dos precedentes judiciais do Superior Tribunal de Justiça (STJ) que satisfaçam os critérios passados.

O STJ é a instância máxima da justiça brasileira no âmbito infraconstitucional. É a Corte responsável por uniformizar a interpretação da lei federal em todo o País.

Produz decisões que influenciam todos os aspectos da vida cotidiana dos cidadãos, a maioria envolvendo causas de competência da chamada Justiça Comum.

É de sua responsabilidade a solução definitiva de casos civis e criminais que não envolvam matéria constitucional, sob reserva do Supremo Tribunal Federal (STF), nem questões afetas ao âmbito específico da Justiça do Trabalho, da Justiça Eleitoral ou da Justiça Militar.

Cabe também ao STJ a apreciação de decisões judiciais emitidas no exterior, entre as quais cartas rogatórias, pedidos de homologação de decisões estrangeiras e ações em que há contestação de sentença proferida fora do país.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo A página dos resultados a ser retornada. Cada página contém uma fração dos resultados da pesquisa. A página 1 é a primeira página dos resultados. É útil requisitar mais de uma página para conseguir mais informações, se necessário. Por exemplo, se os resultados retornados pela página anteriormente requisitada forem pertinentes, mas não satisfatórios, é adequado requisitar a página seguinte para obter mais precedentes relacionados.
summaryYes Critérios que serão buscados na ementa das decisões desejadas. É possível utilizar operadores textuais para aumentar a assertividade da busca. Na ausência de qualquer operador explícito entre duas palavras, o sistema presumirá o operador `e`. Ou seja, `supermercado furto veículo` é o mesmo que `supermercado e furto e veículo`. ## Operadores lógicos ### `e` Localiza termos em qualquer ordem ou campo do documento. EXEMPLO: supermercado e furto e veículo RESULTADO: o sistema buscará documentos que contenham as três palavras, em qualquer ordem ou distância. ATENÇÃO: esse é o operador presumido entre duas palavras, quando não houver outro operador explícito. Assim, não é necessário explicitá-lo nesses casos. Por exemplo, `supermercado e furto` é o mesmo que `supermercado furto`. ### `ou` Localiza um e/ou outro termo. Os termos devem vir sempre entre parênteses. EXEMPLO: (carro ou automóvel ou veículo) RESULTADO: o sistema buscará documentos que contenham qualquer uma das três palavras. ### `não` Exclui determinado termo da pesquisa. EXEMPLO: (seguro não automóvel) RESULTADO: o sistema buscará apenas os documentos que contenham a palavra “seguro”, mas excluirá do resultado aqueles que tragam a palavra “automóvel”. ### `mesmo` Localiza termos em um mesmo campo do documento. EXEMPLO: (FGTS mesmo súmula mesmo civil) RESULTADO: o sistema buscará os documentos que contenham as três palavras indicadas, em qualquer ordem ou distância, dentro de um mesmo campo. ### `com` Localiza termos em um mesmo parágrafo. EXEMPLO: recurso com STJ com furto com veículo RESULTADO: o sistema buscará os documentos que contenham as quatro palavras em qualquer ordem ou distância, dentro do mesmo parágrafo. ## Operadores de proximidade ### `PROX(N)` Localiza termos PROXimos, em qualquer ordem. (N) limita a distância entre os termos pesquisados. O segundo termo poderá ser até a enésima palavra antes ou depois do primeiro termo. EXEMPLO: nega prox2 provimento prox5 recursos RESULTADO: O sistema buscará os documentos que contenham as três palavras em qualquer ordem, até a distância determinada. No exemplo, serão recuperadas as expressões: “recursos a que se nega provimento” “nega-se provimento ao recurso” “recursos especiais a que se nega provimento” ### `ADJ(N)` Localiza termos ADJacentes, na ordem estabelecida na pesquisa. (N) limita a distância entre os termos pesquisados. O segundo termo poderá ser até a enésima palavra após o primeiro termo. adj = adj1 (busca os termos conjugados sem qualquer outra palavra entre eles). EXEMPLO: causa adj3 aumento adj2 pena RESULTADO: O sistema buscará os documentos que contenham as três palavras, na ordem digitada, até a distância delimitada. Serão resgatadas expressões como: “Causa de aumento de pena” “causas especiais de aumento de pena” ## Símbolos auxiliares ### `$` Substitui vários caracteres, podendo vir no início, meio ou fim da palavra. É possível limitar o número máximo de caracteres utilizando valores numéricos. EXEMPLO 1: constitui$ RESULTADO 1: Constitui; Constituir; Constituído; Constituição. EXEMPLO 2: $classificado RESULTADO 2: Classificado; Reclassificado; Desclassificado; Não-classificado. EXEMPLO 3: des$cao RESULTADO 3: Deserção; Descrição; designação. EXEMPLO 4: p$3 RESULTADO 4: PG; Para; PAR; Pode; Pena. ### `?` Substitui um único carácter, podendo vir no início, meio ou fim da palavra. Cada interrogação corresponde a um carácter. EXEMPLO: d?sc?r?? RESULTADO: Deserção; Descrição; designação; descrição. ### `( )` Usado para o operador OU e para agrupar itens da pesquisa. A alteração poderá ser feita manualmente. EXEMPLO: ((menor ou criança) e infrator) com pena RESULTADO: o sistema buscará os documentos que contenham as combinações: menor e infrator com pena ou criança e infrator com pena ### `" "` Utilizado para transformar um operador em palavra a ser pesquisada e para localizar expressões exatas. EXEMPLO: “não” adj previsto “tribunal de origem” RESULTADO: o sistema buscará documentos que contenham a expressão “não previsto”. O sistema buscará documentos que contenham a expressão “tribunal de origem”.

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, and the description lacks behavioral details such as side effects, authentication, rate limits, or read-only nature, leaving the agent uninformed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately structured with a clear first sentence, court context, and detailed parameter docs, though the court explanation is somewhat verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Lacks output schema and does not describe return format, pagination behavior, or error handling, leaving significant gaps given the complexity of the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters have detailed descriptions, especially the summary parameter which thoroughly explains query syntax with examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it requests STJ judicial precedents matching given criteria, and the court description distinguishes it from sibling tools for STF and TST.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains STJ's jurisdiction (infraconstitutional, federal law), implying when to use this tool, but does not explicitly exclude alternatives or provide when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TstLegalPrecedentsRequestB

Requisição dos precedentes judiciais do Tribunal Superior do Trabalho (TST) que satisfaçam os critérios passados.

O TST é o órgão de cúpula da Justiça do Trabalho. Tem a função precípua de uniformizar a jurisprudência trabalhista brasileira.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo A página dos resultados a ser retornada. Cada página contém uma fração dos resultados da pesquisa. A página 1 é a primeira página dos resultados. É útil requisitar mais de uma página para conseguir mais informações, se necessário. Por exemplo, se os resultados retornados pela página anteriormente requisitada forem pertinentes, mas não satisfatórios, é adequado requisitar a página seguinte para obter mais precedentes relacionados.
summaryYes Critérios que serão buscados na ementa das decisões desejadas. É admitido o uso de aspas e elas devem ser empregadas para pesquisas exatas de expressões ou palavras compostas.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; the description does not disclose behavioral traits like side effects, authentication needs, or rate limits. Only vague context about TST's role is given, which is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise: two sentences that effectively state purpose and background. No redundant or unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks information about the return format, pagination behavior, or any output details. Since no output schema exists, the description should compensate but does not.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already provides full parameter descriptions. The tool description does not add new semantic information beyond what is in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'Requisição' and the resource 'precedentes judiciais do TST', and distinguishes from siblings (STF, STJ) by specifying TST.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (for TST precedents) but does not explicitly state when not to use or compare to sibling tools. Usage guidance is implicit but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updates
    • First observedStfLegalPrecedentsRequest
    • First observedStjLegalPrecedentsRequest
    • First observedTstLegalPrecedentsRequest

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct Brazilian superior court (STF, STJ, TST) with clear, non-overlapping purposes. The descriptions include specific court responsibilities, making it unambiguous which tool to use for each court.

Naming Consistency5/5

All tool names follow a consistent pattern: acronym of the court plus 'LegalPrecedentsRequest' (e.g., StfLegalPrecedentsRequest). The naming is predictable and uniform, aiding agent selection.

Tool Count5/5

Three tools is appropriate for querying legal precedents from three specific superior courts. The scope is narrow and well-defined, with no unnecessary tools.

Completeness4/5

The server covers the three main superior courts (STF, STJ, TST), which are essential for Brazilian law research. Minor missing courts (e.g., TSE, STM) could be considered gaps, but for a focused research tool, the coverage is adequate.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A RAG-based MCP server for natural language querying of Brazilian healthcare manuals (SIH/SUS, SIA/SUS) and official ordinances. It provides 16 tools for semantic search, regulatory critique analysis, and retrieving data from SIGTAP and CNES.
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP Server for accessing 36 Brazilian public data sources and 1 agent, enabling AI agents to query government data on economy, legislation, transparency, judiciary, elections, environment, health, and more.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that connects AI agents to 28 Brazilian public APIs, providing tools to query government data on economy, legislation, transparency, judiciary, elections, environment, health, and more.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for token-efficient access to Open Finance Brasil rules, enabling coding agents to search and retrieve specific regulations, OpenAPI specs, and business rules through progressive disclosure.
    4
    25
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pdmtt/brlaw_mcp_server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server