contract-risk-analyzer
contract-risk-analyzer
Contract Risk Analyzer는 FastMCP 서버와 LangGraph 워크플로우를 결합하여 금융 계약 PDF를 수집하고, 주요 조항과 의무 사항을 추출하며, 위험도가 포함된 알려진 위험 용어를 표시하고, 계약 버전을 비교합니다. 또한 신속하고 설명 가능한 계약 분류가 필요한 변호사, 리스크 팀 및 운영자를 위해 모든 내용을 구조화된 위험 요약 보고서로 종합합니다.
MCP 도구는 로컬 file_path 또는 원격 pdf_url을 모두 허용합니다. Railway와 같은 호스팅 환경의 경우, 서버가 분석 전 PDF를 임시 저장소로 다운로드할 수 있도록 pdf_url을 사용하십시오.
아키텍처 (개요)
PDF
|
v
FastMCP_Server
|
+--> extract_clauses
+--> flag_risk_terms
+--> summarize_obligations
+--> compare_contracts
|
v
LangGraph_Agent (orchestrates tools)
|
v
RiskBrief (Pydantic structured output)설정 (로컬)
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.serverMCP 엔드포인트:
http://localhost:8000/mcp상태 확인:
http://localhost:8000/health.env파일에는OPENAI_API_KEY가 포함되어야 합니다.
Claude Desktop에서 연결 (MCP 클라이언트)
옵션 A: 로컬 STDIO 서버로 실행 (Claude Desktop이 서버를 생성)
Claude Desktop에서 다음과 유사한 MCP 서버 항목을 추가하십시오:
{
"mcpServers": {
"contract-risk-analyzer": {
"command": "python",
"args": ["-m", "contract_risk_analyzer.server"],
"env": {
"OPENAI_API_KEY": "YOUR_KEY_HERE"
}
}
}
}옵션 B: 로컬 HTTP 서버에 연결
직접 서버를 실행하는 경우(python -m contract_risk_analyzer.server), mcp-remote를 사용하여 Claude Desktop을 로컬 MCP HTTP 엔드포인트에 연결하십시오:
{
"mcpServers": {
"contract-risk-analyzer": {
"command": "npx",
"args": [
"mcp-remote",
"http://127.0.0.1:8000/mcp",
"--allow-http"
]
}
}
}옵션 C: 배포된 Railway 서버에 연결
배포된 서버는 다음 주소에서 사용할 수 있습니다:
상태 확인:
https://contract-risk-analyzer-production-410a.up.railway.app/healthMCP 엔드포인트:
https://contract-risk-analyzer-production-410a.up.railway.app/mcp
Claude Desktop 설정:
{
"mcpServers": {
"contract-risk-analyzer": {
"command": "npx",
"args": [
"mcp-remote",
"https://contract-risk-analyzer-production-410a.up.railway.app/mcp"
]
}
}
}도구 호출 예시
입력 소스 규칙
단일 계약 도구의 경우, 다음 중 정확히 하나를 제공하십시오:
{
"file_path": "/app/samples/contract.pdf"
}또는:
{
"pdf_url": "https://example.com/contracts/contract.pdf"
}compare_contracts의 경우, 각 측면에 대해 하나의 소스를 제공하십시오:
{
"pdf_url_a": "https://example.com/contracts/v1.pdf",
"pdf_url_b": "https://example.com/contracts/v2.pdf"
}원격 PDF는 임시 저장소로 다운로드되며, PDF당 50MB로 제한되고 각 도구 호출 후 삭제됩니다.
extract_clauses
입력:
{
"pdf_url": "https://example.com/contracts/isda.pdf",
"clause_type": "termination events"
}샘플 출력:
[
{
"section_name": "ARTICLE_VII TERMINATION",
"clause_type": "termination events",
"raw_text": "…",
"plain_english": "…",
"page_references": [12, 13]
}
]flag_risk_terms
입력:
{ "pdf_url": "https://example.com/contracts/isda.pdf" }샘플 출력:
[
{
"term": "cross-default",
"context": "…",
"risk_explanation": "…",
"severity": "high",
"page_reference": 9
}
]summarize_obligations
입력:
{ "pdf_url": "https://example.com/contracts/isda.pdf" }샘플 출력:
[
{
"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
입력:
{
"pdf_url_a": "https://example.com/contracts/v1.pdf",
"pdf_url_b": "https://example.com/contracts/v2.pdf"
}샘플 출력:
{
"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."
}배포 (Railway)
빌드: Railway는
Dockerfile에서 컨테이너를 빌드합니다.실행: 컨테이너는
python -m contract_risk_analyzer.server를 실행하고$PORT(기본값8000)에 바인딩합니다.상태 확인:
GET /health는{"status":"ok"}를 반환합니다.환경: Railway 서비스 변수에
OPENAI_API_KEY를 설정하십시오.현재 배포:
https://contract-risk-analyzer-production-410a.up.railway.app.
기술 스택
FastMCP
OpenAI GPT-4o (
openaiSDK 사용)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