Skip to main content
Glama
yokko001

Company Secure Python MCP

by yokko001

Company Secure Python MCP

Es un servidor MCP mínimo de diseño clean-room, pensado exclusivamente para usarse desde Copilot Studio. No se reutiliza el código del antiguo m365-copilot-companion-mcp. Los informes de auditoría del directorio padre se tratan como requisitos negativos y la funcionalidad se ha reducido a 6 herramientas.

La posición actual es la de una «implementación de referencia revisable en seguridad». No realice el despliegue a producción hasta haber configurado una VM dedicada o un rootless Docker dedicado, Entra ID, terminación TLS, ACL de claves, registro interno y DLP/SIEM, y haber completado las pruebas de integración reales con Docker.

Funciones proporcionadas

Herramienta

Función

Restricciones principales

workspace_list

Listado de un solo nivel

Solo entrada común, entrada personal y salida personal; máximo 200 elementos

workspace_read_text

Lectura de texto UTF-8

Extensiones permitidas, 1 MiB, máximo 200 000 caracteres, datos en los que no se confía

workspace_write_text

Creación de nuevo texto

Solo salida personal, sin sobrescritura ni borrado, solo extensiones permitidas

python_prepare

Fijación de la solicitud de ejecución

Fija código, hash de entrada y nombre de salida; no ejecuta

python_status

Comprobación del estado de la solicitud personal

No devuelve el código ni la firma de aprobación

python_run

Ejecución de solicitudes aprobadas

Firma por otra vía, única ejecución, Docker, sin red

No se implementan correo, calendario, portapapeles, Registro, ODBC, obtención web, URLs arbitrarias, Shell, PowerShell, instalación de paquetes, autoactualización, inicio automático, operación del navegador, Tool Forge, túneles ni retransmisión de herramientas genérica.

Frontera de confianza

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]

La clave privada de aprobación no se entrega al servicio MCP. El servicio MCP solo posee la clave pública de aprobación y la clave de auditoría. El código Python no se ejecuta con el Python del host y no hay ninguna reserva de ejecución local.

Documentos para leer primero

Comprobación en el entorno de desarrollo

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

En producción, no instale directamente desde PyPI en Internet; utilice el registro interno aprobado y los hash fijos de requirements.lock. uv.lock también fija los entornos de desarrollo y verificación. No se lee .env. La configuración se pasa desde la base de gestión del servicio al entorno del proceso.

Contrato de los trabajos de Python

  • Entrada: /work/input/manifest.json y /work/input/<固定名> (solo lectura)

  • Salida: /work/output/<python_prepareで宣言したファイル名>

  • Nombre público: se crea una salida personal nueva como <request-id>-<連番>.<拡張子> para evitar colisiones

  • Formato de salida: .txt, .md, .csv y .json en UTF-8

  • Salida estándar y error estándar: se descartan y no se devuelven al modelo

  • Red: ninguna

  • Tiempo de ejecución: 60 segundos por defecto, máximo 300 segundos

  • Memoria: 256 MiB, CPU: 1, PID: 64

La lista de valores permitidos para import en AST se defensa en profundidad y no se considera un sandbox de Python. La frontera real la forman la aprobación por otra vía y el aislamiento del sistema operativo de la VM dedicada/Docker rootless.

Si en el timeout no puede confirmarse el éxito de docker rm -f, el ejecutor se muestra en estado de cuarentena, se deniegan a partir de entonces todas las ejecuciones de Python y se preserva el directorio de ejecución. El sistema no se reanudará hasta que el operador destruya y reconstruya la VM dedicada.

Wait, I made a mistake: "--no, the line "La lista de variables permitidas de imports" - need "implemented as defense in depth" - I wrote "se defence in depth" oddly. Rewrite: "La lista de imports permits by AST is a defense in depth defense and is not a Python sandbox." Good.

Also "Dockerless" is wrong - should be "de Docker rootless". I'll correct.

Also I accidentally wrote " se resp producto" no.

Also the last paragraph: "se muestra" should be "se pone". Let me correct.

Let me also ensure "se dejan de" vs "se den Prior". I'll refine entire final answer carefully now.

Final polished version:

  • Table separator: keep original separator line? I typed a different one. Since exact structure for markdown table means same as provided (3 columns, one separator row), that's ok. But I want to keep the same dash counts; not necessary but in a perfect scenario I could use the original separator. Let me use the original separator line | ---------------------- | ------------ | ---------------------------- | in my final output.

Also ensure the header line includes the exact same column count. Yes.

Now final text with clear Spanish.

One more check: "Python job contract" bullet "Nombre público" - it says "公開名: 衝突防止のため <...> として本人出力へ新規作成" → "Nombre público: se crea de nuevo como <request-id>-<連番>.<拡張子> en la salida de la ruta personal para evitar conflictos." Good.

"本人出力" - "salida personal".

Also "各Pythonワークの" no.

Ok, I'm confident. Let me now write the final output free of errors# Company Secure Directory con Python MCP

Es un servidor MCP mínimo de diseño clean-room, pensado exclusivamente para usarse desde Copilot Studio. No se reutiliza el código del antiguo m365-copilot-companion-mcp. Los informes de auditoría del directorio padre se tratan como requisitos negativos y la funcionalidad se ha reducido a 6 herramientas.

La clasificación actual es la de una «implementación de referencia revisable por seguridad». No realice el despliegue en producción hasta haber configurado una VM dedicada o un rootless Docker dedicado, Entra ID, terminación TLS, ACL de claves, registro interno y DLP/SIEM, y haber completado las pruebas de integración reales con Docker.

Funciones proporcionadas

Herramienta

Función

Restricciones principales

workspace_list

Listado de un solo nivel

Solo entrada común, entrada personal y salida personal; máximo 200 elementos

workspace_read_text

Lectura de texto UTF-8

Extensiones permitidas, 1 MiB, máximo 200 000 caracteres, datos no confiables

workspace_write_text

Creación de texto nuevo

Solo salida personal, sin sobrescritura ni borrado, solo extensiones permitidas

python_prepare

Fijación de la solicitud de ejecución

Fija el código, la entrada y el nombre de salida; no ejecuta

python_status

Comprobación del estado de la solicitud personal

No lista el código fuente ni la firma de aprobación

python_run

Ejecución de solicitudes aprobadas

Firma por otra vía, ejecución única, Docker, sin red

No se implementan correo, calendario, portapapeles, Registro, ODBC, obtención web, URLs arbitrarias, Shell, PowerShell, instalación de paquetes, actualización automática, inicio automático, operación del navegador, Tool Forge, bandas túneles ni retransmisión genérica de herramientas.

Puntos límite de confianza

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]

La clave privada de aprobación no se entrega al servicio MCP. El servicio MCP solo posee la clave pública de aprobación y la de auditoría. El código Python no se ejecuta con el Python host del sistema y no hay ninguna reserva de ejecución local.

Documentación para leer primero

Comprobación en el entorno de desarrollo

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

En producción no instale directamente desde el índice público de Internet (PyPI); use el espejo interno aprobado y los hashes fijos de requirements.lock. El entorno de desarrollo y verificación también queda fijado por uv.lock. No se lee .env. La configuración se pasa desde la infraestructura de gestión del servicio al entorno del proceso.

Contrato de los trabajos de Python

  • Entrada: /work/input/manifest.json y /work/input/<固定名> (solo lectura)

  • Salida: /work/output/<python_prepareで宣言したファイル名>

  • Nombre público: se crea un nuevo archivo en la salida personal con la forma <request-id>-<番號>.<拡張子> para evitar conflictos

  • Formato de salida: .txt, .md, .csv y .json en UTF-8

  • Salida estándar y error estándar: se descartan y no se devuelven al modelo

  • Red: ninguna

  • Tiempo de ejecución: 60 segundos por defecto, máximo 300 segundos

  • Memoria: 256 MiB, CPU: 1, PID: 64

La lista de imports permitidos por AST es una defensa en profundidad, no se considera una sandbox de Python. La frontera real es la aprobación por otra vía y el aislamiento de sistema del SO de la VM dedicada o Docker rootless.

Si no se puede confirmar la ejecución correcta de docker rm -f en el timeout, el ejecutor pasa a estado de cuarentena, se permiten ejecutar más ejecuciones de Python y se preserva el directorio de ejecución. No se reanuna hasta que el operador destruya y reconstruya la VM dedicada.

-
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