Skip to main content
Glama
Manuciao88

PA MCP Server

by Manuciao88

PA MCP Server

MCP-сервер, который предоставляет движок Portfolio Advisor (PA) в качестве инструмента для ИИ-агентов. Количественный движок включён в 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

Полная JSON-схема с required, default, единицами измерения, enum и минимальным примером

valida_input_pa

Офлайн-валидация: missing, errors, warnings и нормализованная конфигурация

prepara_simulazione

Панель MCP App для просмотра и подтверждения предзаполненных параметров

analisi_completa

Интерактивный отчёт, выполняемый только при действительном явном одобрении

Агент сначала вызывает schema_input_pa, собирает данные и передаёт конфигурацию в valida_input_pa. Если valid=true, он вызывает prepara_simulazione: клиент показывает панель с заполненными параметрами, и симуляция остаётся на паузе. Пользователь может изменять значения и должен явно подтвердить их. Виджет замораживает конфигурацию и отправляет агенту внутренний идентификатор одобрения; затем агент напрямую вызывает analisi_completa, которая включает оптимизацию, ожидаемую доходность, Monte Carlo, стресс-тесты и сравнение с бенчмарком. Одобрение истекает через 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

Streamable HTTP — для удалённых коннекторов и тестирования MCP Apps:

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 не включает аутентификацию и не должен публиковаться напрямую в production.

Одобрения, рецензии и кэш становятся постоянными и разделяемыми (переживают перезапуск) при включении записываемого пути состояния:

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 (scope 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-сервер остаётся без аутентификации (подходит для разработки и тестирования). В production токены OAuth следует сохранять в общем хранилище и настраивать авторизацию для каждого тенанта.

Защита инфраструктуры (HTTP)

  • PA_RATE_LIMIT_PER_MIN — token-bucket на IP (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 — проверка живости.

  • GET /health/ready — готовность (503, если не готов; состояние хранилища).

  • GET /metrics — операционные счётчики (без персональных данных).

Развёртывание и документы

Для публикации коннектора потребуется стабильный эндпоинт (не туннель): следуйте DEPLOY_GUIDE.md (включает Dockerfile). Черновик уведомления о конфиденциальности и условий — в PRIVACY_NOTICE_DRAFT.md и TERMS_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

Выполняет все инструменты на тестовой конфигурации с реальными данными (требуется доступ к Yahoo Finance) и печатает ключи каждого результата.

Примечание о движке

Обёртка использует pa/src движка PA. Ничего не пересчитывает: делегирует весь конвейер движку и сериализует JSON-отчёт, созданный export_report_json. Если интерфейс движка изменится, обновите pa_mcp/engine.py.

Исправление ошибки, применённое к движку (numpy 2.x)

pa/src/core/stress_test.py: weights.to_numpy(dtype=float) с numpy 2.x возвращает массив только для чтения, и target /= target.sum() завершалось ошибкой ValueError: output array is read-only. Исправлено с помощью np.array(weights.to_numpy(dtype=float)). В процессе передачи в upstream движка.

Дорожная карта

  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