cameronrye/activitypub-mcp
If you are the rightful owner of activitypub-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The ActivityPub MCP Server is a comprehensive Model Context Protocol server that enables LLMs like Claude to explore and interact with the existing Fediverse through standardized MCP tools, resources, and prompts.
ActivityPub MCP Server - Fediverse Client
A comprehensive Model Context Protocol (MCP) server that enables LLMs like Claude to explore and interact with the existing Fediverse through standardized MCP tools, resources, and prompts.
š Features
Core Capabilities
- š Fediverse Client: Interact with existing ActivityPub servers (Mastodon, Pleroma, Misskey, etc.)
- š WebFinger Discovery: Find and discover actors across the fediverse
- š¤ MCP Protocol: Complete MCP server with resources, tools, and prompts
- š§ LLM-Optimized: Designed specifically for LLM interaction patterns
- š TypeScript: Fully typed with modern TypeScript and ESM
- ā” High Performance: Efficient resource management and caching
- š Secure: Built-in security features and input validation
Fediverse Interaction Features
- ā Remote Actor Discovery: Find users on any fediverse instance
- ā Timeline Fetching: Get posts from any user's timeline
- ā Instance Discovery: Find and explore fediverse instances
- ā Instance Information: Get detailed info about any server
- ā Search Capabilities: Search for content across instances
- ā WebFinger Support: Resolve actor identifiers across the network
- ā Multi-Platform Support: Works with Mastodon, Pleroma, Misskey, and more
- ā Follower/Following Lists: Access social connections
MCP Features
- š Resources: Access remote ActivityPub data (actors, timelines, instance info)
- š§ Tools: Discover and interact with fediverse content
- š¬ Prompts: Templates for fediverse exploration and discovery
- š Completions: Context-aware argument completion
- šÆ Sampling: LLM integration for content discovery
- š Monitoring: Built-in logging and performance metrics
š Quick Start
Prerequisites
- Node.js 18+ (LTS recommended)
- npm or yarn package manager
- Git for cloning the repository
Cross-Platform Support
This project works on Windows, macOS, and Linux with automatic platform detection and appropriate script selection.
One-Click Installation
For the fastest setup, use our automated installation script:
Universal (All Platforms)
# Install directly with npx (recommended)
npx activitypub-mcp install
# Or clone and run setup
git clone https://github.com/cameronrye/activitypub-mcp.git
cd activitypub-mcp
npm run setup
Platform-Specific Installation
Windows (PowerShell):
# Clone and setup
git clone https://github.com/cameronrye/activitypub-mcp.git
cd activitypub-mcp
npm run setup:windows
# Or run PowerShell script directly
.\scripts\setup.ps1
macOS/Linux (Bash):
# Clone and setup
git clone https://github.com/cameronrye/activitypub-mcp.git
cd activitypub-mcp
npm run setup:unix
# Or run bash script directly
bash scripts/setup.sh
Manual Installation
- Clone and install dependencies:
git clone https://github.com/cameronrye/activitypub-mcp.git
cd activitypub-mcp
npm install
- Configure environment:
Windows:
# Copy environment template
copy .env.example .env
# Edit configuration (optional)
notepad .env
macOS/Linux:
# Copy environment template
cp .env.example .env
# Edit configuration (optional)
nano .env
- Start the MCP server:
# Start the MCP server (no local ActivityPub server needed)
npm run mcp
Testing the Setup
Test MCP server with MCP Inspector:
# Install MCP Inspector
npm install -g @modelcontextprotocol/inspector
# Connect to the MCP server
mcp-inspector
Claude Desktop Integration
To use this MCP server with Claude Desktop:
-
Locate your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
Add the server configuration:
{
"mcpServers": {
"activitypub": {
"command": "npx",
"args": ["-y", "activitypub-mcp"]
}
}
}
- Restart Claude Desktop to load the new server.
š Documentation
Quick Reference
For detailed usage instructions, examples, and troubleshooting, see:
- - Comprehensive usage documentation
- - Practical examples and integration patterns
- š§ API Reference - Complete API documentation (below)
API Reference
MCP Resources
Resources provide read-only access to fediverse data from any ActivityPub server. All resources return JSON data unless otherwise specified.
Remote Actor Resource
Get information about any actor in the fediverse:
activitypub:/{identifier}
Parameters:
identifier
(string): The actor's fediverse handle (e.g., user@mastodon.social)
Example Response:
{
"@context": ["https://www.w3.org/ns/activitystreams"],
"id": "https://mastodon.social/users/alice",
"type": "Person",
"preferredUsername": "alice",
"name": "Alice Smith",
"summary": "Software developer passionate about decentralized social networks",
"inbox": "https://mastodon.social/users/alice/inbox",
"outbox": "https://mastodon.social/users/alice/outbox"
}
Remote Timeline Resource
Access any actor's timeline/outbox from across the fediverse:
activitypub:/{identifier}
Parameters:
identifier
(string): The actor's fediverse handle (e.g., user@mastodon.social)
Example Response:
{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "OrderedCollection",
"id": "https://mastodon.social/users/alice/outbox",
"totalItems": 42,
"orderedItems": [...]
}
Instance Info Resource
Get information about any fediverse instance:
activitypub:/{domain}
Parameters:
domain
(string): The instance domain (e.g., mastodon.social)
Example Response:
{
"domain": "mastodon.social",
"software": "mastodon",
"version": "4.2.1",
"description": "The original server operated by the Mastodon gGmbH non-profit",
"registrations": true,
"stats": {
"user_count": 900000,
"status_count": 50000000
}
}
Remote Followers/Following Resources
Access follower and following lists from any actor:
activitypub:/{identifier}
activitypub:/{identifier}
MCP Tools
Tools enable LLMs to discover and interact with the fediverse. All tools return structured responses with success/error information.
Discover Actor
Discover and get information about any actor in the fediverse:
{
"name": "discover-actor",
"arguments": {
"identifier": "user@mastodon.social"
}
}
Parameters:
identifier
(string, required): Fediverse handle (e.g., user@mastodon.social)
Fetch Timeline
Fetch recent posts from any actor's timeline:
{
"name": "fetch-timeline",
"arguments": {
"identifier": "user@mastodon.social",
"limit": 20
}
}
Parameters:
identifier
(string, required): Fediverse handlelimit
(number, optional): Number of posts to fetch (1-50, default: 20)
Get Instance Info
Get detailed information about any fediverse instance:
{
"name": "get-instance-info",
"arguments": {
"domain": "mastodon.social"
}
}
Parameters:
domain
(string, required): Instance domain
Search Instance
Search for content on a specific fediverse instance:
{
"name": "search-instance",
"arguments": {
"domain": "mastodon.social",
"query": "typescript",
"type": "accounts"
}
}
Parameters:
domain
(string, required): Instance domain to searchquery
(string, required): Search querytype
(string, optional): Type of content ("accounts", "statuses", "hashtags")
Discover Instances
Find popular fediverse instances by category or topic:
{
"name": "discover-instances",
"arguments": {
"category": "mastodon",
"topic": "technology",
"size": "medium"
}
}
Parameters:
category
(string, optional): Software type ("mastodon", "pleroma", "misskey", etc.)topic
(string, optional): Topic or interest to search forsize
(string, optional): Instance size ("small", "medium", "large")region
(string, optional): Geographic region or languagebeginnerFriendly
(boolean, optional): Show only beginner-friendly instances
Recommend Instances
Get personalized instance recommendations based on interests:
{
"name": "recommend-instances",
"arguments": {
"interests": ["technology", "programming", "open source"]
}
}
Parameters:
interests
(array, required): List of your interests or topics
MCP Prompts
Explore Fediverse
{
"name": "explore-fediverse",
"arguments": {
"interests": "technology and programming",
"instanceType": "mastodon"
}
}
Compare Instances
{
"name": "compare-instances",
"arguments": {
"instances": "mastodon.social, fosstodon.org, hachyderm.io",
"criteria": "community size and focus"
}
}
Discover Content
{
"name": "discover-content",
"arguments": {
"topic": "artificial intelligence",
"contentType": "people"
}
}
šļø Architecture
Project Structure
activitypub-mcp/
āāā src/ # Source code
ā āāā mcp-main.ts # MCP server entry point
ā āāā mcp-server.ts # MCP server implementation
ā āāā webfinger.ts # WebFinger discovery client
ā āāā remote-client.ts # Remote ActivityPub client
ā āāā instance-discovery.ts # Instance discovery service
ā āāā health-check.ts # Health monitoring
ā āāā performance-monitor.ts # Performance tracking
ā āāā config.ts # Configuration constants
ā āāā logging.ts # Logging configuration
āāā docs/ # Documentation
ā āāā setup/ # Installation & configuration guides
ā āāā guides/ # User guides & examples
ā āāā development/ # Development documentation
ā āāā specifications/ # Protocol specifications
āāā scripts/ # Installation & setup scripts
āāā tests/ # Test files
āāā dist/ # Built JavaScript files
āāā package.json # Dependencies and scripts
āāā README.md # This file
Technology Stack
- WebFinger: Actor discovery across the fediverse
- MCP SDK: Model Context Protocol implementation
- ActivityPub: Decentralized social networking protocol
- LogTape: Structured logging
- TypeScript: Type-safe development
Communication Flow
LLM Client āā MCP Protocol āā Fediverse Client āā Remote ActivityPub Servers
ā
WebFinger Discovery
ā
Remote Data Fetching
š Documentation
Comprehensive documentation is available in the docs/
directory:
- - Configuration and installation guides
- - Usage examples and tutorials
- - Development setup and best practices
- - ActivityPub and protocol specifications
See the for a complete overview.
š§ Development
Available Scripts
npm run mcp
- Start MCP servernpm run mcp:dev
- Start MCP server in watch modenpm run test
- Run testsnpm run build
- Build TypeScript
Environment Variables
Create a .env
file:
# MCP Server configuration
MCP_SERVER_NAME=activitypub-mcp
MCP_SERVER_VERSION=1.0.0
# Rate limiting
RATE_LIMIT_ENABLED=true
RATE_LIMIT_MAX=100
RATE_LIMIT_WINDOW=900000
# Logging
LOG_LEVEL=info
Testing
# Test MCP server with inspector
mcp-inspector
# Test fediverse interactions
npm run test
# Manual testing with specific actors
# Use the discover-actor tool to test WebFinger discovery
š Cross-Platform Compatibility
This project is designed to work seamlessly across different operating systems:
Supported Platforms
- Windows 10/11 (PowerShell, Command Prompt, Git Bash)
- macOS (Bash, Zsh)
- Linux (Bash, most distributions)
Platform-Specific Features
- Automatic script detection: npm scripts automatically choose the right script for your platform
- Native path handling: Proper configuration paths for each platform
- Shell compatibility: Both PowerShell (.ps1) and Bash (.sh) scripts provided
Installation Methods by Platform
Platform | Recommended Method | Alternative Methods |
---|---|---|
Windows | npm run setup | .\scripts\setup.ps1 or npm run setup:windows |
macOS | npm run setup | bash scripts/setup.sh or npm run setup:unix |
Linux | npm run setup | bash scripts/setup.sh or npm run setup:unix |
Troubleshooting Platform Issues
Windows PowerShell Execution Policy:
# If you get execution policy errors, run:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Windows Git Bash:
# Git Bash users can use Unix-style commands:
npm run setup:unix
Linux/macOS Permissions:
# If you get permission errors, make scripts executable:
chmod +x scripts/*.sh
š¤ Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Commit changes:
git commit -m 'Add amazing feature'
- Push to branch:
git push origin feature/amazing-feature
- Open a Pull Request
š License
This project is licensed under the MIT License - see the file for details.
š Acknowledgments
- Fedify - ActivityPub server framework
- Model Context Protocol - LLM integration standard
- ActivityPub - W3C decentralized social networking protocol
š Links
Made with ā¤ļø by Cameron Rye