Skip to main content
Glama
yokko001

Company Secure Python MCP

by yokko001

Company Secure Python MCP

Copilot Studio에서만 사용할 것을 전제로 한, 클린룸 설계의 최소 MCP 서버입니다. 이전 m365-copilot-companion-mcp의 코드는 재사용하지 않았습니다. 상위 디렉터리의 감사 보고서를 부정적 요구사항으로 취급하여 기능을 6개 도구로 축소했습니다.

현재 위치는 "보안 검토가 가능한 참조 구현"입니다. 전용 VM 또는 전용 rootless Docker, Entra ID, TLS 종단, 키 ACL, 사내 레지스트리, DLP/SIEM을 구성하고 실제 Docker 통합 테스트를 완료할 때까지 프로덕션에 투입하지 마십시오.

제공 기능

도구

기능

주요 제약

workspace_list

1계층 목록

공통 입력·본인 입력·본인 출력만, 최대 200건

workspace_read_text

UTF-8 텍스트 읽기

허용 확장자, 1 MiB, 최대 20만 자, 신뢰할 수 없는 데이터 표시

workspace_write_text

텍스트 신규 작성

본인 출력만, 덮어쓰기·삭제 불가, 허용 확장자만

python_prepare

실행 요청 고정

코드·입력 해시·출력 이름을 고정하고 실행하지 않음

python_status

본인 요청의 상태 확인

코드 본문이나 승인 서명은 반환하지 않음

python_run

승인된 요청 실행

별도 경로 서명, 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을 폐기·재구축할 때까지 재개하지 않습니다.

-
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