|
""" |
|
This module contains tools for managing Trello lists. |
|
""" |
|
|
|
import logging |
|
from typing import List |
|
|
|
from mcp.server.fastmcp import Context |
|
|
|
from pmcp.mcp_server.trello_server.models import TrelloList |
|
from pmcp.mcp_server.trello_server.services.list import ListService |
|
from pmcp.mcp_server.trello_server.trello import trello_client |
|
|
|
|
|
|
|
service = ListService(trello_client) |
|
|
|
|
|
|
|
async def get_list(ctx: Context, list_id: str) -> TrelloList: |
|
"""Retrieves a specific list by its ID. |
|
|
|
Args: |
|
list_id (str): The ID of the list to retrieve. |
|
|
|
Returns: |
|
TrelloList: The list object containing list details. |
|
""" |
|
try: |
|
result = await service.get_list(list_id) |
|
return result |
|
except Exception as e: |
|
error_msg = f"Failed to get list: {str(e)}" |
|
await ctx.error(error_msg) |
|
raise |
|
|
|
|
|
async def get_lists(ctx: Context, board_id: str) -> List[TrelloList]: |
|
"""Retrieves all lists on a given board. |
|
|
|
Args: |
|
board_id (str): The ID of the board whose lists to retrieve. |
|
|
|
Returns: |
|
List[TrelloList]: A list of list objects. |
|
""" |
|
try: |
|
result = await service.get_lists(board_id) |
|
return result |
|
except Exception as e: |
|
error_msg = f"Failed to get lists: {str(e)}" |
|
await ctx.error(error_msg) |
|
raise |
|
|
|
|
|
async def create_list( |
|
ctx: Context, board_id: str, name: str, pos: str = "bottom" |
|
) -> TrelloList: |
|
"""Creates a new list on a given board. |
|
|
|
Args: |
|
board_id (str): The ID of the board to create the list in. |
|
name (str): The name of the new list. |
|
pos (str, optional): The position of the new list. Can be "top" or "bottom". Defaults to "bottom". |
|
|
|
Returns: |
|
TrelloList: The newly created list object. |
|
""" |
|
try: |
|
result = await service.create_list(board_id, name, pos) |
|
return result |
|
except Exception as e: |
|
error_msg = f"Failed to create list: {str(e)}" |
|
await ctx.error(error_msg) |
|
raise |
|
|
|
|
|
async def update_list(ctx: Context, list_id: str, name: str) -> TrelloList: |
|
"""Updates the name of a list. |
|
|
|
Args: |
|
list_id (str): The ID of the list to update. |
|
name (str): The new name for the list. |
|
|
|
Returns: |
|
TrelloList: The updated list object. |
|
""" |
|
try: |
|
result = await service.update_list(list_id, name) |
|
return result |
|
except Exception as e: |
|
error_msg = f"Failed to update list: {str(e)}" |
|
await ctx.error(error_msg) |
|
raise |
|
|
|
|
|
async def delete_list(ctx: Context, list_id: str) -> TrelloList: |
|
"""Archives a list. |
|
|
|
Args: |
|
list_id (str): The ID of the list to close. |
|
|
|
Returns: |
|
TrelloList: The archived list object. |
|
""" |
|
try: |
|
result = await service.delete_list(list_id) |
|
return result |
|
except Exception as e: |
|
error_msg = f"Failed to delete list: {str(e)}" |
|
await ctx.error(error_msg) |
|
raise |
|
|