Skip to main content
Glama
yokko001

Company Secure Python MCP

by yokko001

Company Secure Python MCP

Это минимальный MCP-сервер, спроектированный по принципу «чистой комнаты» и предназначенный исключительно для использования из Copilot Studio. Код прежнего m365-copilot-companion-mcp не переиспользуется. Аудиторский отчёт в родительском каталоге рассматривается как негативное требование, а функциональность сокращена до 6 инструментов.

Текущий статус — «эталонная реализация, подлежащая проверке безопасности». Не разворачивайте в производственной среде, пока не настроены выделенная VM или выделенный rootless Docker, Entra ID, терминация TLS, ACL для ключей, внутренний реестр, DLP/SIEM и не завершены реальные интеграционные тесты Docker.

Предоставляемые функции

Инструмент

Функция

Основные ограничения

workspace_list

список одного уровня

только общий ввод, собственный ввод и собственный вывод; до 200 элементов

workspace_read_text

чтение текста в кодировке UTF-8

разрешённые расширения, 1 MiB, до 200 000 символов, отображение недоверенных данных

workspace_write_text

создание нового текста

только собственный вывод, нельзя перезаписывать или удалять, только разрешённые расширения

python_prepare

фиксация запроса на выполнение

фиксирует код, хеш входных данных и имя выходного файла; не выполняет

python_status

проверка статуса собственного запроса

не возвращает ни тело кода, ни подпись утверждения

python_run

выполнение утверждённого запроса

подпись по отдельному каналу, однократно, Docker, без сети

Не реализованы: электронная почта, календарь, буфер обмена, реестр, ODBC, получение веб-контента, произвольные URL, Shell, PowerShell, установка пакетов, самообновление, автозапуск, управление браузером, Tool Forge, туннели и ретрансляция универсальных инструментов.

Граница доверия

flowchart LR
    CS[Copilot Studio] -->|OAuth 2.0 delegated token / TLS| RP[Reverse proxy / WAF]
    RP -->|loopback or private hop| MCP[6-tool MCP service]
    MCP -->|JWKS only| ENTRA[Microsoft Entra ID]
    MCP -->|scoped access| WS[Per-user workspace]
    MCP -->|immutable request| Q[Control queue]
    REVIEW[Separate reviewer account] -->|Ed25519 signed approval| Q
    Q -->|one-time claim| RUN[Dedicated/rootless Docker runner]
    RUN -->|network=none / read-only / limits| JOB[Python container]
    JOB -->|declared UTF-8 outputs only| WS
    MCP -->|HMAC chain; no content| AUDIT[Audit log -> SIEM]

Закрытый ключ утверждения не передаётся MCP-сервису. У MCP-сервиса есть только открытый ключ утверждения и ключ аудита. Python-код не выполняется в хостовом Python, и запасного варианта локального выполнения не предусмотрено.

Документы для первого чтения

Проверка в среде разработки

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install uv
.\.venv\Scripts\uv.exe sync --frozen --extra dev
.\scripts\Invoke-SecurityChecks.ps1 -PythonExecutable .\.venv\Scripts\python.exe

В производственной среде не устанавливайте напрямую из PyPI через интернет; используйте утверждённое внутреннее зеркало и фиксированные хеши из requirements.lock. uv.lock также фиксирует среды разработки и проверки. Файл .env не загружается. Настройки передаются в окружение процесса из платформы управления сервисами.

Контракт Python-заданий

  • Вход: /work/input/manifest.json и /work/input/<фиксированное имя> (только чтение)

  • Выход: /work/output/<имя файла, объявленное в python_prepare>

  • Публичное имя: во избежание конфликтов в собственном выводе создаётся новый файл с именем <request-id>-<порядковый номер>.<расширение>

  • Формат вывода: .txt, .md, .csv, .json в кодировке UTF-8

  • Стандартный вывод и стандартная ошибка: отбрасываются, модели не возвращаются

  • Сеть: отсутствует

  • Время выполнения: по умолчанию 60 секунд, максимум 300 секунд

  • Память: 256 MiB, CPU: 1, PID: 64

Список разрешённых импортов AST — это многоуровневая защита, а не песочница Python. Фактическая граница — это утверждение по отдельному каналу и изоляция ОС с помощью выделенной VM/rootless Docker.

Если при тайм-ауте не удаётся подтвердить успешность docker rm -f, раннер переводится в карантинное состояние, все последующие выполнения Python отклоняются, а каталог выполнения сохраняется в неизменном виде. Работа не возобновится, пока оператор не уничтожит и не пересоздаст выделенную VM.

-
license - not tested
-
quality - not tested
C
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

  • Securely search and manage workspace context files for AI agents and teams.

  • Runtime permission, approval, and audit layer for AI agent tool execution.

  • Cross-agent artifact workspace with provenance across Claude Code, Codex, Cursor, LangGraph.

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/yokko001/m365-copilot-secure-python-mcp'

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