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