logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

bluesky-atp-interface

Facilitate deep integration and management of operations on the Bluesky social network via its underlying AT Protocol, encompassing tasks such as securing credentials, publishing content (including multimedia), manipulating social signals (like/repost), and retrieving user profiles or content streams.

Author

bluesky-atp-interface logo

semioz

No License

Quick Info

GitHub GitHub Stars 5
NPM Weekly Downloads 0
Tools 1
Last Updated 2026-02-19

Tags

apisrequestsblueskybluesky protocolbluesky mcpapis http

Bluesky Interaction Module (AT Protocol)

smithery integration badge

An Model Context Protocol (MCP) service endpoint dedicated to interacting with the Bluesky decentralized social network leveraging the Application Technology Protocol (AT Protocol) for programmatic posting and data retrieval.

Deployment

Installation via Smithery

For automated setup with Claude Desktop utilizing Smithery:

bash npx -y @smithery/cli install @semioz/bluesky-mcp --client claude

Local Configuration

To configure Claude Desktop manually, modify your settings file located at ~/Library/Application Support/Claude/claude_desktop_config.json and inject the following block:

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

Prerequisites (Environment Variables)

  • BLUESKY_IDENTIFIER: Required Bluesky identifier (handle or email).
  • BLUESKY_PASSWORD: Necessary application-specific password for authentication.

Supported MCP Functions

Credential Management

typescript tool: "login" params: { identifier?: string, // Bluesky handle/email (optional if predefined in environment) password?: string // App password (optional if predefined in environment) }

The service attempts initial authentication using environment variables upon startup. Manual invocation of login is only required for overriding credentials, addressing failed auto-logins, or when environment variables are omitted.

Content Publication & Retrieval

typescript // Publish a new record/post tool: "create-post" params: { text: string, // The textual body of the communication images?: { // Optional array for embedded visuals data: string, // Image payload encoded in Base64 encoding: string // MIME type identifier (e.g., image/png) }[] }

// Fetch an individual record by its URI tool: "get-post" params: { uri: string // The globally unique Resource Identifier (URI) of the post }

// Retrieve multiple records in batch tool: "get-posts" params: { uris: string[] // A collection of post URIs to retrieve }

// Decommission a post record tool: "delete-post" params: { uri: string // The URI corresponding to the record slated for removal }

Social Engagements

typescript // Affirmation (Like) action on a record tool: "like-post" params: { uri: string, // Target post URI cid: string // Content Identifier (CID) of the version being liked }

// Revoke Affirmation (Unlike) tool: "unlike-post" params: { likeUri: string // The URI associated with the existing 'like' record }

// Amplify/Share (Repost) an external record tool: "repost" params: { uri: string, // Target post URI for amplification cid: string // CID of the content being reposted }

// Cancel Amplification (Unrepost) tool: "unrepost" params: { repostUri: string // The URI identifying the repost record to be nullified }

Identity and Feed Access

typescript // Retrieve current user's public profile metadata tool: "get-profile" params: {}

// Fetch the user's primary chronological feed tool: "get-timeline" params: { limit?: number // Pagination limit, maximum 100 items }

Output Formatting Utilities

Chronological Feed Serialization

typescript prompt: "format-timeline" params: { timeline: any // Raw data payload from the feed retrieval operation }

Renders the raw timeline payload into a readable format, detailing: - Author identity (display name and handle) - Post content body - Interaction statistics (replies, reposts, likes count) - Creation timestamps - Embedded media (URLs, videos) - Repost attribution details

Core Capabilities

  • ✅ Secure credential exchange and management.
  • ✅ Generation and dispatch of text-only publications.
  • ✅ Capability to embed image assets.
  • ✅ Retrieval of authenticated user profile data.
  • ✅ Access to the personal content stream (timeline).
  • ✅ Operations for liking and unliking content.
  • ✅ Functionality to repost and cancel reposts.
  • ✅ Implicit parsing of rich text elements, including automatic hyperlink and mention resolution.
  • ✅ Full compliance with the Model Context Protocol (MCP) specification.

WIKIPEDIA: XMLHttpRequest (XHR) is an API in the form of a JavaScript object whose methods transmit HTTP requests from a web browser to a web server. The methods allow a browser-based application to send requests to the server after page loading is complete, and receive information back. XMLHttpRequest is a component of Ajax programming. Prior to Ajax, hyperlinks and form submissions were the primary mechanisms for interacting with the server, often replacing the current page with another one.

== History == The concept behind XMLHttpRequest was conceived in 2000 by the developers of Microsoft Outlook. The concept was then implemented within the Internet Explorer 5 browser (1999). However, the original syntax did not use the XMLHttpRequest identifier. Instead, the developers used the identifiers ActiveXObject("Msxml2.XMLHTTP") and ActiveXObject("Microsoft.XMLHTTP"). As of Internet Explorer 7 (2006), all browsers support the XMLHttpRequest identifier. The XMLHttpRequest identifier is now the de facto standard in all the major browsers, including Mozilla's Gecko layout engine (2002), Safari 1.2 (2004) and Opera 8.0 (2005).

=== Standards === The World Wide Web Consortium (W3C) published a Working Draft specification for the XMLHttpRequest object on April 5, 2006. On February 25, 2008, the W3C published the Working Draft Level 2 specification. Level 2 added methods to monitor event progress, allow cross-site requests, and handle byte streams. At the end of 2011, the Level 2 specification was absorbed into the original specification. At the end of 2012, the WHATWG took over development and maintains a living document using Web IDL.

== Usage == Generally, sending a request with XMLHttpRequest has several programming steps.

Create an XMLHttpRequest object by calling a constructor: Call the "open" method to specify the request type, identify the relevant resource, and select synchronous or asynchronous operation: For an asynchronous request, set a listener that will be notified when the request's state changes: Initiate the request by calling the "send" method: Respond to state changes in the event listener. If the server sends response data, by default it is captured in the "responseText" property. When the object stops processing the response, it changes to state 4, the "done" state. Aside from these general steps, XMLHttpRequest has many options to control how the request is sent and how the response is processed. Custom header fields can be added to the request to indicate how the server should fulfill it, and data can be uploaded to the server by providing it in the "send" call. The response can be parsed from the JSON format into a readily usable JavaScript object, or processed gradually as it arrives rather than waiting for the entire text. The request can be aborted prematurely or set to fail if not completed in a specified amount of time.

== Cross-domain requests ==

In the early development of the World Wide Web, it was found possible to brea

See Also

`