chatlab-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CHATLAB_URL | No | The URL of the ChatLab API server | http://127.0.0.1:5200 |
| CHATLAB_TOKEN | Yes | API token generated from ChatLab settings |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_sessionsB | Lists all imported chat sessions with name, platform, message count, and time range. Returns plain text by default (set format=json for JSON). |
| get_sessionA | Gets full details of a single session by ID. Returns plain text by default (set format=json for JSON). |
| get_messagesA | The primary tool for reading message content. Retrieves up to 500 messages per call with filters for keyword, time range, and sender. Use page to paginate. Returns plain text by default (set format=json for JSON, format=text for compact format). Always prefer this over execute_sql when reading messages. |
| get_membersA | Lists all members in a session with their platformId, name, and role. Returns plain text by default (set format=json for JSON). |
| get_stats_overviewA | Returns statistical overview of a session: message counts, active members, time distribution. Returns plain text by default (set format=json for JSON). |
| execute_sqlA | For statistical aggregation ONLY (COUNT, GROUP BY, SUM, AVG). Do NOT use to fetch message content — use get_messages for that. Max 200 rows returned. Available tables: message, member. |
| get_conversation_textA | Get conversation in plain text format with filtering and compression. Returns compact text optimized for LLM context (saves tokens vs JSON). |
| get_full_conversationA | Get full conversation across multiple pages, returns compact text format. Use for small to medium sessions only. |
| get_message_contextA | Get N messages before and after one or more specific message IDs. Use when the user references "what was being said around message X" or wants to see the conversation surrounding a specific message. |
| get_conversation_betweenA | Get messages between two specific members (interleaved by time). Use when the user asks "what did A and B talk about". Members must be referenced by their numeric DB id; call get_members first to look them up. |
| get_session_summariesA | Get AI-generated summaries of chat sub-sessions from the chat_session table. Use to quickly survey what topics have been discussed. Supports keyword filtering and time range. Returns text by default. |
| deep_search_messagesA | Full-text search messages via FTS5, then expand each hit with surrounding context messages. Use for "did anyone mention X" style queries where conversation context matters. |
| get_time_statsA | Get message count distribution bucketed by hour, weekday, or day. Use for "when are people most active" type questions. Timezone-aware bucketing. |
| get_member_activityA | Top members ranked by message count with percentage of total. Use for "who talks the most" or "most active members" type questions. Supports top_n and time filters. |
| get_member_name_historyA | Get the historical name changes (account name, nickname) for a single member. Useful for tracking identity changes over time. |
| get_response_time_analysisA | Reply intervals between consecutive messages from different senders, grouped by (from, to) pair. Excludes same-sender continuations and gaps over 1 hour. Use for "who responds fastest" type questions. |
| keyword_frequencyA | Word/keyword frequency analysis. Currently not implemented in the MCP server due to NLP dependency size; returns a stub message with alternative approaches. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
Most tools have clearly distinct purposes, but there is slight overlap between get_messages, get_conversation_text, and get_full_conversation. However, descriptions clarify when to use each, so ambiguity is low.
All tools follow a consistent verb_noun pattern with snake_case. Most use 'get_' prefix, except deep_search_, execute_sql, keyword_frequency, and list_sessions, which are still clear and consistent with their verb choice.
17 tools is slightly above the typical well-scoped range (3-15), but each tool serves a distinct analytical purpose for chat sessions, so it feels appropriate rather than bloated.
The tool set covers all major aspects of chat analysis (listing, messages, members, activity, time stats, context, summaries). The only gap is the stub keyword_frequency tool, which is acknowledged but not implemented.