返回市场
MCP-杰恩服务器

MCP-杰恩服务器

作者:PdroBrandao0 星标更新:2025-08-07

项目介绍

MCP DJEN 服务器

面向LLM的智能巴西法院通知系统

这是一个生产就绪的MCP(模型上下文协议)服务器,标准化了对巴西电子司法日记(DJEN)数据的访问,适用于LLM代理和AI应用程序。

🎯 实际影响

此服务器支持**Intimação Pro系统,在测试期间处理了566个通知**,具有以下特点:

  • 综合回归测试(v1.5)准确率86.7%
  • 平均响应时间小于4秒
  • 对法律团队来说具有极高的投资回报率
  • 生产环境中的API成功率高达99.5%
  • 每律师每月运营成本仅为0.45美元

🌍 国际公司为何关心

巴西法律市场 = 280亿美元机会(IBGE 2025年)。 我们的协议解决了司法数据访问问题:

  • LegalTech扩展到拉丁美洲 - 区域扩张的标准API
  • AI团队自动化合规性 - 生产就绪的法律数据集成
  • 全球法律自动化 - 其他司法管辖区的参考实现

国际用例:

  • 墨西哥:AMLO法庭集成
  • 葡萄牙:STJ里斯本数据管道
  • 阿根廷:联邦司法权力集成

📱 WhatsApp集成愿景

最终目标是使律师能够通过WhatsApp使用自然语言查询他们的法院通知:

"我今天的传票是什么?" → LLM → MCP服务器 → 结构化回复

这个MCP服务器是实现这一愿景的基础架构层。

🏗️ 架构

系统架构

流程:

  1. LLM代理请求法院通知
  2. MCP服务器查询DJEN API
  3. 数据被解析并标准化
  4. 结构化的JSON返回给LLM

请求流程

LLM集成

🚀 快速开始

预备条件

  • Python 3.11+
  • Docker(可选)
  • Git

本地开发设置

# 克隆仓库
git clone https://github.com/PdroBrandao/mcp-djen-server.git
cd mcp-djen-server

# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate  # 在Windows上:venv\Scripts\activate

# 安装依赖
pip install -r requirements.txt

# 设置环境变量
cp .env.example .env
# 编辑.env以进行您的配置

# 运行服务器
python3 -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

Docker设置

# 使用Docker构建和运行
docker-compose up --build

# 或手动构建
docker build -t mcp-djen-server .
docker run -p 8000:8000 mcp-djen-server

环境变量

# 服务器配置
PORT=8000
HOST=0.0.0.0
DEBUG=false

# DJEN API配置
DJEN_API_BASE_URL=https://comunicaapi.pje.jus.br/api/v1/comunicacao
DJEN_API_TIMEOUT=30

# 速率限制
RATE_LIMIT_PER_MINUTE=100
RATE_LIMIT_PER_HOUR=1000

# 日志
LOG_LEVEL=INFO
LOG_FILE=logs/app.log

# 安全
CORS_ORIGINS=*
API_KEY_REQUIRED=false

🧪 测试

自动化测试

# 运行所有测试
python3 test_server.py

# 测试特定端点
curl -X GET "http://localhost:8000/health"
curl -X GET "http://localhost:8000/intimations?name=PEDRO%20BRAND%C3%83O&date_start=2025-08-01&date_end=2025-08-06"

手动测试

# 健康检查
curl http://localhost:8000/health

# 获取通知
curl "http://localhost:8000/intimations?name=PEDRO%20BRAND%C3%83O&date_start=2025-08-01&date_end=2025-08-06"

# 获取案件详情
curl http://localhost:8000/intimations/1234567-89.2024.8.13.0001

# 获取可用法院
curl http://localhost:8000/courts

📚 API参考

认证

目前,API对开发开放。生产部署应实现:

  • API密钥认证
  • 每客户端的速率限制
  • 请求日志记录和监控

端点

GET /health

健康检查端点。

响应:

{
  "status": "healthy",
  "timestamp": "2025-08-06T17:48:25.231962",
  "service": "mcp-djen-server"
}

GET /intimations

获取律师的法院通知。

参数:

  • name(必需):律师全名
  • date_start(必需):起始日期(YYYY-MM-DD)
  • date_end(必需):结束日期(YYYY-MM-DD)
  • oab(可选):OAB注册号

响应:

[
  {
    "date": "2025-08-06",
    "court": "TJMG",
    "lawyer_name": "PEDRO BRANDÃO",
    "oab": "123456/MG",
    "case_number": "1234567-89.2024.8.13.0001",
    "type": "TOMAR_CIÊNCIA",
    "summary": "关于2025年8月5日发布的裁决的通知",
    "url": "https://www.tjmg.jus.br/djen/123",
    "deadline": "15天",
    "actions": ["MANIFESTAR_SE", "CALCULAR_PRAZO"]
  }
]

GET /intimations/{case_number}

获取特定案件的详细信息。

GET /courts

获取可用法院列表。

🤖 LLM集成示例

OpenAI函数调用

import openai
import requests

# 配置OpenAI
openai.api_key = "your-api-key"

# 定义函数
functions = [
    {
        "name": "get_court_notifications",
        "description": "获取律师的法院通知",
        "parameters": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "律师全名"
                },
                "date_start": {
                    "type": "string",
                    "description": "起始日期(YYYY-MM-DD)"
                },
                "date_end": {
                    "type": "string",
                    "description": "结束日期(YYYY-MM-DD)"
                }
            },
            "required": ["name", "date_start", "date_end"]
        }
    }
]

# 用户查询
user_query = "PEDRO BRANDÃO今天有哪些传票?"

# 调用OpenAI
response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[{"role": "user", "content": user_query}],
    functions=functions,
    function_call="auto"
)

# 提取函数调用
if response.choices[0].message.function_call:
    function_call = response.choices[0].message.function_call
    
    # 调用MCP服务器
    mcp_response = requests.get(
        "https://your-mcp-server.railway.app/intimations",
        params=json.loads(function_call.arguments)
    )
    
    notifications = mcp_response.json()
    print(f"找到{len(notifications)}条PEDRO BRANDÃO的通知")

Claude集成

import anthropic
import requests

client = anthropic.Anthropic(api_key="your-api-key")

# 定义工具
tools = [
    {
        "name": "get_court_notifications",
        "description": "获取律师的法院通知",
        "input_schema": {
            "type": "object",
            "properties": {
                "name": {"type": "string"},
                "date_start": {"type": "string"},
                "date_end": {"type": "string"}
            },
            "required": ["name", "date_start", "date_end"]
        }
    }
]

# 调用Claude
response = client.messages.create(
    model="claude-3-sonnet-20240229",
    max_tokens=1000,
    messages=[{"role": "user", "content": "PEDRO BRANDÃO今天有哪些传票?"}],
    tools=tools
)

📊 数据结构

输入(DJEN API)

{
  "siglaTribunal": "TJMG",
  "texto": "PEDRO BRANDÃO",
  "dataDisponibilizacaoInicio": "2025-08-01",
  "dataDisponibilizacaoFim": "2025-08-06"
}

输出(MCP服务器)

[
  {
    "date": "2025-08-06",
    "court": "TJMG",
    "lawyer_name": "PEDRO BRANDÃO",
    "oab": "123456/MG",
    "case_number": "1234567-89.2024.8.13.0001",
    "type": "TOMAR_CIÊNCIA",
    "summary": "关于2025年8月5日发布的裁决的通知",
    "url": "https://www.tjmg.jus.br/djen/123",
    "deadline": "15天",
    "actions": ["MANIFESTAR_SE", "CALCULAR_PRAZO"]
  }
]

数据结构

🔧 技术细节

性能指标

  • 响应时间:平均小于4秒
  • 吞吐量:每分钟100个请求
  • 正常运行时间:99.9%(生产环境)
  • 错误率:0.5%(基于实际DJEN API性能)

解决的DJEN特定挑战

1. API不稳定

  • 实际性能:99.5%的成功率(5,287/5,288次请求)
  • 响应时间:平均95毫秒,99.30%小于500毫秒
  • 备用数据:开发时的模拟响应

2. 数据格式不一致

  • 强大的解析:处理各种DJEN格式
  • 数据规范化:标准化输出结构
  • 错误恢复:优雅地处理畸形数据

3. 速率限制

  • 智能缓存:减少API调用
  • 请求批处理:优化吞吐量
  • 队列管理:防止过载DJEN

生产考虑

安全

  • API密钥认证:生产中必需
  • 请求日志记录:合规审计跟踪
  • 数据加密:TLS 1.3用于所有通信
  • 输入净化:防止注入攻击

监控

  • 健康检查:自动监控
  • 指标收集:性能追踪
  • 告警系统:主动发现问题
  • 日志聚合:集中式日志

可伸缩性和容错性

  • 水平扩展:无状态设计支持多个实例
  • 负载均衡:支持每天10,000+通知
  • 断路器:DJEN API失败时自动回退
  • 缓存策略:Redis集成以支持高吞吐量
  • 数据库扩展:PostgreSQL用于生产工作负载
  • CDN集成:全球内容交付给国际用户

🗺️ 发展路线图

第一阶段:核心功能(当前)

  • ✅ 基本DJEN集成
  • ✅ LLM函数调用
  • ✅ 速率限制
  • ✅ 健康检查

第二阶段:生产就绪(2025年第四季度)

  • 🔄 真实DJEN API集成
  • 🔄 高级错误处理
  • 🔄 综合测试
  • 🔄 安全强化

第三阶段:高级功能(2026年第一季度)

  • 📋 多法院支持
  • 📋 通知过滤
  • 📋 期限计算
  • 📋 文档生成

第四阶段:WhatsApp集成(2026年第二季度)

  • 📱 通过WhatsApp使用自然语言查询
  • 🤖 自主法律代理能力
  • 📊 实时通知提醒
  • 🔗 CRM和日历集成

第五阶段:生态系统(2026年第三季度)

  • 📋 插件系统
  • 📋 第三方集成
  • 📋 社区贡献
  • 📋 企业功能

🧑‍💼 未来愿景

中期目标是将该系统转变为巴西领先的法律智能平台,律师可以通过WhatsApp使用自然语言访问其案件的全部状态、期限和详细信息。愿景是发展成一个自主法律代理,具备RAG集成和自我评估能力,能够在无需人工验证的情况下以98%以上的准确性处理标准通知。

这个MCP服务器是实现这一愿景的基础架构,通过标准化访问巴西法院数据来支持LLM代理。

🤝 贡献

我们欢迎贡献!请参阅我们的贡献指南了解详情。

开发设置

# 分叉并克隆
git clone https://github.com/your-username/mcp-djen-server.git
cd mcp-djen-server

# 安装开发依赖
pip install -r requirements-dev.txt

# 运行测试
pytest

# 运行代码检查
flake8 app/
black app/

代码标准

  • 类型提示:所有函数都需要
  • 文档字符串:Google风格
  • 测试:覆盖率超过90%
  • 代码检查:零警告

💼 商业影响

对法律团队

  • 节省时间:将手动检查从每天30分钟减少到3分钟
  • 准确性:综合回归测试准确率为86.7%
  • 合规性:自动审计跟踪
  • 成本:每律师每月仅需0.45美元(极高的投资回报率)

实际生产数据(2025年6月至7月)

指标数值时期
平均律师成本$0.45/月最近30天
总分析次数566测试期
每律师平均令牌数5,217每律师
每次分析成本$0.0029平均

对AI开发者

  • 标准化接口:一致的API设计
  • 生产就绪:经过实战考验的可靠性
  • 文档:全面的指南
  • 支持:活跃的社区

对LegalTech公司

  • 集成:易于LLM集成
  • 定制化:灵活的架构
  • 支持:专业咨询
  • 合作:收入分成机会

📞 联系方式

📄 许可

本项目采用MIT许可 - 详见LICENSE文件。


为巴西法律界打造的爱心之作