MCP server at POST /mcp (official SDK, stateless Streamable HTTP) (#11)
CI / build + unit (push) Successful in 1m6s
CI / build + unit (push) Successful in 1m6s
This commit was merged in pull request #11.
This commit is contained in:
@@ -53,6 +53,33 @@ pending because firmware strips want_ack before TX.
|
||||
All sends always target channel index 3 (`test`) — never the primary
|
||||
channel. Override with `MESH_SEND_CHANNEL`.
|
||||
|
||||
## MCP server
|
||||
|
||||
The bot also exposes an MCP (Model Context Protocol) endpoint at
|
||||
`POST /mcp` (outside the `/api` prefix), served in-process over the SDK's
|
||||
Streamable HTTP transport in stateless mode. It maps 1:1 to the REST
|
||||
endpoints — no new logic, same channel pinning:
|
||||
|
||||
- `mesh_status` — bridge connection state (`{ connected, myNodeNum, host, port }`)
|
||||
- `send_message(text, to?)` — send a text message; `to` resolves like `POST /api/send` (omitted/""/"!b"/"broadcast" → broadcast, number or numeric string → node number, else name lookup); returns `{ id }`; unknown/ambiguous targets are tool errors
|
||||
- `list_channels` — device channels (keys redacted)
|
||||
- `list_nodes` — known nodes as lean summaries
|
||||
- `get_node(id)` — one node by number or name; tool error when missing/ambiguous
|
||||
- `get_messages` — message history, newest first (last 100, tx records carry delivery status)
|
||||
|
||||
Point any MCP client at it (Streamable HTTP URL):
|
||||
|
||||
```json
|
||||
{ "mcpServers": { "mesh-bot": { "url": "http://bot.dev.kkhost.pl/mcp" } } }
|
||||
```
|
||||
|
||||
```sh
|
||||
curl -X POST http://localhost:3000/mcp \
|
||||
-H 'content-type: application/json' \
|
||||
-H 'accept: application/json, text/event-stream' \
|
||||
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
|
||||
```
|
||||
|
||||
## Env vars
|
||||
|
||||
- `MESH_HOST` (default `192.168.1.4`) — bridge host
|
||||
|
||||
Reference in New Issue
Block a user