freshrelease-mcp


Namefreshrelease-mcp JSON
Version 1.7.5 PyPI version JSON
download
home_pageNone
SummaryAn MCP server for Freshrelease - enables Cursor AI to interact with Freshrelease projects
upload_time2025-09-19 11:34:37
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseNone
keywords ai assistant cursor freshrelease mcp
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Freshrelease MCP Server

[![PyPI version](https://badge.fury.io/py/freshrelease-mcp.svg)](https://badge.fury.io/py/freshrelease-mcp)
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)

An MCP server that enables AI models to interact with Freshrelease through powerful tools for complete project and test management.

## ๐Ÿš€ Key Features

- **๐Ÿค– AI-Native**: Built specifically for AI model integration via MCP protocol
- **๐Ÿ”ง Complete Management**: Projects, tasks, test cases, test runs, and user management  
- **๐Ÿง  Smart Resolution**: Automatically converts names to IDs (users, sprints, projects, etc.)
- **๐Ÿ“‹ Advanced Filtering**: Support for both user-friendly labels and technical field names
- **โšก Performance Optimized**: Built-in caching, connection pooling, and batch processing
- **๐ŸŽฏ Label-Based Filtering**: Use intuitive field names like "Owner" instead of "owner_id"

## ๐Ÿ“Š Tools Overview

| **Category** | **Key Features** |
|-------------|------------------|
| **Core Management** | Projects, tasks, users, and issue types |
| **Test Management** | Test cases, test runs, and execution tracking |  
| **Smart Filtering** | Advanced task and test case filtering |
| **Lookup & Utilities** | Name-to-ID resolution and cache management |

## ๐Ÿ› ๏ธ Available Tools

### **Core Management**
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `fr_get_project` | Get project details | `project_identifier` |
| `fr_create_task` | Create new tasks/issues | `title`, `project_identifier`, `issue_type_name`, `user` |  
| `fr_get_task` | Get task by ID/key | `project_identifier`, `key` |
| `fr_get_all_tasks` | List all project tasks | `project_identifier` |
| `fr_get_issue_type_by_name` | Resolve issue type names | `issue_type_name` |
| `get_task_default_and_custom_fields` | Get form fields for issue types | `issue_type_name` |
| `fr_search_users` | Find users by name/email | `search_text` |

### **Test Management**
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `fr_list_testcases` | List all test cases | `project_identifier` |
| `fr_get_testcase` | Get specific test case | `test_case_key` |
| `fr_get_testcases_by_section` | Get tests by section | `section_name` |
| `fr_link_testcase_issues` | Link tests to issues | `testcase_keys`, `issue_keys` |
| `fr_filter_testcases` | Advanced test filtering | `filter_rules` |
| `fr_add_testcases_to_testrun` | Add tests to run | `test_run_id`, `test_case_keys` |
| `fr_get_testrun_details` | Get test run insights | `test_run_id` |

### **Smart Filtering**  
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `fr_filter_tasks` | Advanced task filtering | `query`, field labels/names |
| `fr_save_filter` | Save reusable filters | `label`, `query_hash` |
| `fr_get_issue_form_fields` | Get issue form schema | `issue_type_id` |
| `fr_get_testcase_form_fields` | Get test form schema | - |
| `fr_get_all_issue_type_form_fields` | Get all form schemas | - |

### **Lookup & Utilities**
| Tool | Purpose | Key Parameters |
|------|---------|----------------|
| `fr_get_sprint_by_name` | Find sprint by name | `sprint_name` |
| `fr_get_release_by_name` | Find release by name | `release_name` |
| `fr_get_tag_by_name` | Find tag by name | `tag_name` |
| `fr_get_current_subproject_sprint` | Get active sub-project sprint | `sub_project_name` |
| `get_subproject_id_by_name` | Resolve sub-project names | `sub_project_name` |
| `fr_clear_filter_cache` | Clear filter cache | - |
| `fr_clear_all_caches` | Clear all caches | - |


## โœจ Smart Features

- **๐Ÿง  Name-to-ID Resolution**: Converts user names, sprint names, issue types, etc. to IDs automatically
- **๐Ÿ“‹ Label-Based Filtering**: Use "Owner" instead of "owner_id", "Status" instead of "status_id"  
- **โšก Performance Optimized**: Multi-level caching, connection pooling, batch processing
- **๐Ÿ”— Flexible Project IDs**: Accept both project keys (`"FS"`) and numeric IDs (`123`)
- **๐ŸŽฏ Custom Field Support**: Auto-detects and handles custom fields with "cf_" prefixing
- **๐Ÿ“Š Multiple Query Formats**: Comma-separated strings or JSON objects

## ๐Ÿš€ Quick Start

### 1. Install
```bash
# Easy install (no Python needed)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Or with Python: uv tool install freshrelease-mcp
```

### 2. Get Credentials
- **API Key**: Freshrelease โ†’ Profile โ†’ API Key
- **Domain**: `company.freshrelease.com` (your domain)
- **Project Key**: e.g., `"FS"`, `"PROJ"` (optional)

### 3. Configure Cursor
Add to `~/.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "freshrelease-mcp": {
      "command": "uvx",
      "args": ["freshrelease-mcp"],
      "env": {
        "FRESHRELEASE_API_KEY": "your_api_key",
        "FRESHRELEASE_DOMAIN": "company.freshrelease.com",
        "FRESHRELEASE_PROJECT_KEY": "FS"
      }
    }
  }
}
```

### 4. Restart Cursor
โœ… You'll see Freshrelease tools available!

## ๐Ÿ’ก Usage Examples

### ๐ŸŽฏ Create & Manage Tasks
**Ask AI to create a bug report:**
> "Create a bug ticket titled 'Fix login issue' in the FS project, assign it to john@example.com, and set the status to In Progress"

The AI will automatically:
- Find your FS project
- Convert "john@example.com" to the correct user ID
- Set the issue type as "Bug"
- Resolve "In Progress" to the proper status ID

**Get project overview:**
> "Show me all tasks in the FS project"

### ๐Ÿ“‹ Advanced Task Filtering  
**Use natural language filtering:**
> "Find all high priority tasks owned by John Doe that are currently in progress"

The AI understands both:
- **Friendly labels**: "Owner", "Status", "Priority" 
- **Technical names**: "owner_id", "status_id", "priority_id"

**Sprint-based filtering:**
> "Show me all bugs in Sprint 1"

### ๐Ÿงช Test Case Management
**Filter test cases naturally:**
> "Find all high and medium severity functional tests in the Authentication section"

**Get test run insights:**
> "How is test run 150183 performing?"

**Response example:**
*"Test run has 8 total tests, all 8 passed successfully. Great job!"*

## ๐Ÿ”ง Troubleshooting

**Not seeing tools in Cursor?**
1. Check `~/.cursor/mcp.json` is valid JSON
2. Restart Cursor completely
3. Verify credentials: `uvx freshrelease-mcp --help`

**Environment Variables:**
```bash
FRESHRELEASE_API_KEY="your_api_key"      # Required
FRESHRELEASE_DOMAIN="company.freshrelease.com"  # Required  
FRESHRELEASE_PROJECT_KEY="FS"            # Optional default project
```

## ๐Ÿ“„ License

MIT License - see LICENSE file for details.

---

โญ **Like this project?** Give it a star on GitHub!  
๐Ÿ› **Found a bug?** [Open an issue](../../issues)  
๐Ÿ’ก **Have ideas?** [Start a discussion](../../discussions)


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "freshrelease-mcp",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "ai, assistant, cursor, freshrelease, mcp",
    "author": null,
    "author_email": "Kalidass mani <kalidass.mani@freshworks.com>",
    "download_url": "https://files.pythonhosted.org/packages/4d/d9/c50a2c41d0e901af0c10dbd4f43322df113aa4160a89aabe46db2cc32eb9/freshrelease_mcp-1.7.5.tar.gz",
    "platform": null,
    "description": "# Freshrelease MCP Server\n\n[![PyPI version](https://badge.fury.io/py/freshrelease-mcp.svg)](https://badge.fury.io/py/freshrelease-mcp)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n\nAn MCP server that enables AI models to interact with Freshrelease through powerful tools for complete project and test management.\n\n## \ud83d\ude80 Key Features\n\n- **\ud83e\udd16 AI-Native**: Built specifically for AI model integration via MCP protocol\n- **\ud83d\udd27 Complete Management**: Projects, tasks, test cases, test runs, and user management  \n- **\ud83e\udde0 Smart Resolution**: Automatically converts names to IDs (users, sprints, projects, etc.)\n- **\ud83d\udccb Advanced Filtering**: Support for both user-friendly labels and technical field names\n- **\u26a1 Performance Optimized**: Built-in caching, connection pooling, and batch processing\n- **\ud83c\udfaf Label-Based Filtering**: Use intuitive field names like \"Owner\" instead of \"owner_id\"\n\n## \ud83d\udcca Tools Overview\n\n| **Category** | **Key Features** |\n|-------------|------------------|\n| **Core Management** | Projects, tasks, users, and issue types |\n| **Test Management** | Test cases, test runs, and execution tracking |  \n| **Smart Filtering** | Advanced task and test case filtering |\n| **Lookup & Utilities** | Name-to-ID resolution and cache management |\n\n## \ud83d\udee0\ufe0f Available Tools\n\n### **Core Management**\n| Tool | Purpose | Key Parameters |\n|------|---------|----------------|\n| `fr_get_project` | Get project details | `project_identifier` |\n| `fr_create_task` | Create new tasks/issues | `title`, `project_identifier`, `issue_type_name`, `user` |  \n| `fr_get_task` | Get task by ID/key | `project_identifier`, `key` |\n| `fr_get_all_tasks` | List all project tasks | `project_identifier` |\n| `fr_get_issue_type_by_name` | Resolve issue type names | `issue_type_name` |\n| `get_task_default_and_custom_fields` | Get form fields for issue types | `issue_type_name` |\n| `fr_search_users` | Find users by name/email | `search_text` |\n\n### **Test Management**\n| Tool | Purpose | Key Parameters |\n|------|---------|----------------|\n| `fr_list_testcases` | List all test cases | `project_identifier` |\n| `fr_get_testcase` | Get specific test case | `test_case_key` |\n| `fr_get_testcases_by_section` | Get tests by section | `section_name` |\n| `fr_link_testcase_issues` | Link tests to issues | `testcase_keys`, `issue_keys` |\n| `fr_filter_testcases` | Advanced test filtering | `filter_rules` |\n| `fr_add_testcases_to_testrun` | Add tests to run | `test_run_id`, `test_case_keys` |\n| `fr_get_testrun_details` | Get test run insights | `test_run_id` |\n\n### **Smart Filtering**  \n| Tool | Purpose | Key Parameters |\n|------|---------|----------------|\n| `fr_filter_tasks` | Advanced task filtering | `query`, field labels/names |\n| `fr_save_filter` | Save reusable filters | `label`, `query_hash` |\n| `fr_get_issue_form_fields` | Get issue form schema | `issue_type_id` |\n| `fr_get_testcase_form_fields` | Get test form schema | - |\n| `fr_get_all_issue_type_form_fields` | Get all form schemas | - |\n\n### **Lookup & Utilities**\n| Tool | Purpose | Key Parameters |\n|------|---------|----------------|\n| `fr_get_sprint_by_name` | Find sprint by name | `sprint_name` |\n| `fr_get_release_by_name` | Find release by name | `release_name` |\n| `fr_get_tag_by_name` | Find tag by name | `tag_name` |\n| `fr_get_current_subproject_sprint` | Get active sub-project sprint | `sub_project_name` |\n| `get_subproject_id_by_name` | Resolve sub-project names | `sub_project_name` |\n| `fr_clear_filter_cache` | Clear filter cache | - |\n| `fr_clear_all_caches` | Clear all caches | - |\n\n\n## \u2728 Smart Features\n\n- **\ud83e\udde0 Name-to-ID Resolution**: Converts user names, sprint names, issue types, etc. to IDs automatically\n- **\ud83d\udccb Label-Based Filtering**: Use \"Owner\" instead of \"owner_id\", \"Status\" instead of \"status_id\"  \n- **\u26a1 Performance Optimized**: Multi-level caching, connection pooling, batch processing\n- **\ud83d\udd17 Flexible Project IDs**: Accept both project keys (`\"FS\"`) and numeric IDs (`123`)\n- **\ud83c\udfaf Custom Field Support**: Auto-detects and handles custom fields with \"cf_\" prefixing\n- **\ud83d\udcca Multiple Query Formats**: Comma-separated strings or JSON objects\n\n## \ud83d\ude80 Quick Start\n\n### 1. Install\n```bash\n# Easy install (no Python needed)\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n# Or with Python: uv tool install freshrelease-mcp\n```\n\n### 2. Get Credentials\n- **API Key**: Freshrelease \u2192 Profile \u2192 API Key\n- **Domain**: `company.freshrelease.com` (your domain)\n- **Project Key**: e.g., `\"FS\"`, `\"PROJ\"` (optional)\n\n### 3. Configure Cursor\nAdd to `~/.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"freshrelease-mcp\": {\n      \"command\": \"uvx\",\n      \"args\": [\"freshrelease-mcp\"],\n      \"env\": {\n        \"FRESHRELEASE_API_KEY\": \"your_api_key\",\n        \"FRESHRELEASE_DOMAIN\": \"company.freshrelease.com\",\n        \"FRESHRELEASE_PROJECT_KEY\": \"FS\"\n      }\n    }\n  }\n}\n```\n\n### 4. Restart Cursor\n\u2705 You'll see Freshrelease tools available!\n\n## \ud83d\udca1 Usage Examples\n\n### \ud83c\udfaf Create & Manage Tasks\n**Ask AI to create a bug report:**\n> \"Create a bug ticket titled 'Fix login issue' in the FS project, assign it to john@example.com, and set the status to In Progress\"\n\nThe AI will automatically:\n- Find your FS project\n- Convert \"john@example.com\" to the correct user ID\n- Set the issue type as \"Bug\"\n- Resolve \"In Progress\" to the proper status ID\n\n**Get project overview:**\n> \"Show me all tasks in the FS project\"\n\n### \ud83d\udccb Advanced Task Filtering  \n**Use natural language filtering:**\n> \"Find all high priority tasks owned by John Doe that are currently in progress\"\n\nThe AI understands both:\n- **Friendly labels**: \"Owner\", \"Status\", \"Priority\" \n- **Technical names**: \"owner_id\", \"status_id\", \"priority_id\"\n\n**Sprint-based filtering:**\n> \"Show me all bugs in Sprint 1\"\n\n### \ud83e\uddea Test Case Management\n**Filter test cases naturally:**\n> \"Find all high and medium severity functional tests in the Authentication section\"\n\n**Get test run insights:**\n> \"How is test run 150183 performing?\"\n\n**Response example:**\n*\"Test run has 8 total tests, all 8 passed successfully. Great job!\"*\n\n## \ud83d\udd27 Troubleshooting\n\n**Not seeing tools in Cursor?**\n1. Check `~/.cursor/mcp.json` is valid JSON\n2. Restart Cursor completely\n3. Verify credentials: `uvx freshrelease-mcp --help`\n\n**Environment Variables:**\n```bash\nFRESHRELEASE_API_KEY=\"your_api_key\"      # Required\nFRESHRELEASE_DOMAIN=\"company.freshrelease.com\"  # Required  \nFRESHRELEASE_PROJECT_KEY=\"FS\"            # Optional default project\n```\n\n## \ud83d\udcc4 License\n\nMIT License - see LICENSE file for details.\n\n---\n\n\u2b50 **Like this project?** Give it a star on GitHub!  \n\ud83d\udc1b **Found a bug?** [Open an issue](../../issues)  \n\ud83d\udca1 **Have ideas?** [Start a discussion](../../discussions)\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "An MCP server for Freshrelease - enables Cursor AI to interact with Freshrelease projects",
    "version": "1.7.5",
    "project_urls": null,
    "split_keywords": [
        "ai",
        " assistant",
        " cursor",
        " freshrelease",
        " mcp"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f934736cb6829a43dfedce2f5ef8fcc4f6ce3758597521d1fd2e57bb4ffee95a",
                "md5": "15751aeaa550784a4d4e654a6cb133d0",
                "sha256": "80943aa65c1df6aab1692eb3096182f3d73d5109797d24ccc61fda974e2d1953"
            },
            "downloads": -1,
            "filename": "freshrelease_mcp-1.7.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "15751aeaa550784a4d4e654a6cb133d0",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 24481,
            "upload_time": "2025-09-19T11:34:35",
            "upload_time_iso_8601": "2025-09-19T11:34:35.424119Z",
            "url": "https://files.pythonhosted.org/packages/f9/34/736cb6829a43dfedce2f5ef8fcc4f6ce3758597521d1fd2e57bb4ffee95a/freshrelease_mcp-1.7.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4dd9c50a2c41d0e901af0c10dbd4f43322df113aa4160a89aabe46db2cc32eb9",
                "md5": "73196048416d6ae904d2d50288f4d6a0",
                "sha256": "c1c0636084e392827318e6dee60e07da5066e86dc7bbe3a329d647268d875e55"
            },
            "downloads": -1,
            "filename": "freshrelease_mcp-1.7.5.tar.gz",
            "has_sig": false,
            "md5_digest": "73196048416d6ae904d2d50288f4d6a0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 64328,
            "upload_time": "2025-09-19T11:34:37",
            "upload_time_iso_8601": "2025-09-19T11:34:37.240915Z",
            "url": "https://files.pythonhosted.org/packages/4d/d9/c50a2c41d0e901af0c10dbd4f43322df113aa4160a89aabe46db2cc32eb9/freshrelease_mcp-1.7.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-09-19 11:34:37",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "freshrelease-mcp"
}
        
Elapsed time: 1.33292s