Company Secure Python MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Company Secure Python MCPlist the files in my secure workspace"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Company Secure Python MCP
This is a clean-room-designed minimal MCP server intended for use only from Copilot Studio. It does not reuse code from the old m365-copilot-companion-mcp. Treating the audit report in the parent directory as negative requirements, the feature set has been reduced to six tools.
Its current positioning is a "security-reviewable reference implementation." Do not deploy it to production until you have configured a dedicated VM or dedicated rootless Docker, Entra ID, TLS termination, key ACLs, an internal registry, and DLP/SIEM, and completed real Docker integration testing.
Features provided
Tool | Function | Main constraints |
| Single-level listing | Common input, user's own input, and user's own output only; up to 200 items |
| UTF-8 text reading | Allowed extensions, 1 MiB, up to 200,000 characters, untrusted data display |
| Create new text | User's own output only; no overwrite or deletion; allowed extensions only |
| Pin the execution request | Pins the code, input hashes, and output names; does not execute |
| Check the status of the user's own requests | Does not return code bodies or approval signatures |
| Execute approved requests | Out-of-band signature, one-time only, Docker, no network |
Email, calendar, clipboard, registry, ODBC, web fetching, arbitrary URLs, Shell, PowerShell, package installation, self-update, auto-start, browser automation, Tool Forge, tunnels, and generic tool relay are not implemented.
Trust boundary
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]The approval private key is not passed to the MCP service. The MCP service holds only the approval public key and the audit key. Python code is not executed with the host Python, and there is no fallback to local execution.
Documents to read first
Verification in the development environment
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.exeIn production, do not install directly from PyPI on the internet; use an approved internal mirror and the pinned hashes in requirements.lock. uv.lock also pins the development and verification environments. .env is not loaded. Configuration is passed from the service management platform to the process environment.
Python job contract
Input:
/work/input/manifest.jsonand/work/input/<固定名>(read-only)Output:
/work/output/<python_prepareで宣言したファイル名>Public name: created as a new file in the user's own output as
<request-id>-<連番>.<拡張子>to prevent collisionsOutput formats: UTF-8
.txt,.md,.csv,.jsonStandard output and standard error: discarded and not returned to the model
Network: none
Execution time: 60 seconds by default, 300 seconds maximum
Memory: 256 MiB, CPU: 1, PID: 64
The AST import allowlist is defense in depth and is not considered a Python sandbox. The actual boundary is out-of-band approval and OS isolation via a dedicated VM/rootless Docker.
If successful docker rm -f cannot be confirmed at timeout, the runner is placed in a quarantine state, all subsequent Python executions are refused, and the execution directory is preserved. It will not resume until an operator destroys and rebuilds the dedicated VM.
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