Skip to main content
Glama
README.md
# FolioPilot

> AI 에이전트가 MCP로 직접 관리하는 경력 포트폴리오 웹사이트 데스크톱 앱
> A desktop app for your career portfolio site — edited by you and by AI agents over MCP.

**Status: M0 (technical spike).** 기획 전체는 [docs/PLANNING.md](docs/PLANNING.md) 참고.

## 무엇이 되나요 (M0)

- 앱 안에 **MCP 서버 내장** (Streamable HTTP, `127.0.0.1`, 토큰 인증)
- **stdio 브리지** — Claude Desktop, Cursor, Codex 등 stdio MCP 클라이언트 연결. 앱이 꺼져 있으면 트레이 모드로 자동 실행
- 에이전트가 수정하면 **편집 화면·활동 로그·미리보기가 즉시 갱신**, 누가 바꿨는지 기록, Undo
- `preview_screenshot` — 에이전트가 사이트 화면을 이미지로 받아 직접 확인
- 삭제는 앱에서 사용자 승인 필요

MCP tools: `get_portfolio`, `update_profile`, `upsert_project`, `delete_project`, `undo`, `list_history`, `preview_screenshot`, `get_preview_url`

## 개발

요구사항: Node 22+, pnpm (corepack)

```bash
pnpm install
pnpm dev          # 앱 실행 (HMR)
pnpm test         # core / mcp 단위·통합 테스트
pnpm typecheck
pnpm build
pnpm e2e:stdio    # 빌드 후: stdio 브리지 → 앱 자동 실행 → tool 호출 → 스크린샷까지 검증
```

## MCP 클라이언트 연결

앱 상단의 **Copy stdio config** 버튼이 현재 환경에 맞는 설정을 복사합니다. 형식:

```json
{
  "mcpServers": {
    "foliopilot": {
      "command": "<FolioPilot 또는 electron 실행파일>",
      "args": ["<...>/out/main/bridge.js", "--app-path", "<...>/apps/desktop"],
      "env": { "ELECTRON_RUN_AS_NODE": "1" }
    }
  }
}
```

HTTP를 지원하는 클라이언트는 `http://127.0.0.1:47821/mcp`에 `Authorization: Bearer <token>` 헤더로 직접 연결할 수 있습니다 (토큰: 앱 데이터 폴더의 `mcp-token`).

## 구조

```
apps/desktop        Electron 앱 (main / preload / renderer / bridge)
packages/core       스키마(zod), Command 처리, 이력/Undo, 저장
packages/mcp        MCP tools, HTTP 호스트, stdio 브리지
```

## License

[MIT](LICENSE)