Skip to main content
Glama
Infomaniak

kChat MCP Server

by Infomaniak
README.md
# kChat MCP Server

MCP Server for the kChat API.

## Tools

1. `kchat_list_channels`
    - List public channels
    - Optional inputs:
        - `limit` (number, default: 100, max: 200): Maximum number of channels to return
        - `page` (number, default: 0): Pagination page
    - Returns: List of channels with their IDs and information

2. `kchat_post_message`
   - Post a new message to a kChat channel
   - Required inputs:
      - `channel_id` (string): The ID of the channel to post to
      - `text` (string): The message text to post
   - Returns: Message post

3. `kchat_reply_to_thread`
   - Reply to a specific message thread
   - Required inputs:
      - `channel_id` (string): The channel containing the thread
      - `thread_id` (string): The parent message ID
      - `text` (string): The reply text
   - Returns: Message post

4. `kchat_add_reaction`
   - Add an emoji reaction to a message
   - Required inputs:
      - `post_id` (string): The message ID
      - `reaction` (string): Emoji name without colons
   - Returns: Reaction

5. `kchat_get_channel_history`
   - Get recent messages from a channel
   - Required inputs:
      - `channel_id` (string): The channel ID
   - Optional inputs:
      - `limit` (number, default: 10): Number of messages to retrieve
   - Returns: List of messages with their content and metadata

6. `kchat_get_thread_replies`
   - Get all replies in a message thread
   - Required inputs:
      - `thread_id` (string): The parent message ID
   - Returns: List of replies with their content and metadata


7. `kchat_get_users`
   - Get list of workspace users with basic profile information
   - Optional inputs:
      - `limit` (number, default: 100, max: 100): Maximum number of users to return
      - `page` (number, default: 0): Pagination page
   - Returns: List of users with their basic profiles

8. `kchat_get_user_profile`
   - Get detailed profile information for a specific user
   - Required inputs:
      - `user_id` (string): The user's ID
   - Returns: Detailed user profile information

9. `kchat_send_direct_message`
    - Send a direct message to a user by username
    - Required inputs:
       - `username` (string): The username of the user to send the message to
       - `text` (string): The message text to send
    - Returns: Message post

## Setup

1. Create a kChat token linked to your user:
    - Visit the [API Token page](https://manager.infomaniak.com/v3/ng/accounts/token/list)
    - Choose "kChat" scope

   Create a kChat token linked to a bot:
    - Visit your kChat webapp and click on New > Integrations > Bot accounts > Add bot accounts

2. Get your kChat team name from your kChat url (eg. https://your-team.kchat.infomaniak.com/your-team/channels/town-square url have `your-team` team)

### Usage with Claude Desktop

Add the following to your `claude_desktop_config.json`:

#### NPX

```json
{
  "mcpServers": {
    "kchat": {
      "command": "npx",
      "args": [
        "-y",
        "@infomaniak/mcp-server-kchat"
      ],
      "env": {
        "KCHAT_TOKEN": "your-token",
        "KCHAT_TEAM_NAME": "your-team"
      }
    }
  }
}
```

#### docker

```json
{
  "mcpServers": {
    "kchat": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "KCHAT_TOKEN",
        "-e",
        "KCHAT_TEAM_NAME",
        "infomaniak/mcp-server-kchat"
      ],
      "env": {
        "KCHAT_TOKEN": "your-token",
        "KCHAT_TEAM_NAME": "your-team"
      }
    }
  }
}
```

### Environment Variables

1. `KCHAT_TOKEN`: Required. Your kChat token.
2. `KCHAT_TEAM_NAME`: Required. Your kChat team unique name.

### Troubleshooting

If you encounter permission errors, verify that:
1. All required scopes are added to your kChat token
2. The token and team name are correctly copied to your configuration

## Build

Docker build:

```bash
docker build -t infomaniak/mcp-server-kchat -f Dockerfile .
```

## License

This MCP server is licensed under the MIT License.