MatteoMass's picture
removed the tokens from env
9ad58d0
"""
This module contains tools for managing Trello cards.
"""
import logging
from typing import List
from mcp.server.fastmcp import Context
from pmcp.mcp_server.trello_server.models import TrelloCard
from pmcp.mcp_server.trello_server.services.card import CardService
from pmcp.mcp_server.trello_server.trello import trello_client
from pmcp.mcp_server.trello_server.dtos.update_card import UpdateCardPayload
service = CardService(trello_client)
async def get_card(ctx: Context, card_id: str) -> TrelloCard:
"""Retrieves a specific card by its ID.
Args:
card_id (str): The ID of the card to retrieve.
Returns:
TrelloCard: The card object containing card details.
"""
try:
result = await service.get_card(card_id)
return result
except Exception as e:
error_msg = f"Failed to get card: {str(e)}"
await ctx.error(error_msg)
raise
async def get_cards(ctx: Context, list_id: str) -> List[TrelloCard]:
"""Retrieves all cards in a given list.
Args:
list_id (str): The ID of the list whose cards to retrieve.
Returns:
List[TrelloCard]: A list of card objects.
"""
try:
result = await service.get_cards(list_id)
return result
except Exception as e:
error_msg = f"Failed to get cards: {str(e)}"
await ctx.error(error_msg)
raise
async def create_card(
ctx: Context, list_id: str, name: str, desc: str | None = None
) -> TrelloCard:
"""Creates a new card in a given list.
Args:
list_id (str): The ID of the list to create the card in.
name (str): The name of the new card.
desc (str, optional): The description of the new card. Defaults to None.
Returns:
TrelloCard: The newly created card object.
"""
try:
result = await service.create_card(list_id, name, desc)
return result
except Exception as e:
error_msg = f"Failed to create card: {str(e)}"
await ctx.error(error_msg)
raise
async def update_card(
ctx: Context, card_id: str, payload: UpdateCardPayload
) -> TrelloCard:
"""Updates a card's attributes.
Args:
card_id (str): The ID of the card to update.
**kwargs: Keyword arguments representing the attributes to update on the card.
Returns:
TrelloCard: The updated card object.
"""
try:
result = await service.update_card(
card_id, **payload.model_dump(exclude_unset=True)
)
return result
except Exception as e:
error_msg = f"Failed to update card: {str(e)}"
await ctx.error(error_msg)
raise
async def delete_card(ctx: Context, card_id: str) -> dict:
"""Deletes a card.
Args:
card_id (str): The ID of the card to delete.
Returns:
dict: The response from the delete operation.
"""
try:
result = await service.delete_card(card_id)
return result
except Exception as e:
error_msg = f"Failed to delete card: {str(e)}"
await ctx.error(error_msg)
raise