Company Secure Python MCP
Company Secure Python MCP
Copilot Studio에서만 사용할 것을 전제로 한, 클린룸 설계의 최소 MCP 서버입니다. 이전 m365-copilot-companion-mcp의 코드는 재사용하지 않았습니다. 상위 디렉터리의 감사 보고서를 부정적 요구사항으로 취급하여 기능을 6개 도구로 축소했습니다.
현재 위치는 "보안 검토가 가능한 참조 구현"입니다. 전용 VM 또는 전용 rootless Docker, Entra ID, TLS 종단, 키 ACL, 사내 레지스트리, DLP/SIEM을 구성하고 실제 Docker 통합 테스트를 완료할 때까지 프로덕션에 투입하지 마십시오.
제공 기능
도구 | 기능 | 주요 제약 |
| 1계층 목록 | 공통 입력·본인 입력·본인 출력만, 최대 200건 |
| UTF-8 텍스트 읽기 | 허용 확장자, 1 MiB, 최대 20만 자, 신뢰할 수 없는 데이터 표시 |
| 텍스트 신규 작성 | 본인 출력만, 덮어쓰기·삭제 불가, 허용 확장자만 |
| 실행 요청 고정 | 코드·입력 해시·출력 이름을 고정하고 실행하지 않음 |
| 본인 요청의 상태 확인 | 코드 본문이나 승인 서명은 반환하지 않음 |
| 승인된 요청 실행 | 별도 경로 서명, 1회 한정, Docker, 네트워크 없음 |
메일, 일정, 클립보드, 레지스트리, ODBC, Web 취득, 임의 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의 고정 hash를 사용하십시오. uv.lock은 개발·검증 환경도 고정합니다. .env는 읽지 않습니다. 설정은 서비스 관리 기반에서 프로세스 환경으로 전달합니다.
Python 작업의 계약
입력:
/work/input/manifest.json및/work/input/<固定名>(읽기 전용)출력:
/work/output/<python_prepareで宣言したファイル名>공개 이름: 충돌 방지를 위해
<request-id>-<連番>.<拡張子>로 본인 출력에 신규 생성출력 형식: UTF-8의
.txt,.md,.csv,.json표준 출력·표준 오류: 폐기하고 모델에 반환하지 않음
네트워크: 없음
실행 시간: 기본 60초, 최대 300초
메모리: 256 MiB, CPU: 1, PID: 64
AST의 import 허용 목록은 다층 방어이며, Python 샌드박스로 간주하지 않습니다. 실제 경계는 별도 경로 승인과 전용 VM/rootless Docker의 OS 분리입니다.
타임아웃 시 docker rm -f의 성공을 확인할 수 없으면 러너를 quarantine 상태로 만들고, 이후의 Python 실행을 전면 거부하여 실행 디렉터리를 보존합니다. 운영자가 전용 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