Skip to main content
Glama
README.md
# padlet-mcp

[Padlet REST API](https://api.padlet.dev/v1)를 감싸는 MCP 서버. Claude Code가 Padlet 보드를 읽을 수 있게 해준다. 읽기 전용 — 글쓰기/수정/삭제는 안 됨.

## 1. 설치

Python 3.10+ 만 있으면 된다 (uv 등 추가 도구 불필요):

```
pip install --user git+https://github.com/teamsparta-biz/padlet-mcp
```

새 버전이 올라온 뒤 갱신하려면:

```
pip install --user --upgrade git+https://github.com/teamsparta-biz/padlet-mcp
```

## 2. API 키 받기

공용 biz 계정으로 로그인해서 https://padlet.com/settings/api 에서 키 값을 복사한다. 팀 전체가 공유하는 유일한 키이니 외부 공개 채널이나 커밋에는 올리지 말 것.

복사한 키는 Claude Code한테 그대로 던져주고 "이 키로 padlet-mcp 설정해줘"라고 하면 알아서 저장하고 연동까지 해준다.

## 3. 설치 확인 (테스트)

Claude Code에 등록하기 전에, 키 설정이 맞는지 먼저 확인하자.

**가장 간단한 방법 — Padlet API를 직접 호출해서 실제 보드 목록이 나오는지 확인:**

```
python -c "from padlet_mcp.server import list_boards; import json; print(json.dumps(list_boards(), indent=2))"
```

에러 없이 본인 보드 목록(JSON)이 출력되면 키 설정이 정상이라는 뜻이다. (한글은 `\uXXXX`로 이스케이프되어 나오는 게 정상 — Windows 콘솔 인코딩 때문이며 실제 값은 깨지지 않는다.)

**MCP 프로토콜 그대로 테스트하고 싶다면** ([MCP Inspector](https://github.com/modelcontextprotocol/inspector) 사용, Node.js 필요):

```
npx @modelcontextprotocol/inspector python -m padlet_mcp
```

브라우저가 열리면 `list_boards`/`get_board` 툴을 직접 호출해볼 수 있다.

## 4. Claude Code에 등록

프로젝트 루트에서:

```
claude mcp add padlet --scope project -- python -m padlet_mcp
```

또는 `.mcp.json`에 직접 추가:

```json
{
  "mcpServers": {
    "padlet": {
      "type": "stdio",
      "command": "python",
      "args": ["-m", "padlet_mcp"],
      "env": {}
    }
  }
}
```

`claude mcp list`로 `padlet`이 떠 있는지, 도구가 정상 등록됐는지 확인.

## 5. 문제 해결

- **"Padlet API 키를 찾을 수 없습니다"** — 2단계의 키 저장이 안 된 것. Claude Code한테 다시 키를 주고 설정해달라고 하면 된다.
- **`pip install` 시 "script ... is not on PATH" 경고** — 무시해도 된다. `python -m padlet_mcp`로 실행하므로 Scripts 폴더가 PATH에 없어도 상관없다.
- **Claude Code에서 padlet 툴이 안 보임** — `.mcp.json` 등록 후 Claude Code를 재시작해야 반영된다.

## 로컬 개발 (기여자용)

이 저장소를 clone해서 직접 고칠 때는 [uv](https://docs.astral.sh/uv/)를 쓰면 편하다 (필수는 아님, `pip install -e .`로도 가능):

```
uv sync
uv run padlet-mcp
```

TDQS

A3.9/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: list_boards returns a collection of boards, while get_board returns the full contents of a single board. There is no overlap in their functionality.

Naming Consistency5/5

Both tool names follow a consistent verb_noun pattern: list_boards and get_board. The naming style is uniform and predictable.

Tool Count3/5

With only two tools, the server feels thin, but it may be intentionally scoped for read-only board access. The count is borderline, not clearly excessive or insufficient.

Completeness3/5

The tool surface covers listing boards and fetching full board contents, but lacks any create, update, or delete operations. This is a notable gap for a Padlet integration, though it may work for read-only use cases.

Maintenance

ActivityStale
ResponsivenessNo issues