process-gpt-mcp 0.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ .env
@@ -0,0 +1,258 @@
1
+ Metadata-Version: 2.4
2
+ Name: process-gpt-mcp
3
+ Version: 0.0.1
4
+ Summary: ProcessGPT MCP Server - 프로세스 생성, 조회, 실행, 회사 정보 질의 도구
5
+ Project-URL: Homepage, https://github.com/uengine-oss/process-gpt-mcp
6
+ Author-email: uEngine <help@uengine.org>
7
+ License: MIT
8
+ Keywords: bpm,bpmn,fastmcp,mcp,process,process-gpt
9
+ Classifier: Development Status :: 3 - Alpha
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Requires-Python: >=3.10
17
+ Requires-Dist: fastmcp>=0.1.0
18
+ Requires-Dist: httpx>=0.27.0
19
+ Description-Content-Type: text/markdown
20
+
21
+ # Work Assistant MCP Server
22
+
23
+ 업무 지원을 위한 MCP (Model Context Protocol) 도구 서버입니다.
24
+
25
+ ## 개념
26
+
27
+ ```
28
+ 사용자 메시지 → Agent (LLM) → MCP 도구 호출 → 프로세스 실행/결과 반환
29
+ ```
30
+
31
+ - **MCP** = 조회 + 실행 도구 모음
32
+ - **Agent** = 사용자 요청을 분석하고 적절한 도구를 순차적으로 호출
33
+
34
+ ## 도구 목록 (7개)
35
+
36
+ | 도구명 | 설명 | 입력 |
37
+ |--------|------|------|
38
+ | `get_process_list` | 프로세스 정의 목록 조회 | `tenant_id` |
39
+ | `get_process_detail` | 프로세스 상세 정보 조회 | `tenant_id`, `process_id` |
40
+ | `get_form_fields` | 폼 필드 정보 조회 | `tenant_id`, `form_key` |
41
+ | `execute_process` | 프로세스 실행 | `tenant_id`, `user_uid`, `user_email`, `process_definition_id`, `activity_id`, `form_key`, `form_values`, `role_mappings`(선택) |
42
+ | `get_instance_list` | 진행 중인 인스턴스 조회 | `tenant_id`, `user_uid`, `process_id`(선택) |
43
+ | `get_todolist` | 할 일 목록 및 실행 결과 조회 | `tenant_id`, `instance_ids[]` |
44
+ | `get_organization` | 조직도 조회 | `tenant_id` |
45
+
46
+ ## 도구 호출 흐름 가이드
47
+
48
+ ### 프로세스 실행 요청 시
49
+ ```
50
+ 사용자: "12월 26일 휴가 1일 신청해줘"
51
+
52
+ 1. get_process_list(tenant_id)
53
+ → "휴가신청" 프로세스 ID 확인: "vacation_request"
54
+
55
+ 2. get_process_detail(tenant_id, "vacation_request")
56
+ → sequences에서 start_event 이후 첫 번째 액티비티 ID 확인
57
+ → activities에서 해당 액티비티의 tool 필드에서 폼 키 확인
58
+ → roles에서 역할 목록 확인
59
+
60
+ 3. get_form_fields(tenant_id, "vacation_request_activity_001_form")
61
+ → 폼 필드 정보: start_date, days, reason 등
62
+
63
+ 4. execute_process(...)
64
+ → form_values: {"start_date": "2024-12-26", "days": 1}
65
+ → 프로세스 실행 완료
66
+ ```
67
+
68
+ ### 프로세스 실행 결과 조회 시
69
+ ```
70
+ 사용자: "나라장터 검색 결과 알려줘"
71
+
72
+ 1. get_process_list(tenant_id)
73
+ → "나라장터" 프로세스 ID 확인: "g2b_search"
74
+
75
+ 2. get_instance_list(tenant_id, user_uid, "g2b_search")
76
+ → 인스턴스 목록에서 proc_inst_id 확인
77
+
78
+ 3. get_todolist(tenant_id, ["instance_id_1", "instance_id_2"])
79
+ → 각 activity의 output 필드에서 실행 결과 확인
80
+ ```
81
+
82
+ ### 조직도/프로세스 상세 조회 시
83
+ ```
84
+ 사용자: "개발팀에 누가 있어?"
85
+ → get_organization(tenant_id) 직접 호출
86
+
87
+ 사용자: "휴가신청 프로세스 단계가 뭐야?"
88
+ → get_process_list → get_process_detail 순서로 호출
89
+ ```
90
+
91
+ ## 설치
92
+
93
+ ```bash
94
+ cd work-assistant-mcp
95
+ pip install -e .
96
+ ```
97
+
98
+ ## PyPI 배포
99
+
100
+ ### 버전 업데이트
101
+ `pyproject.toml`에서 버전 수정:
102
+ ```toml
103
+ version = "0.2.9" # 새 버전으로 변경
104
+ ```
105
+
106
+ ### 빌드 및 배포 (PowerShell)
107
+ ```powershell
108
+ # dist 폴더 정리 및 빌드
109
+ if (Test-Path dist) { Remove-Item -Recurse -Force dist }
110
+ python -m build
111
+
112
+ # PyPI 업로드
113
+ $env:PYTHONIOENCODING = "utf-8"
114
+ $env:TWINE_USERNAME = "__token__"
115
+ $env:TWINE_PASSWORD = "pypi-xxx..." # PyPI API 토큰
116
+ python -m twine upload dist/*
117
+ ```
118
+
119
+ ### 빌드 및 배포 (Bash/Linux/Mac)
120
+ ```bash
121
+ # dist 폴더 정리 및 빌드
122
+ rm -rf dist/
123
+ python -m build
124
+
125
+ # PyPI 업로드
126
+ export TWINE_USERNAME="__token__"
127
+ export TWINE_PASSWORD="pypi-xxx..." # PyPI API 토큰
128
+ python -m twine upload dist/*
129
+ ```
130
+
131
+ ### 필요 패키지
132
+ ```bash
133
+ pip install build twine
134
+ ```
135
+
136
+ ## 환경 변수 설정
137
+
138
+ `env.example.txt`를 참고하여 `.env` 파일을 생성하세요:
139
+
140
+ ```bash
141
+ # Supabase 설정
142
+ SUPABASE_URL=https://your-project.supabase.co
143
+ SUPABASE_SERVICE_KEY=your-service-role-key
144
+
145
+ # 백엔드 API 설정 (프로세스 실행용)
146
+ API_BASE_URL=https://your-api-server.com
147
+ ```
148
+
149
+ ## 테스트
150
+
151
+ ### MCP Inspector로 테스트
152
+ ```bash
153
+ npx @modelcontextprotocol/inspector python -m work_assistant_mcp.server
154
+ ```
155
+
156
+ ### FastMCP dev 모드
157
+ ```bash
158
+ fastmcp dev src/work_assistant_mcp/server.py
159
+ ```
160
+
161
+ ## Cursor에서 사용
162
+
163
+ `.cursor/mcp.json` 파일에 추가:
164
+
165
+ ```json
166
+ {
167
+ "mcpServers": {
168
+ "work-assistant": {
169
+ "command": "python",
170
+ "args": ["-m", "work_assistant_mcp.server"],
171
+ "env": {
172
+ "SUPABASE_URL": "https://your-project.supabase.co",
173
+ "SUPABASE_SERVICE_KEY": "your-key",
174
+ "API_BASE_URL": "https://your-api-server.com"
175
+ }
176
+ }
177
+ }
178
+ }
179
+ ```
180
+
181
+ ## 사용 시나리오 예시
182
+
183
+ ### 시나리오 1: 프로세스 실행 (휴가 신청)
184
+ ```
185
+ 사용자: "12월 26일 휴가 1일 신청해줘"
186
+
187
+ Agent:
188
+ 1. get_process_list(tenant_id="uengine")
189
+ → [{"id": "vacation_request", "name": "휴가신청"}, ...]
190
+
191
+ 2. get_process_detail(tenant_id="uengine", process_id="vacation_request")
192
+ → sequences: [{source: "start_event", target: "activity_001"}]
193
+ → activities: [{id: "activity_001", tool: "formHandler:vacation_request_activity_001_form", role: "requester"}]
194
+ → roles: [{name: "requester", ...}]
195
+
196
+ 3. get_form_fields(tenant_id="uengine", form_key="vacation_request_activity_001_form")
197
+ → fields_json: [{name: "start_date", type: "date"}, {name: "days", type: "number"}, ...]
198
+
199
+ 4. execute_process(
200
+ tenant_id="uengine",
201
+ user_uid="user-uuid",
202
+ user_email="user@example.com",
203
+ process_definition_id="vacation_request",
204
+ activity_id="activity_001",
205
+ form_key="vacation_request_activity_001_form",
206
+ form_values={"start_date": "2024-12-26", "days": 1},
207
+ role_mappings=[{"name": "requester", "endpoint": ["user-uuid"]}]
208
+ )
209
+ → {"process_instance_id": "vacation_request.xxx-xxx", "message": "프로세스가 성공적으로 실행되었습니다."}
210
+ ```
211
+
212
+ ### 시나리오 2: 업무 현황 조회
213
+ ```
214
+ 사용자: "내 진행 중인 업무 뭐가 있어?"
215
+
216
+ Agent:
217
+ 1. get_instance_list(tenant_id="uengine", user_uid="user-uuid")
218
+ → [{"proc_inst_id": "inst1", "proc_def_id": "vacation_request", "status": "IN_PROGRESS"}, ...]
219
+
220
+ 2. get_todolist(tenant_id="uengine", instance_ids=["inst1", "inst2"])
221
+ → 각 인스턴스의 activity 목록과 output(실행 결과) 반환
222
+
223
+ Agent: "현재 2개의 업무가 진행 중입니다. 휴가신청 건은 승인 대기 중이며..."
224
+ ```
225
+
226
+ ### 시나리오 3: 검색 프로세스 실행 및 결과 조회
227
+ ```
228
+ 사용자: "서울 날씨 검색해줘"
229
+
230
+ Agent:
231
+ 1. get_process_list → "날씨검색" 프로세스 ID: "weather_search"
232
+ 2. get_process_detail → 첫 번째 액티비티, 폼 키 확인
233
+ 3. get_form_fields → location 필드 확인
234
+ 4. execute_process(form_values={"location": "서울"})
235
+ → 프로세스 실행 (에이전트가 자동으로 날씨 API 호출)
236
+
237
+ 잠시 후...
238
+
239
+ 사용자: "날씨 검색 결과 알려줘"
240
+
241
+ Agent:
242
+ 1. get_process_list → "weather_search"
243
+ 2. get_instance_list(process_id="weather_search") → 최근 인스턴스 ID
244
+ 3. get_todolist(instance_ids=[...]) → output에서 날씨 정보 확인
245
+
246
+ Agent: "서울의 현재 날씨는 맑음, 기온 5도입니다..."
247
+ ```
248
+
249
+ ### 시나리오 4: 조직도 조회
250
+ ```
251
+ 사용자: "우리 회사 조직도 보여줘"
252
+
253
+ Agent:
254
+ 1. get_organization(tenant_id="uengine")
255
+ → 조직도 정보 반환
256
+
257
+ Agent: "우리 회사는 개발팀, 기획팀, 디자인팀으로 구성되어 있습니다..."
258
+ ```
@@ -0,0 +1,238 @@
1
+ # Work Assistant MCP Server
2
+
3
+ 업무 지원을 위한 MCP (Model Context Protocol) 도구 서버입니다.
4
+
5
+ ## 개념
6
+
7
+ ```
8
+ 사용자 메시지 → Agent (LLM) → MCP 도구 호출 → 프로세스 실행/결과 반환
9
+ ```
10
+
11
+ - **MCP** = 조회 + 실행 도구 모음
12
+ - **Agent** = 사용자 요청을 분석하고 적절한 도구를 순차적으로 호출
13
+
14
+ ## 도구 목록 (7개)
15
+
16
+ | 도구명 | 설명 | 입력 |
17
+ |--------|------|------|
18
+ | `get_process_list` | 프로세스 정의 목록 조회 | `tenant_id` |
19
+ | `get_process_detail` | 프로세스 상세 정보 조회 | `tenant_id`, `process_id` |
20
+ | `get_form_fields` | 폼 필드 정보 조회 | `tenant_id`, `form_key` |
21
+ | `execute_process` | 프로세스 실행 | `tenant_id`, `user_uid`, `user_email`, `process_definition_id`, `activity_id`, `form_key`, `form_values`, `role_mappings`(선택) |
22
+ | `get_instance_list` | 진행 중인 인스턴스 조회 | `tenant_id`, `user_uid`, `process_id`(선택) |
23
+ | `get_todolist` | 할 일 목록 및 실행 결과 조회 | `tenant_id`, `instance_ids[]` |
24
+ | `get_organization` | 조직도 조회 | `tenant_id` |
25
+
26
+ ## 도구 호출 흐름 가이드
27
+
28
+ ### 프로세스 실행 요청 시
29
+ ```
30
+ 사용자: "12월 26일 휴가 1일 신청해줘"
31
+
32
+ 1. get_process_list(tenant_id)
33
+ → "휴가신청" 프로세스 ID 확인: "vacation_request"
34
+
35
+ 2. get_process_detail(tenant_id, "vacation_request")
36
+ → sequences에서 start_event 이후 첫 번째 액티비티 ID 확인
37
+ → activities에서 해당 액티비티의 tool 필드에서 폼 키 확인
38
+ → roles에서 역할 목록 확인
39
+
40
+ 3. get_form_fields(tenant_id, "vacation_request_activity_001_form")
41
+ → 폼 필드 정보: start_date, days, reason 등
42
+
43
+ 4. execute_process(...)
44
+ → form_values: {"start_date": "2024-12-26", "days": 1}
45
+ → 프로세스 실행 완료
46
+ ```
47
+
48
+ ### 프로세스 실행 결과 조회 시
49
+ ```
50
+ 사용자: "나라장터 검색 결과 알려줘"
51
+
52
+ 1. get_process_list(tenant_id)
53
+ → "나라장터" 프로세스 ID 확인: "g2b_search"
54
+
55
+ 2. get_instance_list(tenant_id, user_uid, "g2b_search")
56
+ → 인스턴스 목록에서 proc_inst_id 확인
57
+
58
+ 3. get_todolist(tenant_id, ["instance_id_1", "instance_id_2"])
59
+ → 각 activity의 output 필드에서 실행 결과 확인
60
+ ```
61
+
62
+ ### 조직도/프로세스 상세 조회 시
63
+ ```
64
+ 사용자: "개발팀에 누가 있어?"
65
+ → get_organization(tenant_id) 직접 호출
66
+
67
+ 사용자: "휴가신청 프로세스 단계가 뭐야?"
68
+ → get_process_list → get_process_detail 순서로 호출
69
+ ```
70
+
71
+ ## 설치
72
+
73
+ ```bash
74
+ cd work-assistant-mcp
75
+ pip install -e .
76
+ ```
77
+
78
+ ## PyPI 배포
79
+
80
+ ### 버전 업데이트
81
+ `pyproject.toml`에서 버전 수정:
82
+ ```toml
83
+ version = "0.2.9" # 새 버전으로 변경
84
+ ```
85
+
86
+ ### 빌드 및 배포 (PowerShell)
87
+ ```powershell
88
+ # dist 폴더 정리 및 빌드
89
+ if (Test-Path dist) { Remove-Item -Recurse -Force dist }
90
+ python -m build
91
+
92
+ # PyPI 업로드
93
+ $env:PYTHONIOENCODING = "utf-8"
94
+ $env:TWINE_USERNAME = "__token__"
95
+ $env:TWINE_PASSWORD = "pypi-xxx..." # PyPI API 토큰
96
+ python -m twine upload dist/*
97
+ ```
98
+
99
+ ### 빌드 및 배포 (Bash/Linux/Mac)
100
+ ```bash
101
+ # dist 폴더 정리 및 빌드
102
+ rm -rf dist/
103
+ python -m build
104
+
105
+ # PyPI 업로드
106
+ export TWINE_USERNAME="__token__"
107
+ export TWINE_PASSWORD="pypi-xxx..." # PyPI API 토큰
108
+ python -m twine upload dist/*
109
+ ```
110
+
111
+ ### 필요 패키지
112
+ ```bash
113
+ pip install build twine
114
+ ```
115
+
116
+ ## 환경 변수 설정
117
+
118
+ `env.example.txt`를 참고하여 `.env` 파일을 생성하세요:
119
+
120
+ ```bash
121
+ # Supabase 설정
122
+ SUPABASE_URL=https://your-project.supabase.co
123
+ SUPABASE_SERVICE_KEY=your-service-role-key
124
+
125
+ # 백엔드 API 설정 (프로세스 실행용)
126
+ API_BASE_URL=https://your-api-server.com
127
+ ```
128
+
129
+ ## 테스트
130
+
131
+ ### MCP Inspector로 테스트
132
+ ```bash
133
+ npx @modelcontextprotocol/inspector python -m work_assistant_mcp.server
134
+ ```
135
+
136
+ ### FastMCP dev 모드
137
+ ```bash
138
+ fastmcp dev src/work_assistant_mcp/server.py
139
+ ```
140
+
141
+ ## Cursor에서 사용
142
+
143
+ `.cursor/mcp.json` 파일에 추가:
144
+
145
+ ```json
146
+ {
147
+ "mcpServers": {
148
+ "work-assistant": {
149
+ "command": "python",
150
+ "args": ["-m", "work_assistant_mcp.server"],
151
+ "env": {
152
+ "SUPABASE_URL": "https://your-project.supabase.co",
153
+ "SUPABASE_SERVICE_KEY": "your-key",
154
+ "API_BASE_URL": "https://your-api-server.com"
155
+ }
156
+ }
157
+ }
158
+ }
159
+ ```
160
+
161
+ ## 사용 시나리오 예시
162
+
163
+ ### 시나리오 1: 프로세스 실행 (휴가 신청)
164
+ ```
165
+ 사용자: "12월 26일 휴가 1일 신청해줘"
166
+
167
+ Agent:
168
+ 1. get_process_list(tenant_id="uengine")
169
+ → [{"id": "vacation_request", "name": "휴가신청"}, ...]
170
+
171
+ 2. get_process_detail(tenant_id="uengine", process_id="vacation_request")
172
+ → sequences: [{source: "start_event", target: "activity_001"}]
173
+ → activities: [{id: "activity_001", tool: "formHandler:vacation_request_activity_001_form", role: "requester"}]
174
+ → roles: [{name: "requester", ...}]
175
+
176
+ 3. get_form_fields(tenant_id="uengine", form_key="vacation_request_activity_001_form")
177
+ → fields_json: [{name: "start_date", type: "date"}, {name: "days", type: "number"}, ...]
178
+
179
+ 4. execute_process(
180
+ tenant_id="uengine",
181
+ user_uid="user-uuid",
182
+ user_email="user@example.com",
183
+ process_definition_id="vacation_request",
184
+ activity_id="activity_001",
185
+ form_key="vacation_request_activity_001_form",
186
+ form_values={"start_date": "2024-12-26", "days": 1},
187
+ role_mappings=[{"name": "requester", "endpoint": ["user-uuid"]}]
188
+ )
189
+ → {"process_instance_id": "vacation_request.xxx-xxx", "message": "프로세스가 성공적으로 실행되었습니다."}
190
+ ```
191
+
192
+ ### 시나리오 2: 업무 현황 조회
193
+ ```
194
+ 사용자: "내 진행 중인 업무 뭐가 있어?"
195
+
196
+ Agent:
197
+ 1. get_instance_list(tenant_id="uengine", user_uid="user-uuid")
198
+ → [{"proc_inst_id": "inst1", "proc_def_id": "vacation_request", "status": "IN_PROGRESS"}, ...]
199
+
200
+ 2. get_todolist(tenant_id="uengine", instance_ids=["inst1", "inst2"])
201
+ → 각 인스턴스의 activity 목록과 output(실행 결과) 반환
202
+
203
+ Agent: "현재 2개의 업무가 진행 중입니다. 휴가신청 건은 승인 대기 중이며..."
204
+ ```
205
+
206
+ ### 시나리오 3: 검색 프로세스 실행 및 결과 조회
207
+ ```
208
+ 사용자: "서울 날씨 검색해줘"
209
+
210
+ Agent:
211
+ 1. get_process_list → "날씨검색" 프로세스 ID: "weather_search"
212
+ 2. get_process_detail → 첫 번째 액티비티, 폼 키 확인
213
+ 3. get_form_fields → location 필드 확인
214
+ 4. execute_process(form_values={"location": "서울"})
215
+ → 프로세스 실행 (에이전트가 자동으로 날씨 API 호출)
216
+
217
+ 잠시 후...
218
+
219
+ 사용자: "날씨 검색 결과 알려줘"
220
+
221
+ Agent:
222
+ 1. get_process_list → "weather_search"
223
+ 2. get_instance_list(process_id="weather_search") → 최근 인스턴스 ID
224
+ 3. get_todolist(instance_ids=[...]) → output에서 날씨 정보 확인
225
+
226
+ Agent: "서울의 현재 날씨는 맑음, 기온 5도입니다..."
227
+ ```
228
+
229
+ ### 시나리오 4: 조직도 조회
230
+ ```
231
+ 사용자: "우리 회사 조직도 보여줘"
232
+
233
+ Agent:
234
+ 1. get_organization(tenant_id="uengine")
235
+ → 조직도 정보 반환
236
+
237
+ Agent: "우리 회사는 개발팀, 기획팀, 디자인팀으로 구성되어 있습니다..."
238
+ ```
@@ -0,0 +1,50 @@
1
+ {
2
+ "mcpServers": {
3
+ "work-assistant": {
4
+ "_comment": "Work Assistant MCP Server v0.3.0 - 프로세스 생성, 조회, 실행, 회사 정보 질의 도구",
5
+ "command": "uvx",
6
+ "args": ["work-assistant-mcp"],
7
+ "env": {
8
+ "_comment_env": "=== 필수 환경변수 ===",
9
+ "SUPABASE_URL": "https://your-project.supabase.co",
10
+ "SUPABASE_ANON_KEY": "your-supabase-anon-key",
11
+
12
+ "_comment_optional": "=== 선택 환경변수 (Cursor 등 외부 MCP 클라이언트용) ===",
13
+ "_comment_auth": "메인 채팅에서는 프론트엔드가 이 값들을 전달하므로 설정 불필요",
14
+ "_comment_auth2": "Cursor 등에서 로그인 없이 사용할 때만 설정",
15
+
16
+ "user_jwt": "your-user-jwt-token (선택: 인증용 JWT 토큰)",
17
+ "tenant_id": "your-tenant-id (선택: 테넌트/회사 ID, 예: uengine)",
18
+ "user_email": "your-email@example.com (선택: 현재 사용자 이메일, get_current_user에서 사용)"
19
+ },
20
+ "enabled": true
21
+ }
22
+ },
23
+
24
+ "_usage_guide": {
25
+ "메인 채팅 (process-gpt)": {
26
+ "설명": "프론트엔드에서 user_jwt, tenant_id를 자동으로 전달",
27
+ "필요한 환경변수": ["SUPABASE_URL", "SUPABASE_ANON_KEY"],
28
+ "선택 환경변수": "불필요 (프론트엔드에서 전달)"
29
+ },
30
+ "Cursor/외부 MCP 클라이언트": {
31
+ "설명": "로그인 없이 환경변수로 인증 정보 제공",
32
+ "필요한 환경변수": ["SUPABASE_URL", "SUPABASE_ANON_KEY", "user_jwt", "tenant_id"],
33
+ "선택 환경변수": ["user_email (get_current_user로 사용자 정보 조회 시 필요)"]
34
+ }
35
+ },
36
+
37
+ "_available_tools": {
38
+ "get_current_user": "환경변수 user_email로 사용자 정보(uid, name, role 등) 조회",
39
+ "get_process_list": "프로세스 목록 조회",
40
+ "get_process_detail": "프로세스 상세 정보 조회",
41
+ "get_form_fields": "폼 필드 정보 조회",
42
+ "execute_process": "프로세스 실행",
43
+ "get_instance_list": "진행 중인 프로세스 인스턴스 목록 조회",
44
+ "get_todolist": "할 일 목록 및 실행 결과 조회",
45
+ "get_organization": "회사 조직도 조회",
46
+ "generate_process": "프로세스 생성 요청 (프론트엔드 위임)",
47
+ "create_pdf2bpmn_workitem": "PDF to BPMN 변환 워크아이템 생성",
48
+ "ask_user": "사용자에게 추가 정보 요청"
49
+ }
50
+ }
@@ -0,0 +1,37 @@
1
+ [project]
2
+ name = "process-gpt-mcp"
3
+ version = "0.0.1"
4
+ description = "ProcessGPT MCP Server - 프로세스 생성, 조회, 실행, 회사 정보 질의 도구"
5
+ readme = "README.md"
6
+ requires-python = ">=3.10"
7
+ license = {text = "MIT"}
8
+ authors = [
9
+ {name = "uEngine", email = "help@uengine.org"}
10
+ ]
11
+ keywords = ["mcp", "fastmcp", "process-gpt", "process", "bpm", "bpmn"]
12
+ classifiers = [
13
+ "Development Status :: 3 - Alpha",
14
+ "Intended Audience :: Developers",
15
+ "License :: OSI Approved :: MIT License",
16
+ "Programming Language :: Python :: 3",
17
+ "Programming Language :: Python :: 3.10",
18
+ "Programming Language :: Python :: 3.11",
19
+ "Programming Language :: Python :: 3.12",
20
+ ]
21
+ dependencies = [
22
+ "fastmcp>=0.1.0",
23
+ "httpx>=0.27.0",
24
+ ]
25
+
26
+ [project.scripts]
27
+ process-gpt-mcp = "work_assistant_mcp.server:main"
28
+
29
+ [project.urls]
30
+ Homepage = "https://github.com/uengine-oss/process-gpt-mcp"
31
+
32
+ [build-system]
33
+ requires = ["hatchling"]
34
+ build-backend = "hatchling.build"
35
+
36
+ [tool.hatch.build.targets.wheel]
37
+ packages = ["src/work_assistant_mcp"]
@@ -0,0 +1,39 @@
1
+ -- =============================================================================
2
+ -- Work Assistant MCP용 RLS 정책
3
+ -- MCP 도구에서 필요한 SELECT 권한만 부여
4
+ -- =============================================================================
5
+
6
+ -- proc_def (프로세스 정의) - SELECT
7
+ ALTER TABLE proc_def ENABLE ROW LEVEL SECURITY;
8
+ DROP POLICY IF EXISTS "work-assistant-proc_def_select_policy" ON proc_def;
9
+ CREATE POLICY "work-assistant-proc_def_select_policy" ON proc_def
10
+ FOR SELECT TO authenticated
11
+ USING (tenant_id = public.tenant_id());
12
+
13
+ -- form_def (폼 정의) - SELECT
14
+ ALTER TABLE form_def ENABLE ROW LEVEL SECURITY;
15
+ DROP POLICY IF EXISTS "work-assistant-form_def_select_policy" ON form_def;
16
+ CREATE POLICY "work-assistant-form_def_select_policy" ON form_def
17
+ FOR SELECT TO authenticated
18
+ USING (tenant_id = public.tenant_id());
19
+
20
+ -- bpm_proc_inst (프로세스 인스턴스) - SELECT
21
+ ALTER TABLE bpm_proc_inst ENABLE ROW LEVEL SECURITY;
22
+ DROP POLICY IF EXISTS "work-assistant-bpm_proc_inst_select_policy" ON bpm_proc_inst;
23
+ CREATE POLICY "work-assistant-bpm_proc_inst_select_policy" ON bpm_proc_inst
24
+ FOR SELECT TO authenticated
25
+ USING (tenant_id = public.tenant_id());
26
+
27
+ -- todolist (할 일 목록) - SELECT
28
+ ALTER TABLE todolist ENABLE ROW LEVEL SECURITY;
29
+ DROP POLICY IF EXISTS "work-assistant-todolist_select_policy" ON todolist;
30
+ CREATE POLICY "work-assistant-todolist_select_policy" ON todolist
31
+ FOR SELECT TO authenticated
32
+ USING (tenant_id = public.tenant_id());
33
+
34
+ -- configuration (설정/조직도) - SELECT
35
+ ALTER TABLE configuration ENABLE ROW LEVEL SECURITY;
36
+ DROP POLICY IF EXISTS "work-assistant-configuration_select_policy" ON configuration;
37
+ CREATE POLICY "work-assistant-configuration_select_policy" ON configuration
38
+ FOR SELECT TO authenticated
39
+ USING (tenant_id = public.tenant_id());
@@ -0,0 +1,4 @@
1
+ """ProcessGPT MCP Server"""
2
+
3
+ __version__ = "0.0.1"
4
+