JSPM

activitypub-mcp

1.0.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 6
  • Score
    100M100P100Q59785F
  • License MIT

A Model Context Protocol server for exploring and interacting with the existing Fediverse

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.

npm version License: MIT TypeScript

๐ŸŒŸ 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

  1. Clone and install dependencies:
git clone https://github.com/cameronrye/activitypub-mcp.git
cd activitypub-mcp
npm install
  1. 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
  1. 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:

  1. Locate your Claude Desktop config file:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. Add the server configuration:

{
  "mcpServers": {
    "activitypub": {
      "command": "npx",
      "args": ["-y", "activitypub-mcp"]
    }
  }
}
  1. Restart Claude Desktop to load the new server.

๐Ÿ“– Documentation

Quick Reference

For detailed usage instructions, examples, and troubleshooting, see:

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:

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:

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:

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 handle
  • limit (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 search
  • query (string, required): Search query
  • type (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 for
  • size (string, optional): Instance size ("small", "medium", "large")
  • region (string, optional): Geographic region or language
  • beginnerFriendly (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:

See the Documentation Index for a complete overview.

๐Ÿ”ง Development

Available Scripts

  • npm run mcp - Start MCP server
  • npm run mcp:dev - Start MCP server in watch mode
  • npm run test - Run tests
  • npm 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

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit changes: git commit -m 'Add amazing feature'
  4. Push to branch: git push origin feature/amazing-feature
  5. Open a Pull Request

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments


Made with โค๏ธ for the decentralized web and AI integration