内容
<h1 align="center">
<img alt="MCP PJe-TJMA 1º e 2º Graus" src="https://raw.githubusercontent.com/fxbarros/MCP-PJe-TJMA/main/docs/assets/banner.svg?sanitize=true">
<br>
<small>案件、期限和法院文件 - 马拉尼亚州法院电子案件管理系统(PJe-TJMA)- 1º 和 2º 级别的自然语言处理 - 单个服务器,无需在法院编写代码</small>
</h1>
<p align="center">
<img alt="Python" src="https://img.shields.io/badge/python-3.10+-3776AB?logo=python&logoColor=white">
<img alt="工具" src="https://img.shields.io/badge/工具-24-brightgreen">
<img alt="级别" src="https://img.shields.io/badge/级别-1g%20%2B%202g-blueviolet">
<img alt="MCP" src="https://img.shields.io/badge/MCP-Claude%20Desktop-d97757">
<img alt="登录" src="https://img.shields.io/badge/登录-CPF%20%2B%20密码%20%2B%20TOTP%20自动-black">
<img alt="只读" src="https://img.shields.io/badge/PJe-只读-8b0000">
</p>
[MCP](https://modelcontextprotocol.io) 服务器,允许克劳德桌面查询马拉尼亚州法院(TJMA)的**电子案件管理系统**(PJe-TJMA)- **1º 和 2º 级别** - 以自然语言呈现。源自 [MCP PJe-TJPI](https://github.com/fxbarros/MCP-PJe-TJPI),TJMA 的两个实例由同一个服务器处理。
## 🏛️ 两个实例
| 级别 | URL | client_id (SSO PDPJ) |
|---|---|---|
| **1g** (法院) | `https://pje.tjma.jus.br/pje` | `pje-tjma-1g` |
| **2g** (法庭/庭审) | `https://pje2.tjma.jus.br/pje2g` | `pje-tjma-2g` |
所有工具都接受 `grau` 参数(默认为 `"1"`,`"2"` 表示 2º 级别,也接受 "segundo", "apelação", "câmara"...)。单例每次维护 **一个** Chromium 会话,按 `(persona, grau)` 键控:切换级别会关闭前一个会话并登录到另一个实例。
> 登录使用 **PDPJ 全国 SSO** (`sso.cloud.pje.jus.br`) - 相同的 CPF + 密码 + TOTP 凭证适用于两个级别(和其他法院)。如果您已经在 Mac 上使用 MCP PJe-TJPI,Keychain 中的凭证将自动重复使用。
## ✨ 功能
- 🔐 **100% 自动登录**:CPF + 密码 + 2FA (TOTP)
- ⚖️ **1º 和 2º 级别** 在同一服务器上,带有按级别分离的下载文件夹(相同的 CNJ 编号存在于两个级别)
- 📋 **待处理案件** 和 ⏰ **紧急期限警报** (3 天)
- 🔍 **6 种搜索方式**:CNJ 编号,当事人姓名,律师姓名,CPF,CNPJ 和 OAB
- 📄 **文档列表,阅读和下载** (HTML 和 PDF),包括具有 **后台下载** 的完整案件(免疫 MCP 协议超时)
- 🗂️ **案件完整历史** (包括已关闭/过期)
- 📝 **生产流程**:请愿书模板,请愿书保存和报告保存在案件文件夹中
- 🛡️ **自动处理** CNJ 分辨率 121/2010 的通知(第三方案件)
## 🛠️ 24种工具
**面板和期限**
| 工具 | 功能 |
|---|---|
| `expedientes_pendentes` | 待处理通知/命令 |
| `verificar_prazos_urgentes` | 案件中具有 ≤ 3 天的截止日期 |
| `pendencias_processo` | 案件的待处理事项(案件 + 期限) |
| `expedientes_do_processo` | 案件的完整历史记录(包括已关闭/过期) |
**查询和搜索**
| 工具 | 功能 |
|---|---|
| `consultar_processo` | 通过 CNJ 编号查询案件的基本数据 |
| `ultimas_movimentacoes` | 查询最后的动态 |
| `relatorio_processo` | 完整报告:数据,动态和文档 |
| `buscar_por_nome_parte` / `buscar_por_nome_advogado` | 按姓名搜索 |
| `buscar_por_cpf` / `buscar_por_cnpj` / `buscar_por_oab` | 按标识符搜索 |
**文档和案件**
| 工具 | 功能 |
|---|---|
| `listar_documentos` | 案件的所有文档 |
| `ler_documento` | 文档的全文(HTML 或 PDF) |
| `ultima_decisao` | 最后的决定/判决/命令/普通行为 |
| `ultimo_despacho` | 最后的命令(仅限命令) |
| `baixar_documento` | 下载文档并保存在案件文件夹中 |
| `baixar_processo` | 下载完整的案件(默认后台) |
| `status_download` | 跟踪下载进度 |
| `preparar_processo` | 下载案件并确定分析策略 |
**文件生成(仅保存在您的磁盘上,永远不会在 PJe 上)
| 工具 | 功能 |
|---|---|
| `listar_modelos_peticao` / `ler_modelo_peticao` | `Modelos TJMA/` 中的模板 |
| `salvar_peticao_processo` | 在案件文件夹中保存请愿书(.docx) |
| `salvar_relatorio_processo` | 在案件文件夹中保存分析报告 |
公共参数:`grau` (`"1"`/`"2"`)和 `persona` (默认`"advogado"` 或 `"procurador"`)。
## 📂 文件保存位置
```
~/Library/Mobile Documents/com~apple~CloudDocs/
├── Processos TJMA 1 Grau/{cnj}/ # 1º 级别的案件,文档和文件
├── Processos TJMA 2 Grau/{cnj}/ # 2º 级别的案件,文档和文件(相同 CNJ ≠ 相同文件夹!)
└── Modelos TJMA/ # 请愿书/报告模板 .docx/.md
```
## 🧰 要求
- macOS(Keychain 中的凭证;Linux/Windows 上使用等效的 `keyring`)
- Python 3.10+
- 已安装克劳德桌面
- 在 PDPJ 上具有有效的 2FA 配置账户
## 📦 安装
### 1) 虚拟环境 + 依赖项
```bash
cd mcp-pje-tjma
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
playwright install chromium
```
### 2) 凭证
如果您 **已经使用 Mac 上的 MCP PJe-TJPI**,请跳过此步骤 - 服务器将重复使用 Keychain 中的 PDPJ 凭证。
否则:
```bash
python3 setup_credenciais.py
```
脚本询问 CPF,PDPJ 密码和 TOTP 种子,并将所有内容保存到 Keychain(服务 `mcp-pje-tjma`)- 绝不保存在文件中。
### 3) 在克劳德桌面上注册 MCP
`~/Library/Application Support/Claude/claude_desktop_config.json` (调整路径):
```json
{
"mcpServers": {
"pje-tjma": {
"command": "/Users/SEU_USUARIO/mcp-pje-tjma/venv/bin/python",
"args": ["/Users/SEU_USUARIO/mcp-pje-tjma/src/server.py"]
}
}
}
```
### 4) 重新启动克劳德桌面
`Cmd+Q` 并重新打开 - 工具应该会出现。
## 💬 使用示例
```
我有 TJMA 的待处理案件吗?
TJMA 2º 级别的紧急期限是什么?
咨询案件 0000000-00.0000.8.10.0001
咨询 2º 级别的上诉 0000000-00.0000.8.10.0001
按 OAB 在 TJMA 上搜索案件
列出案件文件并阅读最后的决定
下载完整的案件并准备进行分析
```
## 🏗️ 项目结构
```
mcp-pje-tjma/
├── README.md
├── requirements.txt
├── setup_credenciais.py # 初始设置(如果已经使用 MCP TJPI,则可选)
└── src/
├── server.py # MCP 服务器(24 种工具,参数级别在所有工具中)
├── pje_client.py # Playwright 客户端(按级别的 URL_BASES)
├── cliente_singleton.py # 1 个活动会话,按(persona,级别)键控
├── pje_downloader.py # 下载(按级别的文件夹,背景作业)
├── minutas.py # 保存请愿书/报告(.docx/.md/.txt)
└── modelos.py # 读取 Modelos TJMA/ 中的模板
```
## 🔒 安全
- **凭证** 存储在 macOS 的 Keychain 中,绝不存储在文件中
- **TOTP 种子** 作为机密处理 - 绝不提交
- **PJe 上没有写入操作**:此 MCP **仅读取** 来自法院的信息 - 绝不提交,提出或更改任何内容(保存工具仅保存到您的本地磁盘)
- **CNJ 分辨率 121/2010**:第三方案件查询由 PJe 自己注册,返回值包括通知
## ⚠️ 重要通知
**凭证有效性** - PDPJ 密码会定期过期;更改网站时,请再次运行 `setup_credenciais.py` (或更新 Keychain 中正在使用的服务)。
**刮擦脆弱性** - 项目依赖于 PJe-TJMA 当前的 HTML/JavaScript。如果法院更改布局:使用 `PJE_HEADLESS=0` 运行,查看崩溃的位置,在 DevTools 中获取新选择器并更新 `pje_client.py`。
**负责任的使用** - 尊重 PJe 的使用条款;绝不进行大规模刮擦;第三方案件查询会被记录 - 请专业负责地使用。
## 📝 许可证和致谢
个人和专业使用,无担保 - 自担风险,尊重法院和客户的规则。由 [Fábio Ximenes Barros](https://github.com/fxbarros) 使用 [Claude](https://www.anthropic.com/claude),[Playwright](https://playwright.dev),[PyOTP](https://pyauth.github.io/pyotp/),[Scrapling](https://github.com/D4Vinci/Scrapling) 和 [pdfplumber](https://github.com/jsvine/pdfplumber) 构建。
<p align="center"><sub>横幅艺术:原创 - MCP 作者的项目标志。</sub></p>