contract-risk-analyzer
analizador-de-riesgos-de-contratos
Contract Risk Analyzer es un servidor FastMCP + flujo de trabajo de LangGraph que ingiere archivos PDF de contratos financieros, extrae cláusulas y obligaciones clave, marca términos de riesgo conocidos con su nivel de gravedad, compara versiones de contratos y sintetiza todo en un informe de riesgo estructurado para abogados, equipos de riesgo y operadores que necesitan una clasificación rápida y explicable de contratos.
Las herramientas MCP aceptan un file_path local o una pdf_url remota. Para implementaciones alojadas como Railway, utilice pdf_url para que el servidor pueda descargar el PDF en un almacenamiento temporal antes del análisis.
Arquitectura (nivel superior)
PDF
|
v
FastMCP_Server
|
+--> extract_clauses
+--> flag_risk_terms
+--> summarize_obligations
+--> compare_contracts
|
v
LangGraph_Agent (orchestrates tools)
|
v
RiskBrief (Pydantic structured output)Configuración (local)
cd contract-risk-analyzer
cp .env.example .env
source .venv/bin/activate # if you already created the project virtualenv
pip install -e ".[dev]"
python -m contract_risk_analyzer.serverPunto de conexión MCP:
http://localhost:8000/mcpComprobación de estado:
http://localhost:8000/healthEl archivo
.envdebe contenerOPENAI_API_KEY.
Conexión desde Claude Desktop (cliente MCP)
Opción A: Ejecutar como servidor STDIO local (Claude Desktop lo inicia)
En Claude Desktop, añada una entrada de servidor MCP similar a:
{
"mcpServers": {
"contract-risk-analyzer": {
"command": "python",
"args": ["-m", "contract_risk_analyzer.server"],
"env": {
"OPENAI_API_KEY": "YOUR_KEY_HERE"
}
}
}
}Opción B: Conectar al servidor HTTP local
Si ejecuta el servidor usted mismo (python -m contract_risk_analyzer.server), conecte Claude Desktop al punto de conexión HTTP MCP local con mcp-remote:
{
"mcpServers": {
"contract-risk-analyzer": {
"command": "npx",
"args": [
"mcp-remote",
"http://127.0.0.1:8000/mcp",
"--allow-http"
]
}
}
}Opción C: Conectar al servidor de Railway implementado
El servidor implementado está disponible en:
Comprobación de estado:
https://contract-risk-analyzer-production-410a.up.railway.app/healthPunto de conexión MCP:
https://contract-risk-analyzer-production-410a.up.railway.app/mcp
Configuración de Claude Desktop:
{
"mcpServers": {
"contract-risk-analyzer": {
"command": "npx",
"args": [
"mcp-remote",
"https://contract-risk-analyzer-production-410a.up.railway.app/mcp"
]
}
}
}Ejemplo de llamadas a herramientas
Reglas de fuente de entrada
Para herramientas de contrato único, proporcione exactamente uno de:
{
"file_path": "/app/samples/contract.pdf"
}o:
{
"pdf_url": "https://example.com/contracts/contract.pdf"
}Para compare_contracts, proporcione exactamente una fuente para cada lado:
{
"pdf_url_a": "https://example.com/contracts/v1.pdf",
"pdf_url_b": "https://example.com/contracts/v2.pdf"
}Los PDF remotos se descargan en un almacenamiento temporal, con un límite de 50 MB por PDF, y se eliminan después de cada llamada a la herramienta.
extract_clauses
Entrada:
{
"pdf_url": "https://example.com/contracts/isda.pdf",
"clause_type": "termination events"
}Ejemplo de salida:
[
{
"section_name": "ARTICLE_VII TERMINATION",
"clause_type": "termination events",
"raw_text": "…",
"plain_english": "…",
"page_references": [12, 13]
}
]flag_risk_terms
Entrada:
{ "pdf_url": "https://example.com/contracts/isda.pdf" }Ejemplo de salida:
[
{
"term": "cross-default",
"context": "…",
"risk_explanation": "…",
"severity": "high",
"page_reference": 9
}
]summarize_obligations
Entrada:
{ "pdf_url": "https://example.com/contracts/isda.pdf" }Ejemplo de salida:
[
{
"party": "Borrower",
"obligations": ["Deliver monthly financial statements…"],
"key_deadlines": ["Within 30 days after month-end…"],
"conditions": ["So long as no Event of Default has occurred…"]
}
]compare_contracts
Entrada:
{
"pdf_url_a": "https://example.com/contracts/v1.pdf",
"pdf_url_b": "https://example.com/contracts/v2.pdf"
}Ejemplo de salida:
{
"added_clauses": ["New collateral top-up requirement…"],
"removed_clauses": ["Removed cure period for payment default…"],
"materially_changed_clauses": [
{
"section_name": "ARTICLE_IV EVENTS_OF_DEFAULT",
"change_summary": "Acceleration now triggers immediately…",
"risk_note": "Increases lender leverage; reduces borrower flexibility."
}
],
"risk_delta": "Overall risk increased for Borrower due to tighter default/acceleration terms."
}Implementación (Railway)
Compilación: Railway compilará el contenedor desde
Dockerfile.Ejecución: El contenedor ejecuta
python -m contract_risk_analyzer.servery se vincula a$PORT(predeterminado8000).Comprobación de estado:
GET /healthdevuelve{"status":"ok"}.Entorno: Establezca
OPENAI_API_KEYen las variables de servicio de Railway.Implementación actual:
https://contract-risk-analyzer-production-410a.up.railway.app.
Stack tecnológico
FastMCP
OpenAI GPT-4o (vía SDK
openai)PyMuPDF (
pymupdf)Pydantic
LangGraph
Docker
Railway
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/himnishpersonal/contract-risk-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server