Company Secure Python MCP
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 |
| Listado de un solo nivel | Solo entrada común, entrada personal y salida personal; máximo 200 elementos |
| Lectura de texto UTF-8 | Extensiones permitidas, 1 MiB, máximo 200 000 caracteres, datos en los que no se confía |
| Creación de nuevo texto | Solo salida personal, sin sobrescritura ni borrado, solo extensiones permitidas |
| Fijación de la solicitud de ejecución | Fija código, hash de entrada y nombre de salida; no ejecuta |
| Comprobación del estado de la solicitud personal | No devuelve el código ni la firma de aprobación |
| 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.exeEn 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.jsony/work/input/<固定名>(solo lectura)Salida:
/work/output/<python_prepareで宣言したファイル名>Nombre público: se crea una salida personal nueva como
<request-id>-<連番>.<拡張子>para evitar colisionesFormato de salida:
.txt,.md,.csvy.jsonen UTF-8Salida 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 |
| Listado de un solo nivel | Solo entrada común, entrada personal y salida personal; máximo 200 elementos |
| Lectura de texto UTF-8 | Extensiones permitidas, 1 MiB, máximo 200 000 caracteres, datos no confiables |
| Creación de texto nuevo | Solo salida personal, sin sobrescritura ni borrado, solo extensiones permitidas |
| Fijación de la solicitud de ejecución | Fija el código, la entrada y el nombre de salida; no ejecuta |
| Comprobación del estado de la solicitud personal | No lista el código fuente ni la firma de aprobación |
| 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.exeEn 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.jsony/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 conflictosFormato de salida:
.txt,.md,.csvy.jsonen UTF-8Salida 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.
This server cannot be installed
Maintenance
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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