Skip to content

Installation

This guide covers all the ways to install and run the AT Protocol MCP Server.

Prerequisites

Before installing, ensure you have:

  • Node.js 20 or higher - Download Node.js
  • npm, pnpm, or yarn - Package manager (npm comes with Node.js)
  • Git (optional) - For cloning the repository
  • AT Protocol account (optional) - Only needed for authenticated operations

Verify Prerequisites

bash
# Check Node.js version (should be 20+)
node --version

# Check npm version
npm --version

Installation Methods

Install globally to use the server from anywhere:

bash
npm install -g atproto-mcp

After installation, you can run the server with:

bash
atproto-mcp

Method 2: Using npx (No Installation)

Run directly without installing:

bash
npx atproto-mcp

This is perfect for:

  • Quick testing
  • One-time usage
  • CI/CD pipelines

Method 3: Local Project Installation

Install as a dependency in your project:

bash
# Using npm
npm install atproto-mcp

# Using pnpm
pnpm add atproto-mcp

# Using yarn
yarn add atproto-mcp

Then add to your package.json scripts:

json
{
  "scripts": {
    "mcp": "atproto-mcp"
  }
}

Run with:

bash
npm run mcp

Method 4: From Source (Development)

Clone and build from source for development or customization:

bash
# Clone the repository
git clone https://github.com/cameronrye/atproto-mcp.git
cd atproto-mcp

# Install dependencies
npm install

# Build the project
npm run build

# Run the server
npm start

# Or run in development mode with hot reload
npm run dev

Docker Installation

Because the server speaks MCP over stdio, the Docker image is normally launched interactively by your MCP client (which attaches to the container's stdin/stdout), not run as a long-lived detached daemon.

Building and Running the Image

bash
# Clone and build the image
git clone https://github.com/cameronrye/atproto-mcp.git
cd atproto-mcp
docker build -t atproto-mcp .

# Run the container over stdio (-i keeps stdin open for the MCP client)
docker run -i --rm \
  -e ATPROTO_IDENTIFIER=your.handle \
  -e ATPROTO_PASSWORD=your-app-password \
  atproto-mcp

Point your MCP client at docker run -i --rm ... atproto-mcp as the server command. See Deployment for a complete client-configuration example.

stdio transport

The server communicates over the stdio transport and does not bind a network port, so no -p/port publishing is required. The Dockerfile deliberately has no EXPOSE line — nothing listens on a port.

Verification

After installation, verify the server is working:

Check Version

bash
atproto-mcp --version

Check Help

bash
atproto-mcp --help

Test Basic Functionality

Start the server:

bash
atproto-mcp

You should see output like:

text
[2026-06-11T12:00:00.000Z] INFO  [ToolsFactory] Created 51 AT Protocol MCP tools
[2026-06-11T12:00:00.000Z] INFO  [AtpMcpServer] Registered 51 MCP tools
[2026-06-11T12:00:00.000Z] INFO  [AtpMcpServer] Registered 3 MCP resources and 2 resource templates
[2026-06-11T12:00:00.000Z] INFO  [AtpMcpServer] Registered 2 MCP prompts
[2026-06-11T12:00:00.000Z] INFO  [AtpMcpServer] Starting AT Protocol MCP Server...
[2026-06-11T12:00:00.000Z] INFO  [AtpMcpServer] AT Protocol MCP Server started successfully

Logs are written to stderr (stdout carries the MCP protocol).

Health Check

By default the server uses the stdio transport and does not expose an HTTP endpoint (with --transport http, only /mcp is served — there is no /health route). The bundled health check is a process-local smoke check that loads the package, builds and validates the configuration, and checks this process's heap — it does not bind a port or probe a running server:

bash
node dist/health-check.js

A successful run exits with status 0.

Troubleshooting Installation

Node.js Version Issues

If you get errors about Node.js version:

bash
# Install nvm (Node Version Manager)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

# Install Node.js 20
nvm install 20
nvm use 20

Permission Errors (Global Install)

On Linux/macOS, you might need sudo:

bash
sudo npm install -g atproto-mcp

Or configure npm to install globally without sudo:

bash
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

Build Errors (From Source)

If you encounter build errors:

bash
# Clean and reinstall
rm -rf node_modules package-lock.json
npm install

# Clear npm cache
npm cache clean --force

# Try with different package manager
pnpm install

Docker Issues

If Docker containers won't start:

bash
# Check Docker is running
docker ps

# View container logs
docker logs atproto-mcp

# Rebuild the image after pulling changes
docker build -t atproto-mcp .

Ports

The server uses the stdio transport and does not bind a network port, so "port already in use" errors do not apply to the server process itself. The --port/--host flags are accepted for compatibility but are ignored.

Updating

Global Installation

bash
npm update -g atproto-mcp

Local Installation

bash
npm update atproto-mcp

Docker

bash
# Pull the latest source and rebuild the image
git pull origin main
docker build -t atproto-mcp .

From Source

bash
git pull origin main
npm install
npm run build

Uninstallation

Global Installation

bash
npm uninstall -g atproto-mcp

Local Installation

bash
npm uninstall atproto-mcp

Docker

bash
# Stop and remove the container (if one is running)
docker rm -f atproto-mcp

# Remove the image
docker rmi atproto-mcp

Next Steps

Now that you have the server installed:

  1. Quick Start - Get up and running
  2. Configuration - Configure the server
  3. Authentication - Set up authentication (optional)

Previous: Introduction ← | Next: Quick Start