Brazilian Law Research MCP Server
Used by the MCP server to perform web scraping of official Brazilian legal sources, enabling the retrieval of court precedents and legal information.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Brazilian Law Research MCP Serverfind STJ precedents about environmental liability from the last 5 years"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Brazilian Law Research MCP Server
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
Clone the repository:
git clone https://github.com/pdmtt/brlaw_mcp_server.gitInstall the dependencies
uv run patchright installSetup 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 toolsStfLegalPrecedentsRequestC
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 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. | |
| summary | Yes | 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 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. | |
| summary | Yes | 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 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. | |
| summary | Yes | 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
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.
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.
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.
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.
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.
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.
3 tool updates
- First observed
StfLegalPrecedentsRequest - First observed
StjLegalPrecedentsRequest - First observed
TstLegalPrecedentsRequest
TDQS
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.
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.
Three tools is appropriate for querying legal precedents from three specific superior courts. The scope is narrow and well-defined, with no unnecessary tools.
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
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
MCP Server for an Agent Task Marketplace
Brazilian legal stack in one MCP: lawsuits, court publications, case law, tenders, certificates.
MCP server for the Fail Modes taxonomy — a knowledge base of AI system failure modes
Personal knowledge base MCP server with semantic search, auto-categorization, metadata extraction
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA 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-
- AlicenseNot gradedqualityDmaintenanceMCP 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
- AlicenseNot gradedqualityDmaintenanceMCP 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
- AlicenseAqualityBmaintenanceMCP 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.425MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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