Skip to main content
Glama
README.md
# Are.na MCP

<p align="center">
  <img src="./landing/assets/logo.svg" alt="Are.na MCP logo" width="180" />
</p>

Graph-native MCP server for Are.na.

Compatible with any MCP client that supports command-based servers (for example Claude Desktop, Cursor, and VS Code).

## Quick Start (Local STDIO)

Requirements:

- Node.js 22+
- Are.na personal access token

Run directly from GitHub (recommended):

```bash
ARENA_ACCESS_TOKEN="YOUR_TOKEN" npm exec --yes --package=github:xaelophone/arena-mcp arena-mcp
```

Or run from a local clone:

```bash
npm install
npm run build
ARENA_ACCESS_TOKEN="YOUR_TOKEN" npm run start
```

## MCP Client Config

Generic command pattern:

```json
{
  "mcpServers": {
    "arena": {
      "command": "npx",
      "args": ["--yes", "--package=github:xaelophone/arena-mcp", "arena-mcp"],
      "env": {
        "ARENA_ACCESS_TOKEN": "YOUR_TOKEN"
      }
    }
  }
}
```

Client-specific setup:

- [Claude Desktop](./docs/clients/claude-desktop.md)
- [Cursor](./docs/clients/cursor.md)
- [VS Code](./docs/clients/vscode.md)

## Known Issues and Workarounds

- `search_arena` may hit `403` on v3 endpoints for premium-gated contexts. By default the server retries via v2 when `ARENA_ENABLE_V2_SEARCH_FALLBACK=true`.
- Remote HTTP clients must send `Accept: application/json, text/event-stream` during MCP initialize, or you can get `406 Not Acceptable`.
- Missing/invalid auth keys on HTTP mode return `401 Unauthorized` on `/mcp`.

Details and troubleshooting:

- [Self-host HTTP mode](./docs/self-host-http.md#troubleshooting)
- [API reference: response and error notes](./docs/api-reference.md#response-and-error-notes)

## Docs

Start here:

- [Docs index](./docs/README.md)

Core references:

- [API reference](./docs/api-reference.md)
- [Self-host HTTP mode](./docs/self-host-http.md)
- [Developer guide](./docs/developer-guide.md)
- [Docs maintenance checklist](./docs/maintenance.md)

## Validation

```bash
npm run docs:check
npm run lint
npm run typecheck
npm test
npm run build
```

STDIO smoke test (requires real token):

```bash
ARENA_ACCESS_TOKEN="YOUR_TOKEN" npm run build && npm run smoke:stdio
```

## Landing Page

```bash
npm run landing
```

Open `http://localhost:4173`.

TDQS

B3.3/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct resource/action combination: search, channel contents, block metadata, block connections, user profile, user contents, and connection operations. Create_block vs connect_block are clearly separated as new vs existing, and channel contents vs user contents are disambiguated by the resource prefix.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern: search_*, get_*, create_*, connect_*, disconnect_*, move_*. The naming convention is predictable and uniform across the entire toolset.

Tool Count5/5

11 tools is well-scoped for an Are.na integration. Each tool serves a meaningful purpose without redundancy or an overwhelming number of operations.

Completeness4/5

Core read, search, create, and curation workflows are well covered, including channel contents, block details, user content, and connection management. Missing update/delete operations for channels and blocks is a notable gap, but agents can still complete primary workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues