Server data from the Official MCP Registry
Full read + write access to Slack Lists for AI: create, update, check off, reassign, delete.
Full read + write access to Slack Lists for AI: create, update, check off, reassign, delete.
This is a well-structured Slack Lists MCP server with appropriate authentication, reasonable permissions, and generally good code quality. The server requires a Slack bot token with proper scopes (lists:read, lists:write), handles credentials securely via environment variables, and implements comprehensive input validation and error handling. No critical vulnerabilities or malicious patterns detected. Minor code quality observations noted but do not materially affect security. Supply chain analysis found 6 known vulnerabilities in dependencies (0 critical, 4 high severity). Package verification found 1 issue.
4 files analyzed · 12 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: SLACK_BOT_TOKEN
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-justadityaraj-slack-lists-mcp": {
"env": {
"SLACK_BOT_TOKEN": "your-slack-bot-token-here"
},
"args": [
"ars-slack-lists-mcp"
],
"command": "uvx"
}
}
}From the project's GitHub README.
A Model Context Protocol (MCP) server that gives AI assistants full read and write access to Slack Lists.
This server acts as a bridge between AI models and Slack, enabling seamless creation, retrieval, updating, deletion, filtering, and management of Slack List items through a standardized protocol. It empowers AI assistants like Claude Desktop to become powerful productivity tools for managing tasks, projects, and data within Slack.
This project provides a complete package with:
The write paths have been verified against a live Slack workspace (see Verification status).
This MCP server provides a rich set of tools for interacting with Slack Lists:
Follow these steps to get your Slack Lists MCP server up and running.
lists:read and lists:write scopes.lists:readlists:writexoxb-). This is your SLACK_BOT_TOKEN.Clone the repository and install the dependencies:
# Clone the repository
git clone https://github.com/justadityaraj/slack-lists-mcp.git
cd slack-lists-mcp
# Create and activate a virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Install dependencies
pip install -r requirements.txt
Create a .env file by copying the example:
cp .env.example .env
Open the .env file and set your SLACK_BOT_TOKEN:
SLACK_BOT_TOKEN=xoxb-your-bot-token-here
The server loads this .env (from the project root) automatically on startup, so you do not need to put the token anywhere else. A real SLACK_BOT_TOKEN environment variable always takes precedence over the file.
You can run the server directly from the command line:
python src/slack_lists_server.py
The server will start and listen for MCP requests over STDIO.
To use the server with an AI assistant, you need to configure your MCP host.
mcp_servers.json for Claude Desktop).slack_lists_server.py script.Example mcp_servers.json configuration:
{
"mcpServers": {
"slack-lists": {
"command": "/path/to/your/.venv/bin/python",
"args": ["/path/to/slack-lists-mcp-server/src/slack_lists_server.py"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token-here"
}
}
}
}
Important: Make sure to use the absolute path to your Python executable and the server script. Because the server reads the token from the project .env, the env block above is optional.
Once configured, restart your MCP host. The Slack Lists tools should now be available to your AI assistant.
claude mcp add slack-lists -s user -- /abs/path/.venv/bin/python /abs/path/slack-lists-mcp/src/slack_lists_server.py
No -e SLACK_BOT_TOKEN=... is needed; the server picks the token up from .env.
This server exposes the following tools to your AI assistant. Each tool is designed to be intuitive and powerful, with clear descriptions and parameters.
create_list_itemCreates a single new item in a Slack List.
Description: This tool creates one item in the specified Slack List. The item must have at least a title field, and can include additional fields as needed. All field values are validated against the list's schema.
Parameters:
list_id (string, required): The ID of the Slack List (e.g., F1234ABCD).title (string, required): The main title/text for the item.title_column_id (string, optional): Column ID for the title field (defaults to Col10000000).additional_fields (string, optional): JSON string of additional fields. See Field Formats for details.parent_item_id (string, optional): Optional parent item ID to create a subtask.Example Prompt:
"Create a new task in my project list
F1234ABCDwith the title 'Finish Q4 report' and a due date of 2024-12-20."
create_multiple_list_itemsCreates multiple items in a Slack List with rate limiting.
Description: This tool allows bulk creation of list items. Each item is created individually with proper rate limiting to respect Slack's API limits (~50 requests per minute).
Parameters:
list_id (string, required): The ID of the Slack List.items_data (string, required): JSON array of items to create. See Bulk Creation Format for details.title_column_id (string, optional): Column ID for the title field.rate_limit_delay (float, optional): Delay between requests in seconds (default: 1.2s).Example Prompt:
"Add these three tasks to my list
F1234ABCD: 1. Design mockups (due 12/10), 2. Write tests (due 12/15), 3. Update documentation (due 12/20)."
get_list_itemsRetrieves items from a Slack List.
Description: This tool fetches items from the specified Slack List with optional metadata. Use this to view current list contents, check item details, or prepare data for filtering.
Parameters:
list_id (string, required): The ID of the Slack List.limit (integer, optional): Maximum number of items to retrieve (default: 50, max: 100).include_metadata (boolean, optional): Whether to include creation/update metadata (default: True).Example Prompt:
"Show me the 10 most recent items in my 'Tasks' list
F5678EFGH."
filter_list_itemsFilters and retrieves items from a Slack List based on field values.
Description: This tool allows you to search and filter list items by specific field values. Useful for finding items with a specific status, assignee, priority, or any other field.
Parameters:
list_id (string, required): The ID of the Slack List.filter_column_id (string, required): Column ID to filter by.filter_value (string, required): Value to search for.filter_operator (string, optional): How to match the value. See Filter Operators for options.max_items (integer, optional): Maximum number of items to process (default: 100).Example Prompt:
"Find all tasks in list
F1234ABCDassigned to me that are marked as 'High' priority."
export_list_itemsExports items from a Slack List to a structured data format.
Description: This tool exports list items to JSON or CSV format, with optional filtering. Useful for backup, analysis, or integration with other systems.
Parameters:
list_id (string, required): The ID of the Slack List.export_format (string, optional): Output format - json or csv (default: json).filter_column_id (string, optional): Optional column ID to filter by.filter_value (string, optional): Value to filter for (required if filter_column_id is provided).filter_operator (string, optional): Filter operator.Example Prompt:
"Export all completed tasks from my project list
F1234ABCDto a CSV file."
update_list_itemUpdates one or more cells on an existing Slack List item (row). This is the tool for full task management: check a task off, reassign it, reschedule it, or edit any field — in a single call.
Description:
Updates the given columns on the item identified by row_id. Find the row_id with get_list_items or filter_list_items (it is each item's id, e.g. Rec1234567). Find column_ids and select option IDs with discover_list_columns.
Parameters:
list_id (string, required): The ID of the Slack List (e.g., F1234ABCD).row_id (string, required): The ID of the item/row to update (e.g., Rec1234567).fields (string, required): JSON array of cells to update. Each cell is {"column_id": "...", "type": "...", "value": ...}. See Field Formats. Supported types: text, date, user, select, checkbox, number, email, phone.Example Prompt:
"Mark task
Rec1234567in listF1234ABCDas done, reassign it toU1234567, and move the due date to 2025-09-20."
delete_list_itemPermanently deletes an item (row) from a Slack List. This cannot be undone.
Parameters:
list_id (string, required): The ID of the Slack List (e.g., F1234ABCD).row_id (string, required): The ID of the item/row to delete (e.g., Rec1234567).Example Prompt:
"Delete item
Rec1234567from listF1234ABCD."
discover_list_columnsDiscovers a list's columns by inspecting its existing items. Slack exposes no API to read a list's schema directly, so this infers each column's ID, type, a sample value, and (for select columns) the option IDs from the data already in the list. Use it to find the column_id and select option IDs needed by create_list_item and update_list_item.
Note: A column is only discoverable if at least one item has a value in it. Empty columns will not appear.
Parameters:
list_id (string, required): The ID of the Slack List (e.g., F1234ABCD).sample_size (integer, optional): How many items to scan, 1-1000 (default: 100).Example Prompt:
"What columns does list
F1234ABCDhave, and what are the status option IDs?"
When using create_list_item or create_multiple_list_items, you need to provide field data in a specific JSON format. The additional_fields and items_data parameters expect a JSON string.
Each field is an object with column_id, type, and value:
[
{
"column_id": "Col10000001",
"type": "date",
"value": "2024-12-31"
},
{
"column_id": "Col10000002",
"type": "select",
"value": ["OptionID123"]
},
{
"column_id": "Col10000003",
"type": "user",
"value": ["U1234567", "U2345678"]
},
{
"column_id": "Col10000004",
"type": "checkbox",
"value": true
}
]
Supported Field Types:
text: String value.date: String in YYYY-MM-DD format.user: Array of Slack user IDs (e.g., ["U1234567"]).select: Array of select option IDs.checkbox: Boolean true or false.number: Numeric value.email: String email address.phone: String phone number.The items_data parameter for create_multiple_list_items expects a JSON array where each object represents an item to be created.
[
{
"title": "First Task",
"fields": [
{"column_id": "Col123", "type": "date", "value": "2024-12-15"}
]
},
{
"title": "Second Task",
"fields": [
{"column_id": "Col123", "type": "date", "value": "2024-12-20"},
{"column_id": "Col456", "type": "user", "value": ["U1234567"]}
]
}
]
The filter_list_items tool supports the following operators:
contains: Field contains the value (case-insensitive).equals: Field exactly matches the value (case-insensitive).not_equals: Field does not match the value.not_contains: Field does not contain the value.exists: Field has any non-empty value.not_exists: Field is empty or missing.invalid_auth Error: Your SLACK_BOT_TOKEN is likely incorrect or has been revoked. Generate a new one and update your .env file.missing_scope Error: Ensure your Slack app has both lists:read and lists:write scopes.list_not_found Error: The list_id you provided is incorrect. Double-check the ID in Slack.additional_fields and items_data using an online validator.https://app.slack.com/client/.../F1234ABCD).discover_list_columns tool, which lists every column's ID, type, and select option IDs by inspecting the list's existing items. (You can also inspect browser network requests, or read the raw output of get_list_items.)Contributions are welcome! If you have ideas for new features, bug fixes, or improvements, please open an issue or submit a pull request. See CONTRIBUTING.md for more details.
All tools are covered by unit tests and have been exercised against a live Slack workspace: discover_list_columns, create_list_item, update_list_item (text, user, date, and checkbox cells, including a single multi-cell "check off + reassign + reschedule" update), and delete_list_item all round-trip correctly.
One field shape differs from the published docs: checkbox cells take a bare boolean ("checkbox": true), not an array. The docs show "checkbox": [boolean], but the live API rejects the array form with invalid_arguments and returns the value as a bare bool, so this server sends a bare bool.
This project is derived from maplehilllabs/mcp-slack-lists (MIT), extended with update_list_item, delete_list_item, and discover_list_columns plus full field-type support.
This project is licensed under the MIT License. See the LICENSE file for details.
Be the first to review this server!
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.
by Microsoft · Content & Media
Convert files (PDF, Word, Excel, images, audio) to Markdown for LLM consumption