autoreply MCP Server & CLI (Rust)
A dual-mode application for Bluesky profile and post search functionality, written in Rust.
Overview
This application supports two operational modes:
- MCP Server Mode (default): Model Context Protocol server using stdio
- CLI Mode: Command-line utility for direct tool execution
Both modes implement the same tools:
profile(account)- Retrieve user profile informationsearch(account, query)- Search posts within a user's repository
Authentication support via app passwords allows storing and managing credentials for future authenticated operations.
Features
✅ Complete MCP Protocol Implementation
- JSON-RPC 2.0 compliant
- Stdio communication
- Proper error handling with MCP error codes
✅ Authentication & Credential Management
- OAuth Browser Flow - Interactive OAuth with PKCE and callback server
- App password authentication via AT Protocol
- Secure credential storage (OS keyring with file fallback)
- Multi-account support with default selection
- Token refresh and lifecycle management
- CLI commands:
login,logout,accounts list,accounts default - Defaults to OAuth and allows for app passwords
✅ Bluesky Integration
- DID resolution (handle → DID)
- CAR file caching with atomic operations
- Fast streaming CAR file parsing with iterator-based processing
- AT Protocol record parsing and filtering
- Profile and post extraction
✅ Advanced Functionality
- Streaming CAR reader (20-80x times faster than atrium-repo)
- Text search with highlighting
- Unicode normalization (NFKC)
- Comprehensive input validation
- Atomic file operations with locking
- System proxy support via environment variables (HTTP(S)_PROXY, NO_PROXY)
✅ Quality Assurance
- Comprehensive test suite with 110+ tests
- Full error handling and edge case coverage
- Performance optimized for ~2s repo processing
Building
Usage
MCP Server Mode (Default)
The server communicates via stdio using the MCP protocol:
CLI Mode
When invoked with arguments, the binary operates as a command-line utility:
# Get profile information
# Search posts
# Authentication commands
# OAuth browser flow (default - recommended!)
# App password authentication
# Account management
# Get help
For complete CLI usage documentation, see CLI-USAGE.md.
For authentication details and examples, see src/auth/README.md.
Proxy support
This server honors system proxy environment variables via reqwest’s system proxy detection:
- HTTP_PROXY / http_proxy
- HTTPS_PROXY / https_proxy
- ALL_PROXY / all_proxy
- NO_PROXY / no_proxy
Examples:
# HTTPS over an HTTP proxy (CONNECT):
# Exclude local addresses or specific hosts:
# Run the server
Notes:
- Credentials (if required) may be provided in the proxy URL, e.g. http://user:pass@proxy.example.com:8080
- TLS uses the OS trust store (native TLS). If your proxy performs TLS interception, ensure your corporate root CA is installed in the OS trust store.
Example MCP Requests
List available tools:
Get user profile:
Search user's posts: