A lightweight MCP server that lets Claude Code create, reply to, read, and delete Bluesky posts via the atproto Python SDK.
| Tool | Description |
|---|---|
create_post |
Post a new skeet (text + up to 4 images, max 300 chars) |
reply_to_post |
Reply to an existing post by URL or AT URI (+ up to 4 images) |
delete_post |
Delete a post by URL or AT URI |
get_post |
Fetch a single post by URL or AT URI |
get_my_posts |
Fetch own recent posts |
get_timeline |
Fetch the home timeline |
search_posts |
Search Bluesky posts |
get_notifications |
Fetch recent notifications |
Note: Bluesky posts cannot be edited (AT Protocol limitation). To update a post, delete and re-post — or reply with a correction.
create_post and reply_to_post accept either a single image
(image_path / image_alt) or several images at once via
image_paths / image_alts — newline-separated lists, up to 4 images
per post, with alt texts matched by position. Chain reply_to_post calls
to build an image thread.
ℹ️ Size limit (handled automatically): Bluesky rejects image blobs larger than 2 MB (
blob too big). The server auto-downscales any over-limit image before upload — re-encoding it as a progressively smaller JPEG (max 2048 px, EXIF orientation preserved) until it fits — so you can pass full-resolution phone photos directly. Images already under the limit are uploaded untouched. (Requires Pillow; seerequirements.txt.)
- Log in to https://bsky.app
- Go to Settings → App Passwords → Add App Password
- Name:
Claude Code MCP - Copy the generated password
cd bluesky-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtAdd to your shell profile (.zshrc, .bashrc, or .envrc):
export BLUESKY_HANDLE="yourhandle.bsky.social"
export BLUESKY_A
5D16
PP_PASSWORD="xxxx-xxxx-xxxx-xxxx"The credentials are not stored in Claude Code's settings — they are inherited from the shell environment at runtime.
claude mcp add bluesky \
--transport stdio \
-- ${PWD}/.venv/bin/python3 \
${PWD}/server.pyRun this from the bluesky-mcp directory after activating the venv.
claude mcp list # should show "bluesky"
Then in a Claude Code session, try: "Show me my latest Bluesky posts" or "Search Bluesky for 'Java Modules Maven 4'".
MIT