A MCP server that gives LLMs direct access to the AT Protocol ecosystem, enabling seamless interaction with Bluesky and other AT Protocol-based social networks.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
tools
-
add_to_list
/ remove_from_list - Manage list members
-
analyze_engagement
Analyze engagement patterns across posts
-
analyze_image
Analyze image metadata and properties
-
analyze_moderation_status
Check moderation status of content
-
analyze_network
Analyze user's network and connections
-
batch_follow
Follow multiple users at once (up to 25)
-
batch_like
Like multiple posts at once (up to 25)
-
batch_repost
Repost multiple posts at once (up to 25)
-
block_user
/ unblock_user - Block and unblock users
-
create_list
Create user lists
-
create_post
Create new posts with rich text support
-
create_rich_text_post
Create posts with advanced formatting
-
create_thread
Create multi-post threads in one call
-
delete_post
Remove posts
-
discover_communities
Discover communities around topics
-
discover_trending
Discover trending topics and posts
-
extract_media_from_post
Extract all media from posts
-
find_influential_users
Find influential users in a topic area
-
find_similar_users
Find users similar to a given user
-
follow_user
/ unfollow_user - Follow and unfollow users
-
generate_alt_text
Generate descriptive alt text for images
-
generate_link_preview
Generate link previews for posts
-
get_custom_feed
Access custom feeds
-
get_followers
Get follower lists
-
get_follows
Get following lists
-
get_list
Retrieve list information
-
get_notifications
Access notification feeds
-
get_post_context
Get post with thread, author, and engagement data
-
get_recent_events
Retrieve recent events from stream
-
get_streaming_status
Check streaming status
-
get_thread
View post threads and conversations
-
get_timeline
Retrieve personalized timelines
-
get_user_profile
Retrieve basic user information (ENHANCED mode: works without auth, provides additional viewer-specific data when authenticated)
-
get_user_summary
Get complete user profile with stats and analysis
-
handle_oauth_callback
Complete OAuth flow
-
like_post
/ unlike_post - Like and unlike posts
-
monitor_keywords
Monitor firehose for specific keywords in real-time
-
mute_user
/ unmute_user - Mute and unmute users
-
recommend_content
Get personalized content recommendations
-
refresh_oauth_tokens
Refresh authentication tokens
-
reply_to_post
Reply to existing posts with threading
-
report_content
/ report_user - Report content and users
-
repost
/ unrepost - Repost content with optional quotes
-
revoke_oauth_tokens
Revoke OAuth tokens
-
search_posts
Search for posts and content across the network (⚠️ API changed in 2025 to require auth)
-
start_oauth_flow
Initiate OAuth authentication
-
start_streaming
Start real-time event stream with filtering
-
stop_streaming
Stop event stream
-
suggest_content_strategy
Get content strategy recommendations based on performance
-
track_users
Track activity from specific users in real-time
-
update_profile
Modify profile and settings
-
upload_image
/ upload_video - Upload media content
filesystem 8
- fs cameronrye-atproto-mcp-74c11c9/scripts/clean-all.js :10
import { existsSync } from 'fs'; - fs cameronrye-atproto-mcp-74c11c9/scripts/help.js :9
import { readFileSync } from 'fs'; - fs cameronrye-atproto-mcp-74c11c9/scripts/make-executable.js :9
import { chmod } from 'fs/promises'; - fs cameronrye-atproto-mcp-74c11c9/scripts/status.js :11
import { readFileSync } from 'fs'; - fs cameronrye-atproto-mcp-74c11c9/src/cli.ts :8
import { existsSync, readFileSync, realpathSync } from 'node:fs'; - fs cameronrye-atproto-mcp-74c11c9/src/tools/implementations/media-tools.ts :8
import { readFile } from 'fs/promises'; - fs cameronrye-atproto-mcp-74c11c9/src/utils/config.ts :6
import { readFileSync } from 'node:fs'; - fs cameronrye-atproto-mcp-74c11c9/src/utils/url-safety.ts :16
import { realpathSync } from 'node:fs';
shell / exec 1
- shell cameronrye-atproto-mcp-74c11c9/scripts/status.js :9
import { execSync } from 'child_process';
network 4
- net cameronrye-atproto-mcp-74c11c9/src/index.ts :16
} from 'node:http'; - net cameronrye-atproto-mcp-74c11c9/src/tools/implementations/composite-tools.ts :58
'Number of recent posts to fetch (1–50, default 10). Only used when includeRecentPosts or includeEngagementStats is true.' - net cameronrye-atproto-mcp-74c11c9/src/tools/implementations/media-tools.ts :629
const response = await fetch(url, { - net cameronrye-atproto-mcp-74c11c9/src/utils/url-safety.ts :11
import http from 'node:http';
secrets 1
- secrets cameronrye-atproto-mcp-74c11c9/src/utils/config.ts :71
process.env['ATPROTO_PASSWORD'] != null &&
declared dependencies 28
- @atproto/api@^0.20.14
- @modelcontextprotocol/sdk@^1.29.0
- zod@^3.22.4
- zod-to-json-schema@^3.25.2
- @eslint/js@^9.39.1
- @types/node@^25.9.3
- @typescript-eslint/eslint-plugin@^8.61.0
- @typescript-eslint/parser@^8.61.0
- @vitest/coverage-v8@^4.1.0
- @vitest/ui@^4.1.0
- chalk@^5.6.2
- command-exists@^1.2.9
- dotenv@^17.4.2
- dotenv-cli@^11.0.0
- eslint@^9.39.1
- eslint-config-prettier@^10.1.8
- eslint-plugin-prettier@^5.5.6
- husky@^9.1.7
- lint-staged@^17.0.7
- mermaid@^11.15.0
- prettier@^3.8.4
- rimraf@^6.1.3
- tsx@^4.22.4
- typescript@^5.9.3
- typescript-eslint@^8.61.0
- vitepress@^1.6.4
- vitepress-plugin-mermaid@^2.0.17
- vitest@^4.1.0