Skip to main content
Glama
P2P-IM

Direxio Local MCP

by P2P-IM
README.md
# Direxio Local MCP

Local MCP server for Direxio chat workflows.

## Install

```bash
npm install -g @direxio/local-mcp
```

For local testing before publishing the package:

```bash
npm install -g /home/adam/direxio/direxio-mcp
```

## Configuration

Set:

```bash
export DIREXIO_DOMAIN="https://example.com"
export DIREXIO_AGENT_TOKEN="<agent token>"
```

`DIREXIO_DOMAIN` must be the service origin. Do not include `/_p2p` or `/_matrix`.

The server uses only `DIREXIO_AGENT_TOKEN`. It does not request, store, or expose Matrix access tokens.

## MCP Server Command

```bash
direxio-mcp
```

Example MCP client configuration:

```json
{
  "mcpServers": {
    "direxio": {
      "command": "direxio-mcp",
      "env": {
        "DIREXIO_DOMAIN": "https://example.com",
        "DIREXIO_AGENT_TOKEN": "<agent token>"
      }
    }
  }
}
```

## Tools

- `search_rooms` - search or list contacts, groups, and channels.
- `send_message` - send a plain text ordinary message by `room_id`.
- `list_messages` - read ordinary messages by `room_id` and optional `from_ts` / `to_ts`.
- `list_channel_posts` - read channel posts by channel `room_id`.
- `list_post_comments` - read comments for a channel `post_id`.
- `comment_channel_post` - publish a plain text comment to an existing channel post.

All tool results are concise JSON text.

## Development

If Node.js is not on PATH in WSL/Linux, use a reusable user-local install:

```bash
export PATH="/home/adam/.local/node/bin:$PATH"
```

Then run:

```bash
npm test
npm run typecheck
npm run build
npm pack --dry-run
```

## Local Docker E2E Tests

The normal unit suite does not require a Direxio backend:

```bash
npm test
```

After the backend implements the six `mcp.*` actions, run the local Docker e2e harness with:

```bash
export DIREXIO_E2E=1
export DIREXIO_DOMAIN="https://localhost:8448"
export DIREXIO_AGENT_TOKEN="<agent token>"

npm run test:e2e:local
```

For self-signed local Docker certificates, run with `NODE_TLS_REJECT_UNAUTHORIZED=0`.

With only `DIREXIO_DOMAIN` and `DIREXIO_AGENT_TOKEN`, the e2e suite smoke-tests `search_rooms`. Set these optional fixture IDs to exercise the remaining tools:

```bash
export DIREXIO_E2E_ROOM_ID="!room:dendrite-a:8448"
export DIREXIO_E2E_CHANNEL_ROOM_ID="!channel:dendrite-a:8448"
export DIREXIO_E2E_POST_ID="post_123"
```

`DIREXIO_E2E_ROOM_ID` enables `send_message` and `list_messages`. `DIREXIO_E2E_CHANNEL_ROOM_ID` enables `list_channel_posts`. `DIREXIO_E2E_POST_ID` enables `list_post_comments` and `comment_channel_post`.

## MCP SDK Package

The initial plan referenced `@modelcontextprotocol/server`. npm currently publishes that package only as `2.0.0-alpha.2`. This package uses the stable official `@modelcontextprotocol/sdk` package instead, with imports from `@modelcontextprotocol/sdk/server/mcp.js` and `@modelcontextprotocol/sdk/server/stdio.js`.

TDQS

B3.3/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: posting comments, listing posts, listing messages, listing comments, searching rooms, and sending messages. No overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case, e.g., comment_channel_post, list_channel_posts, send_message. The convention is uniform.

Tool Count5/5

With 6 tools, the set is well-scoped for a messaging server covering rooms, messages, channels, and posts. Each tool earns its place without being excessive.

Completeness2/5

The tool set allows reading and writing messages and comments, but lacks essential operations like creating channel posts, editing, or deleting content. This is a significant gap that could cause agent failures.

Maintenance

ActivityStale
ResponsivenessNo issues