retrieve_work_item_activity
Retrieve a specific activity from a work item using project, work item, and activity IDs.
Instructions
Retrieve a specific activity for a work item.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | UUID of the project | |
| work_item_id | Yes | UUID of the work item | |
| activity_id | Yes | UUID of the activity |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| created_at | No | ||
| updated_at | No | ||
| deleted_at | No | ||
| verb | No | ||
| field | No | ||
| old_value | No | ||
| new_value | No | ||
| comment | No | ||
| attachments | No | ||
| old_identifier | No | ||
| new_identifier | No | ||
| epoch | No | ||
| project | Yes | ||
| workspace | Yes | ||
| issue | No | ||
| issue_comment | No | ||
| actor | No |
Implementation Reference
- The main handler function for the 'retrieve_work_item_activity' tool. It accepts project_id, work_item_id, and activity_id, then calls the Plane client's work_items.activities.retrieve() method with workspace context.
def retrieve_work_item_activity( project_id: str, work_item_id: str, activity_id: str, ) -> WorkItemActivity: """ Retrieve a specific activity for a work item. Args: project_id: UUID of the project work_item_id: UUID of the work item activity_id: UUID of the activity Returns: WorkItemActivity object """ client, workspace_slug = get_plane_client_context() return client.work_items.activities.retrieve( workspace_slug=workspace_slug, project_id=project_id, work_item_id=work_item_id, activity_id=activity_id, ) - plane_mcp/tools/work_item_activities.py:14-15 (registration)The registration function that uses @mcp.tool() decorator to register retrieve_work_item_activity as an MCP tool.
def register_work_item_activity_tools(mcp: FastMCP) -> None: """Register all work item activity-related tools with the MCP server.""" - The function signature defines the input schema: project_id (str), work_item_id (str), activity_id (str). Return type is WorkItemActivity from plane.models.
def retrieve_work_item_activity( project_id: str, work_item_id: str, activity_id: str, ) -> WorkItemActivity: - plane_mcp/tools/__init__.py:27-31 (registration)Top-level registration: register_work_item_activity_tools(mcp) is called in the register_tools function to include all work item activity tools.
def register_tools(mcp: FastMCP) -> None: """Register all tools with the MCP server.""" register_project_tools(mcp) register_work_item_tools(mcp) register_work_item_activity_tools(mcp) - plane_mcp/client.py:21-74 (helper)Helper function get_plane_client_context() used by the handler to obtain the authenticated PlaneClient instance and workspace slug.
def get_plane_client_context() -> PlaneClientContext: """ Initialize and return a PlaneClient instance with workspace context. Authentication is handled by the PlaneOAuthProvider, which supports: 1. Environment variables (PLANE_API_KEY + PLANE_WORKSPACE_SLUG) 2. HTTP headers (x-api-key + x-workspace-slug) 3. OAuth access token Environment variables: - PLANE_INTERNAL_BASE_URL: Internal URL for Plane API (preferred for server-to-server calls) - PLANE_BASE_URL: Base URL for Plane API (fallback, default: https://api.plane.so) Returns: PlaneClientContext containing configured PlaneClient instance and workspace slug Raises: ConfigurationError: If access token is not available or workspace slug is missing """ base_url = os.getenv("PLANE_INTERNAL_BASE_URL") or os.getenv("PLANE_BASE_URL", "https://api.plane.so") workspace_slug = os.getenv("PLANE_WORKSPACE_SLUG", "") api_key = os.getenv("PLANE_API_KEY", "") access_token = None # Get access token from the OAuth provider (which handles all auth methods) stored_access_token: AccessToken | None = get_access_token() if stored_access_token: # Determine authentication method to use appropriate PlaneClient constructor auth_method = stored_access_token.claims.get("auth_method", "oauth") token = stored_access_token.token workspace_slug = stored_access_token.claims.get("workspace_slug", "") # For API key auth methods, use api_key parameter; for OAuth, use access_token if auth_method in ("api_key_env", "api_key_header"): api_key = token else: access_token = token if access_token: client = PlaneClient( base_url=base_url, access_token=access_token, ) else: client = PlaneClient( base_url=base_url, api_key=api_key, ) return PlaneClientContext( client=client, workspace_slug=workspace_slug, )