Skip to main content
Glama

stashcat-api-mcp

MCP (Model Context Protocol) server for the Stashcat / schul.cloud messenger API.

Allows AI assistants (e.g. Claude Desktop) to interact with Stashcat: read and send messages, manage channels and conversations, browse files, and more.

Requirements

  • Node.js 20+

  • A Stashcat account

Related MCP server: Mattermost MCP Server

Installation

git clone https://github.com/dclausen01/stashcat-api-mcp.git
cd stashcat-api-mcp
npm install
npm run build

Configuration

Copy .env.example to .env and fill in your credentials:

cp .env.example .env
STASHCAT_BASE_URL=https://api.stashcat.com/
STASHCAT_EMAIL=your-email@example.com
STASHCAT_PASSWORD=your-password
STASHCAT_APP_NAME=stashcat-mcp
STASHCAT_DEVICE_ID=              # Optional; auto-generated if omitted
STASHCAT_SECURITY_PASSWORD=      # Optional; defaults to STASHCAT_PASSWORD
                                 # Enables automatic E2E message decryption

SESSION_FILE_PATH=./stashcat-session.json

The server logs in once, unlocks E2E encryption, and persists the session to SESSION_FILE_PATH. On subsequent starts it reuses the saved session and only re-authenticates when the session has expired. E2E decryption is re-unlocked automatically on each start.

Usage with Claude Desktop

Add the server to your claude_desktop_config.json:

{
  "mcpServers": {
    "stashcat": {
      "command": "node",
      "args": ["/absolute/path/to/stashcat-api-mcp/dist/index.js"],
      "env": {
        "STASHCAT_EMAIL": "your-email@example.com",
        "STASHCAT_PASSWORD": "your-password",
        "STASHCAT_BASE_URL": "https://api.stashcat.com/"
      }
    }
  }
}

Available Tools

Tool

Description

get_me

Profile of the authenticated user

get_user

Profile of a specific user

list_companies

Companies the user belongs to

get_company

Details of a company

list_company_members

Members of a company

get_all_company_members

Get all members (no pagination)

list_managed_users

List managed users (for admins)

list_groups

List company groups

list_channels

Subscribed channels of a company

search_channels

Search visible/joinable channels

get_channel_info

Detailed info about a channel

get_channel_members

Members of a channel

join_channel

Join a channel

quit_channel

Leave a channel

create_channel

Create a new channel

edit_channel

Edit channel settings

delete_channel

Delete a channel permanently

invite_users_to_channel

Invite users to a channel

accept_channel_invite

Accept a channel invitation

decline_channel_invite

Decline a channel invitation

remove_user_from_channel

Remove a user from a channel

add_channel_moderator

Grant moderator status

remove_channel_moderator

Revoke moderator status

set_channel_favorite

Mark/unmark channel as favorite

enable_channel_notifications

Enable push notifications

disable_channel_notifications

Disable push notifications

list_conversations

All direct messages and group chats

get_conversation

Details of a conversation

create_conversation

Create a new encrypted conversation

archive_conversation

Archive a conversation

set_conversation_favorite

Mark/unmark conversation as favorite

get_messages

Fetch messages from a channel or conversation

send_message

Send a text message

delete_message

Delete a message

mark_as_read

Mark messages as read

like_message

Like a message

get_flagged_messages

Get flagged messages

unlike_message

Remove like from a message

list_likes

List users who liked a message

flag_message

Flag a message

unflag_message

Unflag a message

list_files

List files and folders

get_file_info

Metadata for a file

get_storage_quota

Storage quota info

rename_file

Rename a file

delete_files

Delete one or more files

upload_file

Upload a file to a channel/conversation/personal

download_file

Download a file as base64

move_file

Move a file to another folder

copy_file

Copy a file to another location

create_folder

Create a new folder

delete_folder

Delete a folder

get_notifications

Recent notifications

get_notification_count

Number of unread notifications

get_account_settings

Account settings

list_active_devices

Active devices

change_status

Change status message

change_password

Change account password

deactivate_device

Deactivate an active device

store_profile_image

Upload profile image (base64)

reset_profile_image

Reset profile image to default

delete_notification

Delete a specific notification

list_events

List calendar events in a time range

get_event_details

Details for a specific event

create_event

Create a new calendar event

edit_event

Edit an existing event

delete_events

Delete calendar events

respond_to_event

Accept/decline event invitation

invite_to_event

Invite users to an event

list_available_calendars

CalDAV sync URLs

list_channels_having_events

Channels with events

list_broadcasts

List all broadcast lists

create_broadcast

Create a new broadcast list

delete_broadcast

Delete a broadcast list

rename_broadcast

Rename a broadcast list

add_broadcast_members

Add members to a broadcast list

remove_broadcast_members

Remove members from a broadcast list

list_broadcast_members

List members of a broadcast list

get_broadcast_content

Get messages from a broadcast list

send_broadcast_message

Send a message to a broadcast list

Polls (Surveys)

list_polls

List polls by constraint (created/invited/archived)

get_poll_details

Get full poll details with questions

create_poll

Create a new poll (as draft)

edit_poll

Edit an existing poll

delete_poll

Delete a poll

publish_poll

Publish a draft poll

archive_poll

Archive or unarchive a poll

invite_to_poll

Invite users or channels to a poll

list_poll_participants

List users who answered a poll

create_poll_question

Create a question in a poll

edit_poll_question

Edit a question

delete_poll_question

Delete a question

create_poll_answer

Create an answer option

list_poll_answers

List answers with vote counts

vote_poll

Submit votes for a question

export_poll

Export poll results as CSV

watch_poll

Start/stop watching a poll

list_poll_invited_users

List users invited to a poll

list_poll_invites

List poll invites with pagination

edit_poll_answer

Edit an answer option

delete_poll_answer

Delete an answer option

Realtime

create_realtime_connection

Connect to Socket.io for live events

disconnect_realtime

Disconnect from realtime

send_typing_indicator

Send "typing..." indicator

Building

npm run build      # compile with esbuild → dist/index.js
npm run typecheck  # TypeScript type check only
npm run clean      # remove dist/

License

MIT

F
license - not found
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dclausen01/stashcat-api-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server