Skip to main content
Glama
Manuciao88

PA MCP Server

by Manuciao88

PA MCP Server

AI 에이전트를 위한 도구로 Portfolio Advisor (PA) 엔진을 노출하는 MCP 서버입니다. 퀀트 엔진은 pa_engine/src에 포함되어 있어 프로젝트가 독립적이며 배포 외부의 폴더나 데이터에 의존하지 않습니다.

제품 문서 및 제한 사항: PRODUCT_OVERVIEW.md. 전문가 검토가 필요한 개인정보 처리방침 템플릿: PRIVACY_NOTICE_TEMPLATE.md. 출시 전 감사 결과: AUDIT_REPORT.md.

제공 기능

도구

출력

avvia_percorso_portafoglio

자본, 위험 및 시나리오에 대한 일반 요청의 진입점

informazioni_strumento

목적, 방법, 제한 사항, 개인정보 보호 및 올바른 흐름

proponi_strumenti

통화별 설명이 포함된 예시 숏리스트, 확인 필요

verifica_strumenti

거부 사유와 함께 티커, 과거 데이터 및 통화 검증

schema_input_pa

required, default, 단위, enum 및 최소 예시를 포함한 완전한 JSON 스키마

valida_input_pa

오프라인 검증: missing, errors, warnings 및 정규화된 config

prepara_simulazione

사전 작성된 매개변수의 검토 및 확인을 위한 MCP App 패널

analisi_completa

명시적이고 유효한 승인 시에만 실행되는 대화형 보고서

에이전트는 먼저 schema_input_pa를 호출하고, 데이터를 수집한 다음 구성을 valida_input_pa에 전달합니다. valid=true이면 prepara_simulazione을 호출합니다. 클라이언트는 작성된 매개변수가 포함된 패널을 표시하며 시뮬레이션은 대기 상태로 유지됩니다. 사용자는 값을 수정할 수 있으며 명시적으로 확인해야 합니다. 위젯은 구성을 고정하고 에이전트에게 내부 승인 식별자를 보냅니다. 그러면 에이전트는 최적화, 기대 수익률, Monte Carlo, 스트레스 테스트 및 벤치마크 비교가 포함된 analisi_completa를 직접 호출합니다. 승인은 2시간 후 만료되며 전체 보고서가 성공적으로 완료되면 소비됩니다.

사용자가 투자 상품 목록을 제공하면 에이전트는 이를 verifica_strumenti에 전달하고 각 거부 사유를 구체적으로 설명합니다. 목록이 없고 추천을 요청하면 에이전트는 proponi_strumenti를 사용하여 티커, 이름, 거래소, 예상 비용 및 설명을 제시한 다음, 검증과 구성 전에 명시적 확인을 기다립니다. 어떤 대체도 자동으로 이루어지지 않습니다.

cost_annual_pct는 퍼센트 포인트로 표현됩니다. 0.50은 연 0,50%를 의미합니다. MCP Apps를 지원하지 않는 클라이언트는 초안을 검증하고 표시할 수 있지만 대화형 승인 절차를 완료할 수 없습니다.

설정

python3.13 -m venv .venv
./.venv/bin/python -m pip install .

또한 위젯을 수정하고 다시 빌드하려면 Node.js 20+와 npm ci가 필요합니다.

Portfolio Advisor 엔진은 프로젝트의 pa_engine/src에 포함되어 있으므로 서버는 독립적입니다. 개발 시 대체 엔진을 지정할 수 있습니다:

export PA_ENGINE_DIR="/percorso/del/motore"   # opzionale, solo sviluppo

시작

로컬 (stdio):

./.venv/bin/python -m pa_mcp.server

원격 커넥터 및 MCP Apps 테스트용 Streamable HTTP:

PA_MCP_TRANSPORT=http PA_MCP_PORT=3000 \
  ./.venv/bin/python -m pa_mcp.server

MCP 엔드포인트: http://127.0.0.1:3000/mcp. 웹 클라이언트의 경우 HTTPS를 통해 임시로 노출하거나 원격 호스트에 배포해야 합니다. 로컬 HTTP 시작은 인증을 활성화하지 않으며 프로덕션에 직접 게시해서는 안 됩니다.

승인, 검토 및 캐시는 쓰기 가능한 상태 경로를 활성화하면 영구적이고 공유 가능해집니다(재시작 후에도 유지됩니다):

PA_STATE_PATH=/var/lib/pa_mcp/state.db PA_MCP_TRANSPORT=http PA_MCP_PORT=3000 \
  ./.venv/bin/python -m pa_mcp.server

PA_STATE_PATH가 없으면 상태는 메모리에 유지됩니다(로컬 개발 및 테스트의 일반적인 동작).

OAuth (HTTP, 엔드포인트 노출 전)

OAuth 2.1(스코프 pa.read)은 FastMCP OAuthProvider를 통해 제공됩니다:

PA_OAUTH=1 PA_PUBLIC_BASE_URL=https://pa.example.com \
  PA_MCP_TRANSPORT=http PA_MCP_PORT=3000 ./.venv/bin/python -m pa_mcp.server

PA_OAUTH가 설정되지 않으면 HTTP 서버는 인증 없이 동작합니다(개발 및 테스트에 적합). 프로덕션에서는 OAuth 토큰을 공유 저장소에 유지하고 테넌트별 권한 부여를 구성해야 합니다.

인프라 보호 (HTTP)

  • PA_RATE_LIMIT_PER_MIN — IP별 token-bucket (HTTP 429).

  • PA_MAX_BODY_BYTES — 요청 본문 크기 제한 (HTTP 413).

  • PA_ANALYSIS_TIMEOUT_SECONDS — 분석의 하드 데드라인 (기본 60초; 슬롯 및 승인을 해제).

  • PA_ANALYSIS_QUOTA_PER_HOUR — 테넌트별 시간당 분석 할당량 (0 = 무제한); 테넌트 키는 PA_TENANT를 통해 지정 (기본값 anonymous).

관찰 가능성 (HTTP)

  • GET /health/live — liveness(활성 상태).

  • GET /health/ready — readiness(준비 상태) (준비되지 않으면 503; 스토어 상태).

  • GET /metrics — 운영 카운터 (개인 데이터 없음).

배포 및 문서

커넥터를 게시하려면 안정적인 엔드포인트(터널 아님)가 필요합니다. DEPLOY_GUIDE.md를 참조하세요(Dockerfile 포함). 개인정보 처리방침 및 이용 약관 초안은 PRIVACY_NOTICE_DRAFT.mdTERMS_OF_USE_DRAFT.md에 있습니다(검토 필요).

클라이언트를 위해 새 모듈 pa_mcp/auth.py, pa_mcp/limits.py, pa_mcp/state.py, pa_mcp/oauth_provider.py, pa_mcp/quotas.py가 wheel에 포함되어 있습니다.

서버는 stdio로 통신합니다. 모든 MCP 클라이언트가 연결할 수 있습니다. 일반 클라이언트용 구성 예시:

{
  "mcpServers": {
    "pa-engine": {
      "command": "/percorso/pa-mcp-server/.venv/bin/python",
      "args": ["/percorso/pa-mcp-server/server_script.py"],
      "cwd": "/percorso/pa-mcp-server"
    }
  }
}

도구 테스트

계약 및 승인 흐름의 오프라인 테스트:

./.venv/bin/python -m unittest discover -s tests -p 'test_*.py'
node scripts/test_config_widget_render.js
node scripts/test_widget_render.js

시장 데이터를 이용한 전체 자체 점검:

./.venv/bin/python -m pa_mcp.selfcheck

실제 데이터가 포함된 테스트 config에 대해 모든 도구를 실행하고(Yahoo Finance에 대한 네트워크 필요) 각 출력의 키를 출력합니다.

엔진 관련 참고 사항

래퍼는 PA 엔진의 pa/src를 재사용합니다. 아무것도 다시 계산하지 않습니다. 전체 파이프라인을 엔진에 위임하고 export_report_json이 생성한 JSON 보고서를 직렬화합니다. 엔진의 인터페이스가 변경되면 pa_mcp/engine.py를 업데이트하세요.

엔진에 적용된 버그 수정 (numpy 2.x)

pa/src/core/stress_test.py: numpy 2.x에서 weights.to_numpy(dtype=float)은 읽기 전용 배열을 반환하므로 target /= target.sum()ValueError: output array is read-only 오류로 실패했습니다. np.array(weights.to_numpy(dtype=float))로 수정했습니다. 엔진에 업스트림으로 반영될 예정입니다.

로드맵

  1. 재무, 세무, 개인정보 보호 및 데이터 라이선스에 대한 전문가 검토.

  2. OAuth 2.1, 테넌트 격리, 할당량 및 관찰 가능성을 갖춘 원격 배포.

  3. 독립적인 보안 검토 후 지원되는 레지스트리에 게시.

차단 체크리스트는 GO_LIVE_CHECKLIST.md에 있습니다.

-
license - not tested
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • Portfolio risk analytics — VaR, Monte Carlo, optimization, options Greeks, stress testing.

  • Deterministic what-if & scenario simulation for AI agents: projections, sensitivity & break-even.

  • Build, backtest, and deploy quantitative trading strategies from your AI agent.

View all MCP Connectors

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/Manuciao88/pa-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server