npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@semihberkay/bluesky-mcp

v1.0.6

Published

MCP server for Bluesky

Readme

Bluesky MCP Server

A Model Context Protocol (MCP) server for Bluesky that can post on your behalf by using the AT Protocol.

Setup

  1. Install dependencies:
npm install
  1. Build the project:
npm run build
  1. Configure Claude for Desktop:

Open your Claude for Desktop App configuration at ~/Library/Application Support/Claude/claude_desktop_config.json and add:

{
    "mcpServers": {
        "bluesky-mcp": {
            "command": "npx",
            "args": ["-y", "@semihberkay/bluesky-mcp"],
            "env": {
                "BLUESKY_IDENTIFIER": "your.handle.bsky.social",
                "BLUESKY_PASSWORD": "your-app-password",
            }
        }
    }
}

Required Environment Variables

  • BLUESKY_IDENTIFIER: Your Bluesky handle or email
  • BLUESKY_PASSWORD: Your Bluesky app password

Available MCP Tools

Authentication

tool: "login"
params: {
  identifier?: string, // Your Bluesky handle or email (optional if set in env)
  password?: string    // Your Bluesky app password (optional if set in env)
}

The server will attempt to auto-login using credentials from the environment variables when starting up. You only need to use the login tool if:

  • You haven't set the environment variables in Claude's config
  • You want to login with different credentials
  • The auto-login failed

Posts

// Create a new post
tool: "create-post"
params: {
  text: string,           // The text content of your post
  images?: {              // Optional array of images
    data: string,         // Base64 encoded image data
    encoding: string      // Image MIME type (e.g., image/jpeg)
  }[]
}

// Get a single post
tool: "get-post"
params: {
  uri: string            // The URI of the post to fetch
}

// Get multiple posts
tool: "get-posts"
params: {
  uris: string[]        // Array of post URIs to fetch
}

// Delete a post
tool: "delete-post"
params: {
  uri: string           // The URI of the post to delete
}

Interactions

// Like a post
tool: "like-post"
params: {
  uri: string,          // The URI of the post to like
  cid: string          // The CID of the post to like
}

// Unlike a post
tool: "unlike-post"
params: {
  likeUri: string      // The URI of the like to remove
}

// Repost
tool: "repost"
params: {
  uri: string,         // The URI of the post to repost
  cid: string         // The CID of the post to repost
}

// Remove repost
tool: "unrepost"
params: {
  repostUri: string   // The URI of the repost to remove
}

Profile & Timeline

// Get your profile
tool: "get-profile"
params: {}

// Get timeline
tool: "get-timeline"
params: {
  limit?: number      // Number of posts to fetch (max 100)
}

Prompts

Format Timeline

prompt: "format-timeline"
params: {
  timeline: any       // Timeline data to format
}

Formats timeline data in a human-readable way with:

  • Author name/handle
  • Post text
  • Engagement metrics (replies, reposts, likes)
  • Timestamps
  • Embedded content (links, videos)
  • Repost information

Features

  • ✅ Authentication with Bluesky
  • ✅ Create text posts
  • ✅ Support for image uploads
  • ✅ Get user profile
  • ✅ Get timeline
  • ✅ Like/Unlike posts
  • ✅ Repost/Unrepost
  • ✅ Rich text support with automatic link and mention detection
  • ✅ MCP compatible for use with Claude