Skip to content

Feature request: Add attachment/image support to the MCP send_message tool #33

@omni-gh549

Description

@omni-gh549

Summary

The MCP server exposed at localhost:23373 (via @beeper/desktop-mcp) currently only supports sending plain text messages through the send_message tool. There is no way to send images or file attachments, which severely limits what AI assistants (e.g. Claude via Cowork/Claude Desktop) can do on behalf of users.

Current behaviour

The send_message tool signature only accepts a chatID and text parameter. Attempting to send an image requires falling back to UI automation workarounds, which are fragile and not a proper solution.

Requested feature

Add an optional attachment parameter (file path or URL) to the send_message MCP tool. The implementation could:

  1. Accept a local file path or a remote URL as the attachment value
  2. Upload the file to the Matrix media repository using the Matrix media upload API (/_matrix/media/v3/upload)
  3. Construct and send an appropriate Matrix event - m.image for images, m.file for generic files - with the resulting mxc:// URI

Example proposed tool signature

{
  "name": "send_message",
  "parameters": {
    "chatID": "string",
    "text": "string (optional if attachment provided)",
    "attachment": "string (optional) - local file path or URL"
  }
}

Why this matters

AI assistants integrated via MCP are increasingly being used to help users manage their messages. The ability to send images and files is a fundamental part of modern messaging - without it, the MCP integration is limited to read and text-reply workflows only. This would unlock use cases like sharing screenshots, documents, and generated images directly through Beeper via AI.

Context

  • Package: @beeper/desktop-mcp (this repo, packages/mcp-server)
  • MCP server runs locally at localhost:23373
  • Beeper is built on Matrix, so the media upload path is well-defined
  • Raised by a user integrating Beeper MCP with Claude (Cowork mode)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions