Skip to content

Feature: Return file/image content from slack_read_channel for messages with attachments #13

@regine-chan

Description

@regine-chan

Problem

When slack_read_channel returns messages that contain file attachments (e.g. uploaded images), it only returns the filename — not a download URL, not the file content, and not enough metadata to construct a usable URL.

Current response for a message with an image upload:

Files: 1000009870.jpg

This makes it impossible for an AI agent to actually access the file, even though the user is authenticated and has access to the workspace.

Use Case

We are building an agentic quiz night application where:

  1. Teams photograph their handwritten answer sheets and post them to a Slack channel
  2. An AI agent (Claude) reads the channel to collect the answer sheets
  3. The agent uses vision to grade the handwritten answers

Step 2 is completely blocked — the agent can see that a file was uploaded, but cannot retrieve it.

Proposed Solution

For messages with file attachments, slack_read_channel (and slack_read_thread) should return at least one of:

  1. url_private_download — the authenticated download URL from the Slack Files API, which the agent can then fetch using its OAuth token
  2. permalink — the public permalink to the file
  3. Inline image content — for image files, return the image as a base64-encoded MCP image content block (similar to how vision-capable tools return images)

Option 3 would be the most powerful for AI agents that need to visually process uploaded images.

Slack API Reference

The files.info and conversations.history endpoints already return url_private, url_private_download, permalink, thumb_* fields on file objects. The MCP server just needs to surface these.

Workaround

Currently none — without access to the file URL or content, AI agents cannot process Slack file uploads at all.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions