An open API service indexing awesome lists of open source software.

https://github.com/cdmx-in/goodday-mcp


https://github.com/cdmx-in/goodday-mcp

Last synced: 2 months ago
JSON representation

Awesome Lists containing this project

README

          

# Goodday MCP Server

A Model Context Protocol (MCP) server for integrating with Goodday project management platform. This server provides tools for managing projects, tasks, and users through the Goodday API v2.

## Features

### Project Management
- **get_projects**: Retrieve list of projects (with options for archived and root-only filtering)
- **get_project**: Get detailed information about a specific project
- **create_project**: Create new projects with customizable templates and settings
- **get_project_users**: Get users associated with a specific project

### Task Management
- **get_project_tasks**: Retrieve tasks from specific projects (with options for closed tasks and subfolders)
- **get_user_assigned_tasks**: Get tasks assigned to a specific user
- **get_user_action_required_tasks**: Get action-required tasks for a user
- **get_task**: Get detailed information about a specific task
- **create_task**: Create new tasks with full customization (subtasks, assignments, dates, priorities)
- **update_task_status**: Update task status with optional comments
- **add_task_comment**: Add comments to tasks

### User Management
- **get_users**: Retrieve list of organization users
- **get_user**: Get detailed information about a specific user

## OpenWebUI Integration

This package also includes an OpenWebUI tool that provides a complete interface for Goodday project management directly in chat interfaces. The OpenWebUI tool includes:

### Features
- **Project Management**: Get projects and project tasks
- **Sprint Management**: Get tasks from specific sprints by name/number
- **User Management**: Get tasks assigned to specific users
- **Smart Query**: Natural language interface for common requests
- **Search**: Semantic search across tasks using VectorDB backend
- **Task Details**: Get detailed task information and messages

### Setup
1. Copy `openwebui/goodday_openwebui_complete_tool.py` to your OpenWebUI tools directory
2. Configure the valves with your API credentials:
- `api_key`: Your Goodday API token
- `search_url`: Your VectorDB search endpoint (optional)
- `bearer_token`: Bearer token for search API (optional)

### Vector Database Setup (Optional)
For semantic search functionality, you can set up a vector database using the provided n8n workflow (`openwebui/n8n-workflow-goodday-vectordb.json`). This workflow:
- Fetches all Goodday projects and tasks
- Extracts task messages and content
- Creates embeddings using Ollama
- Stores in Qdrant vector database
- Provides search API endpoint

See `openwebui/OPENWEBUI_TOOL_README.md` for detailed usage instructions.

## Installation

### From PyPI (Recommended)

```bash
pip install goodday-mcp
```

### From Source

#### Prerequisites
- Python 3.10 or higher
- UV package manager (recommended) or pip
- Goodday API token

#### Setup with UV

1. **Install UV** (if not already installed):
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```

2. **Clone and set up the project**:
```bash
git clone https://github.com/cdmx1/goodday-mcp.git
cd goodday-mcp

# Create virtual environment and install dependencies
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv sync
```

#### Setup with pip

```bash
git clone https://github.com/cdmx1/goodday-mcp.git
cd goodday-mcp
pip install -e .
```

### Configuration

1. **Set up environment variables**:
Create a `.env` file in your project root or export the variable:
```bash
export GOODDAY_API_TOKEN=your_goodday_api_token_here
```

To get your Goodday API token:
- Go to your Goodday organization
- Navigate to Settings → API
- Click the generate button to create a new token

## Usage

### Running the Server Standalone

If installed from PyPI:
```bash
goodday-mcp
```

If running from source with UV:
```bash
uv run goodday-mcp
```

### Using with Claude Desktop

1. **Configure Claude Desktop** by editing your configuration file:
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

2. **Add the server configuration**:

**Option A: If installed from PyPI:**
```json
{
"mcpServers": {
"goodday": {
"command": "goodday-mcp",
"env": {
"GOODDAY_API_TOKEN": "your_goodday_api_token_here"
}
}
}
}
```

**Option B: If running from source:**
```json
{
"mcpServers": {
"goodday": {
"command": "uv",
"args": ["run", "goodday-mcp"],
"env": {
"GOODDAY_API_TOKEN": "your_goodday_api_token_here"
}
}
}
}
```

3. **Restart Claude Desktop** to load the new server.

### Using with Other MCP Clients

The server communicates via stdio transport and can be integrated with any MCP-compatible client. Refer to the [MCP documentation](https://modelcontextprotocol.io/) for client-specific integration instructions.

## API Reference

### Environment Variables

| Variable | Description | Required |
|----------|-------------|----------|
| `GOODDAY_API_TOKEN` | Your Goodday API token | Yes |

### Tool Examples

#### Get Projects
```python
# Get all active projects
get_projects()

# Get archived projects
get_projects(archived=True)

# Get only root-level projects
get_projects(root_only=True)
```

#### Create a Task
```python
create_task(
project_id="project_123",
title="Implement new feature",
from_user_id="user_456",
message="Detailed description of the task",
to_user_id="user_789",
deadline="2025-06-30",
priority=5
)
```

#### Update Task Status
```python
update_task_status(
task_id="task_123",
user_id="user_456",
status_id="status_completed",
message="Task completed successfully"
)
```

## Data Formats

### Date Format
All dates should be provided in `YYYY-MM-DD` format (e.g., `2025-06-16`).

### Priority Levels
- 1-10: Normal priority levels
- 50: Blocker
- 100: Emergency

### Project Colors
Project colors are specified as integers from 1-24, corresponding to Goodday's color palette.

## Error Handling

The server includes comprehensive error handling:
- **Authentication errors**: When API token is missing or invalid
- **Network errors**: When Goodday API is unreachable
- **Validation errors**: When required parameters are missing
- **Permission errors**: When user lacks permissions for requested operations

All errors are returned as descriptive strings to help with troubleshooting.

## Development

### Project Structure
```
goodday-mcp/
├── goodday_mcp/ # Main package directory
│ ├── __init__.py # Package initialization
│ └── main.py # Main MCP server implementation
├── pyproject.toml # Project configuration and dependencies
├── README.md # This file
├── LICENSE # MIT license
├── uv.lock # Dependency lock file
└── .env # Environment variables (create this)
```

### Adding New Tools

To add new tools to the server:

1. **Add the tool function** in `goodday_mcp/main.py` using the `@mcp.tool()` decorator:
```python
@mcp.tool()
async def your_new_tool(param1: str, param2: Optional[int] = None) -> str:
"""Description of what the tool does.

Args:
param1: Description of parameter 1
param2: Description of optional parameter 2
"""
# Implementation here
return "Result"
```

2. **Test the tool** by running the server and testing with an MCP client.

### Testing

Test the server by running it directly:
```bash
# If installed from PyPI
goodday-mcp

# If running from source
uv run goodday-mcp
```

The server will start and wait for MCP protocol messages via stdin/stdout.

## Contributing

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request

## License

This project is licensed under the MIT License - see the LICENSE file for details.

## Support

For issues related to:
- **MCP Server**: Create an issue in this repository
- **Goodday API**: Refer to [Goodday API documentation](https://www.goodday.work/developers/api-v2)
- **MCP Protocol**: Refer to [MCP documentation](https://modelcontextprotocol.io/)

## Changelog

### v1.0.0
- Initial release
- Full project management capabilities
- Task management with comments and status updates
- User management
- Comprehensive error handling
- UV support with modern Python packaging