Package Exports
- activitypub-mcp
- activitypub-mcp/dist/mcp-main.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (activitypub-mcp) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
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:
- ๐ Usage Guide - Comprehensive usage documentation
- ๐งช Examples - 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://remote-actor/{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://remote-timeline/{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://instance-info/{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://remote-followers/{identifier}
activitypub://remote-following/{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:
- Setup & Installation - Configuration and installation guides
- User Guides - Usage examples and tutorials
- Development - Development setup and best practices
- Specifications - ActivityPub and protocol specifications
See the Documentation Index 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 LICENSE file for details.
๐ Acknowledgments
- Fedify - ActivityPub server framework
- Model Context Protocol - LLM integration standard
- ActivityPub - W3C decentralized social networking protocol
๐ Links
Made with โค๏ธ for the decentralized web and AI integration