Agent tools and protocols

GroveResearch/

at_mcp

MCP server that gives an AI agent its own Bluesky or Delvetown account: timeline reads, posting, replies, and persistent identity.

What’s new here

at_mcp gives the agent an account: it holds the session, tracks the write quota, and persists identity across process restarts. The agent decides what to say; at_mcp handles credentials, facet resolution for mentions and links, and failure contracts (including outcome: "unknown" for writes that may have landed but returned no answer).

What it does

at_mcp exposes 43 MCP tools covering Bluesky and Delvetown: timeline and thread reads, post search, publishing posts and replies, reposts, likes, follows, blocks, mutes, profile edits, notification handling, and image fetching. It runs as a stdio process started by the MCP client, or as a shared service that multiple clients connect to over a loopback port.

Credentials live in environment variables. State (write quota, checkpoints, and the delivery queue the shared service uses) lives in a directory you choose and persists between runs; each start of the stdio process logs in again. A configurable write quota (default: 16 publishing writes per hour) is tracked locally and reported back through identity_status.

From v0.2.0, a prototype mode (AT_MCP_APPVIEW_READS=direct) requests short-lived service tokens for authenticated AppView reads, so the app password never leaves the home PDS.

Who it’s for

Developers building agents that need a social presence: bots that post, agents that read a timeline and reply, or workflows where the LLM should have a durable AT Protocol identity. It also works for Elixir applications that want to embed AT Protocol account access as a library. Binary releases require no Elixir toolchain.

Try it

Download and install (macOS Apple silicon shown; substitute linux-x86_64 for Linux):

VERSION=0.2.0
PLATFORM=macos-arm64
AT_MCP="$HOME/at_mcp"
 
BASE_URL=https://github.com/GroveResearch/at_mcp/releases/download
DOWNLOAD=$(mktemp -d)
TARBALL=at_mcp-$VERSION-$PLATFORM.tar.gz
curl --fail --location "$BASE_URL/v$VERSION/$TARBALL" -o "$DOWNLOAD/$TARBALL" &&
  curl --fail --location "$BASE_URL/v$VERSION/$TARBALL.sha256" -o "$DOWNLOAD/$TARBALL.sha256" &&
  (cd "$DOWNLOAD" && shasum -a 256 -c "$TARBALL.sha256") || exit 1
 
mkdir -p "$AT_MCP/releases" &&
  tar --no-same-owner -xzf "$DOWNLOAD/$TARBALL" -C "$AT_MCP/releases" &&
  ln -sfn "releases/at_mcp-$VERSION" "$AT_MCP/current"

You need an existing Bluesky or Delvetown account for the agent and an app password for it; at_mcp logs in to an account but does not create one. Create an empty private config file:

mkdir -p "$HOME/at_mcp" &&
  install -m 600 /dev/null "$HOME/at_mcp/mcp.json"

Save this configuration in it (for a Bluesky account hosted at bsky.social; the README has a Delvetown version). Set command to the absolute path of $AT_MCP/current/bin/at_mcp-stdio, without pasting $AT_MCP literally, and fill in your handle, app password, and state directory:

{
  "mcpServers": {
    "at_mcp": {
      "command": "/Users/you/at_mcp/current/bin/at_mcp-stdio",
      "env": {
        "AT_MCP_NETWORK": "bluesky",
        "AT_MCP_SERVICE": "https://bsky.social",
        "AT_MCP_HANDLE": "your.handle",
        "AT_MCP_APP_PASSWORD": "xxxx-xxxx-xxxx-xxxx",
        "AT_MCP_STATE_DIR": "/Users/you/at_mcp/state"
      }
    }
  }
}

Then start Claude Code:

claude --mcp-config "$HOME/at_mcp/mcp.json" --strict-mcp-config

Verify the connection with /mcp, then ask the agent to call identity_status and get_profile before doing anything else.

How mature is it

Created October 4, 2026. At v0.2.0 (released October 8, 2026), with 4 releases total. 7 stars, 1 fork, 3 open issues and pull requests. 3 contributors, 39 commits in the last 90 days. MIT licensed. Binaries ship for Linux x86-64 and macOS Apple silicon; no Elixir required to run them.