Skip to main content
Glama
create_plane_issue_v2.py3.02 kB
import json import requests import os def create_plane_issue(params_json: str = "{}") -> str: """ Create a new issue in a Plane project. Args: params_json: A JSON string containing issue details: { "project_id": "uuid-of-project", "name": "Issue title", "description": "Issue description", "priority": "none|low|medium|high|urgent", "state_id": "uuid-of-state", # Optional "assignee_ids": ["user-uuid"], # Optional "label_ids": ["label-uuid"], # Optional "start_date": "YYYY-MM-DD", # Optional "target_date": "YYYY-MM-DD" # Optional } Returns: str: Success message with issue details or error message Example: >>> create_plane_issue('{"project_id": "123", "name": "Bug Fix", "priority": "high"}') "Issue created: Bug Fix (#123)" """ try: # Parse parameters try: params = json.loads(params_json) if params_json else {} except json.JSONDecodeError: return "Error: Invalid JSON parameters" # Validate required parameters if not params.get("project_id"): return "Error: Project ID is required" if not params.get("name"): return "Error: Issue name is required" # Configuration API_KEY = os.environ.get("PLANE_API_KEY", "plane_api_614f7240a5df4177840558c34bddb668") BASE_URL = os.environ.get("PLANE_BASE_URL", "http://192.168.50.90/api/v1") WORKSPACE_SLUG = os.environ.get("PLANE_WORKSPACE_SLUG", "test-space") headers = { "X-API-Key": API_KEY, "Content-Type": "application/json" } # Prepare issue data issue_data = { "name": params["name"], "description": params.get("description", ""), "description_html": f"<p>{params.get('description', '')}</p>", "priority": params.get("priority", "none") } # Add optional fields if provided optional_fields = [ "state_id", "assignee_ids", "label_ids", "start_date", "target_date" ] for field in optional_fields: if params.get(field): issue_data[field] = params[field] url = f"{BASE_URL}/workspaces/{WORKSPACE_SLUG}/projects/{params['project_id']}/issues/" response = requests.post(url, headers=headers, json=issue_data) if response.status_code == 201: result = response.json() return f"Issue created: {result['name']} (#{result['sequence_id']})" return f"Error: API request failed with status code {response.status_code}" except requests.RequestException as e: return f"Error: Network error - {str(e)}" except Exception as e: return f"Error: Unexpected error - {str(e)}"

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/oculairmedia/plane-projectmanagement_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server