Metadata-Version: 2.5
Name: process-gpt-google-workspace-mcp
Version: 0.1.0
Summary: Google Drive 파일·메일 발송 MCP — ProcessGPT 딥 에이전트 작업공간(/workspace) 경로 기준
Project-URL: Homepage, https://github.com/uengine-oss/process-gpt-base-agent-langchain-react
Author-email: uEngine <help@uengine.org>
License: MIT
Keywords: gmail,google-drive,mcp,process-gpt,smtp
Requires-Python: >=3.10
Requires-Dist: fastmcp>=2.0
Requires-Dist: google-auth>=2.20
Requires-Dist: requests>=2.31
Description-Content-Type: text/markdown

# process-gpt-google-workspace-mcp

ProcessGPT 딥 에이전트가 **구글 드라이브 파일**과 **메일 발송**을 쓸 수 있게 하는 테넌트 MCP 서버.
에이전트 샌드박스 경로(`/workspace/...`)를 그대로 받아, 같은 Pod 의 작업공간 파일을 읽고 쓴다.

| 도구 | 하는 일 |
|---|---|
| `drive_find_files(name_contains, folder_id)` | 드라이브에서 파일 찾기 |
| `drive_download_file(file_id, save_to)` | 드라이브 파일 → `/workspace/...` (구글 시트는 xlsx 로) |
| `drive_update_file(file_id, from_path)` | `/workspace/...` 로 드라이브 파일 덮어쓰기 (이전 내용은 드라이브 버전 기록) |
| `drive_upload_file(from_path, name, folder_id)` | `/workspace/...` 를 드라이브에 새 파일로 |
| `send_email(to, subject, body, cc, bcc, attachments)` | 메일 발송 — 여러 명·참조·`/workspace` 파일 첨부(한글 파일명) |

## 테넌트 MCP 등록 (계정 설정 → MCP 서버)

```json
{
  "mcpServers": {
    "google-workspace": {
      "command": "uvx",
      "args": ["process-gpt-google-workspace-mcp"],
      "env": {
        "WORKSPACE_DIR": "/app/workspace/<tenant_id>",
        "GOOGLE_SERVICE_ACCOUNT_JSON": "<서비스 계정 키 JSON 을 문자열로(따옴표로 감싸 한 줄로)>",
        "DRIVE_FOLDER_ID": "<허용할 드라이브 폴더 id>",
        "SMTP_USERNAME": "hr@example.com",
        "SMTP_PASSWORD": "<Gmail 앱 비밀번호>",
        "SMTP_FROM_NAME": "인사담당"
      },
      "enabled": true
    }
  }
}
```

- **WORKSPACE_DIR**: 딥 에이전트가 이 테넌트의 샌드박스 `/workspace` 로 마운트하는 호스트 경로.
  운영 딥 에이전트 이미지에서는 `/app/workspace/<tenant_id>`.
- **드라이브**: Google Cloud 에서 서비스 계정을 만들고 Drive API 를 켠 뒤 키(JSON)를 넣는다.
  쓸 드라이브 폴더를 그 서비스 계정 이메일에 **편집자**로 공유한다. `DRIVE_FOLDER_ID` 를 주면
  그 폴더(하위 포함) 밖의 파일은 찾지도, 받지도, 덮어쓰지도 않는다.
  서비스 계정은 저장 용량이 없어 일반 내 드라이브 폴더에 **새 파일 만들기**는 실패할 수 있다(공유 드라이브는 가능).
  기존 파일 덮어쓰기는 원래 소유자 용량을 쓰므로 문제없다.
- **메일**: Gmail 은 2단계 인증 후 발급한 앱 비밀번호. 보내는 주소는 항상 `SMTP_USERNAME`.
  그 밖: `SMTP_HOST`(smtp.gmail.com), `SMTP_PORT`(587), `SMTP_SECURITY`(starttls|ssl|none).
- 개발용: `DRIVE_LOCAL_DIR` 를 주면 드라이브 대신 그 로컬 폴더를 쓴다(file_id = 상대경로).

프로세스 액티비티의 **에이전트 → 도구** 에서 `google-workspace` 를 고르면 그 업무에서 쓸 수 있다.

## 테스트

```bash
uv run --with pytest pytest -q
```
