Metadata-Version: 2.4
Name: anima-recall-mcp
Version: 0.1.0
Summary: ANIMArecall(애니마리콜) is a privacy-aware decision memory MCP server for Kakao PlayMCP.
License-File: LICENSE
Requires-Python: >=3.11
Requires-Dist: aiosqlite<1,>=0.21
Requires-Dist: mcp[cli]<2,>=1.27
Requires-Dist: pydantic<3,>=2.10
Provides-Extra: dev
Requires-Dist: pytest-asyncio<1,>=0.25; extra == 'dev'
Requires-Dist: pytest<9,>=8.3; extra == 'dev'
Description-Content-Type: text/markdown

# ANIMArecall MCP

ANIMArecall(애니마리콜)은 사용자가 명시적으로 남긴 결정과 원칙을 기억하고, 현재 선택이
과거 판단과 일치하거나 충돌하는지 근거와 함께 설명하는 Streamable HTTP MCP
서버입니다.

## MCP 도구

| 도구 | 역할 | 변경 |
|---|---|---|
| `anima_remember` | 결정·원칙 저장 | 쓰기 |
| `anima_recall_memories` | 관련 기억 검색 | 읽기 |
| `anima_compare_choice` | 현재 선택과 과거 원칙 비교 | 읽기 |
| `anima_recent_memories` | 최근 기억 목록 | 읽기 |
| `anima_reflect` | 기억 통합: 모순 감지 + 반복 원칙 승격 | 쓰기 |
| `anima_forget` | 명시적 확인 후 기억 삭제 | 삭제 |

모든 도구에는 PlayMCP 가이드가 요구하는 `title`, `readOnlyHint`,
`destructiveHint`, `openWorldHint`, `idempotentHint` annotations가 있습니다.

## 로컬 실행

```powershell
cd G:\ANIMA\anima-recall-mcp
uv sync --extra dev
$env:ANIMA_RECALL_DB="$PWD\data\anima_recall.db"
$env:ANIMA_RECALL_OWNER_PEPPER="replace-with-a-long-random-secret"
uv run anima-recall-mcp
```

- MCP Endpoint: `http://localhost:8000/mcp`
- Health: `http://localhost:8000/health`
- Privacy: `http://localhost:8000/privacy`

## 테스트

```powershell
uv run pytest
```

## PlayMCP in KC 배포

공모전 예선용 서버는 Railway가 아니라 PlayMCP in KC에서 발급받은 Endpoint를
사용합니다.

1. <https://playmcp.kakaocloud.io>에 PlayMCP 가입 계정으로 로그인합니다.
2. `+ 새 MCP 서버 등록` → `Git 소스 빌드`를 선택합니다.
3. Git URL에 `https://github.com/koing999/anima-recall-mcp.git`를 입력합니다.
4. 브랜치는 `main`, Dockerfile 경로는 `Dockerfile`로 설정합니다.
5. 현재 저장소는 비공개이므로 읽기 권한이 있는 GitHub PAT를 입력합니다.
6. Status가 `Active`가 되면 상세 화면의 Endpoint URL을 복사합니다.
7. PlayMCP 개발자 콘솔에서 Endpoint의 `/mcp` 경로로 정보 불러오기를 실행합니다.
8. 임시 등록 후 AI 채팅으로 여섯 도구를 검증한 다음 심사를 요청합니다.

KC 발급 전에는 운영 URL이 없습니다. 발급된 실제 URL을 문서에 기록할 때까지
예전 Railway 주소를 사용하지 마세요.

## 개인정보 경계

- 사용자는 별도의 사용자 이름이나 보관함 키를 입력하지 않습니다.
- 공개 도구 입력 스키마에는 `owner_key`가 존재하지 않습니다.
- 서버는 PlayMCP 사용자 헤더 또는 인증 토큰을 내부 식별자로 사용한 뒤 HMAC으로
  변환하며 원문 식별자는 DB에 저장하지 않습니다.
- 신뢰할 수 있는 식별 정보가 없으면 기억이 섞이지 않도록 요청을 거부합니다.
- 실제 공개 전 PlayMCP가 제공하는 안정적인 사용자 헤더 이름을 확인해야 합니다.
- `ANIMA_RECALL_OWNER_PEPPER`는 운영 환경에서 긴 무작위 값으로 설정해야 합니다.

## 문서

- `docs/KC_DEPLOYMENT.md`: PlayMCP in KC 배포 및 검증 절차
- `docs/PLAYMCP_SUBMISSION.md`: 심사·공개·예선 접수 체크리스트
- `docs/PRIVACY_DRAFT.md`: 개인정보 처리 안내 초안
