fan-manager


Namefan-manager JSON
Version 1.0.9 PyPI version JSON
download
home_pageNone
SummaryManager your Dell PowerEdge Fan Speed with this handy tool and MCP Server!
upload_time2025-10-29 02:43:52
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Fan-Manager

![PyPI - Version](https://img.shields.io/pypi/v/fan-manager)
![PyPI - Downloads](https://img.shields.io/pypi/dd/fan-manager)
![GitHub Repo stars](https://img.shields.io/github/stars/Knuckles-Team/fan-manager)
![GitHub forks](https://img.shields.io/github/forks/Knuckles-Team/fan-manager)
![GitHub contributors](https://img.shields.io/github/contributors/Knuckles-Team/fan-manager)
![PyPI - License](https://img.shields.io/pypi/l/fan-manager)
![GitHub](https://img.shields.io/github/license/Knuckles-Team/fan-manager)

![GitHub last commit (by committer)](https://img.shields.io/github/last-commit/Knuckles-Team/fan-manager)
![GitHub pull requests](https://img.shields.io/github/issues-pr/Knuckles-Team/fan-manager)
![GitHub closed pull requests](https://img.shields.io/github/issues-pr-closed/Knuckles-Team/fan-manager)
![GitHub issues](https://img.shields.io/github/issues/Knuckles-Team/fan-manager)

![GitHub top language](https://img.shields.io/github/languages/top/Knuckles-Team/fan-manager)
![GitHub language count](https://img.shields.io/github/languages/count/Knuckles-Team/fan-manager)
![GitHub repo size](https://img.shields.io/github/repo-size/Knuckles-Team/fan-manager)
![GitHub repo file count (file type)](https://img.shields.io/github/directory-file-count/Knuckles-Team/fan-manager)
![PyPI - Wheel](https://img.shields.io/pypi/wheel/fan-manager)
![PyPI - Implementation](https://img.shields.io/pypi/implementation/fan-manager)

*Version: 1.0.9*

Manager your Dell PowerEdge Fan Speed with this handy tool!

MCP Server for Agentic AI! Get started with Pip or Docker as well

This repository is actively maintained - Contributions are welcome!

Contribution Opportunities:
- Increase support of Dell PowerEdge Devices
- Support Non-PowerEdge Devices
- Support Non-Dell Devices

<details>
  <summary><b>Usage:</b></summary>

### CLI
| Short Flag | Long Flag   | Description                                            |
|------------|-------------|--------------------------------------------------------|
| -h         | --help      | See usage for fan-manager                              |
| -i         | --intensity | Intensity of Fan Speed - Scales Logarithmically (0-10) |
| -c         | --cold      | Minimum Temperature for Fan Speed                      |
| -w         | --warm      | Maximum Temperature for Fan Speed                      |
| -s         | --slow      | Minimum Fan Speed                                      |
| -f         | --fast      | Maximum Fan Speed                                      |
| -p         | --poll-rate | Poll Rate for CPU Temperature in Seconds               |

```bash
fan-manager --intensity 5 --cold 50 --warm 80 --slow 5 --fast 100 --poll-rate 24
```

### MCP CLI

| Short Flag | Long Flag                          | Description                                                                 |
|------------|------------------------------------|-----------------------------------------------------------------------------|
| -h         | --help                             | Display help information                                                    |
| -t         | --transport                        | Transport method: 'stdio', 'http', or 'sse' [legacy] (default: stdio)       |
| -s         | --host                             | Host address for HTTP transport (default: 0.0.0.0)                          |
| -p         | --port                             | Port number for HTTP transport (default: 8000)                              |
|            | --auth-type                        | Authentication type: 'none', 'static', 'jwt', 'oauth-proxy', 'oidc-proxy', 'remote-oauth' (default: none) |
|            | --token-jwks-uri                   | JWKS URI for JWT verification                                              |
|            | --token-issuer                     | Issuer for JWT verification                                                |
|            | --token-audience                   | Audience for JWT verification                                              |
|            | --oauth-upstream-auth-endpoint     | Upstream authorization endpoint for OAuth Proxy                             |
|            | --oauth-upstream-token-endpoint    | Upstream token endpoint for OAuth Proxy                                    |
|            | --oauth-upstream-client-id         | Upstream client ID for OAuth Proxy                                         |
|            | --oauth-upstream-client-secret     | Upstream client secret for OAuth Proxy                                     |
|            | --oauth-base-url                   | Base URL for OAuth Proxy                                                   |
|            | --oidc-config-url                  | OIDC configuration URL                                                     |
|            | --oidc-client-id                   | OIDC client ID                                                             |
|            | --oidc-client-secret               | OIDC client secret                                                         |
|            | --oidc-base-url                    | Base URL for OIDC Proxy                                                    |
|            | --remote-auth-servers              | Comma-separated list of authorization servers for Remote OAuth             |
|            | --remote-base-url                  | Base URL for Remote OAuth                                                  |
|            | --allowed-client-redirect-uris     | Comma-separated list of allowed client redirect URIs                       |
|            | --eunomia-type                     | Eunomia authorization type: 'none', 'embedded', 'remote' (default: none)   |
|            | --eunomia-policy-file              | Policy file for embedded Eunomia (default: mcp_policies.json)              |
|            | --eunomia-remote-url               | URL for remote Eunomia server                                              |

### Using as an MCP Server

The MCP Server can be run in two modes: `stdio` (for local testing) or `http` (for networked access). To start the server, use the following commands:

#### Run in stdio mode (default):
```bash
fan-manager-mcp --transport "stdio"
```

#### Run in HTTP mode:
```bash
fan-manager-mcp --transport "http"  --host "0.0.0.0"  --port "8000"
```

Docker Compose

Fan Manager
```docker-compose
---
services:
  fan-manager:
    image: knucklessg1/fan-manager:latest
    container_name: server_fan_speed
    privileged: true
    environment:
      MODE: "fan-manager"
      INTENSITY: ${INTENSITY}
      COLD: ${COLD}
      WARM: ${WARM}
      SLOW: ${SLOW}
      FAST: ${FAST}
      POLL_RATE: ${POLL_RATE}
    volumes:
      - /dev/ipmi0:/dev/ipmi0
    restart: unless-stopped
```

Fan Manager MCP Server
```docker-compose
---
services:
  fan-manager-mcp:
    image: knucklessg1/fan-manager:latest
    container_name: server_fan_speed
    privileged: true
    environment:
      MODE: "fan-manager-mcp"
      HOST: 0.0.0.0
      PORT: 8030
      TRANSPORT: "http"
    volumes:
      - /dev/ipmi0:/dev/ipmi0
    restart: unless-stopped
```

Docker Run
```bash
docker run -it -d knucklessg1/fan-manager:latest fan-manager
```

Docker Compose
```bash
docker-compose up --build -d
```

#### Configure `mcp.json` for AI Integration

```json
{
  "mcpServers": {
    "fan-manager": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "fan-manager",
        "fan-manager-mcp"
      ],
      "timeout": 200000
    }
  }
}
```

</details>

<details>
  <summary><b>Installation Instructions:</b></summary>

Install Python Package

```bash
python -m pip install fan-manager
```

</details>

<details>
  <summary><b>Repository Owners:</b></summary>


<img width="100%" height="180em" src="https://github-readme-stats.vercel.app/api?username=Knucklessg1&show_icons=true&hide_border=true&&count_private=true&include_all_commits=true" />

![GitHub followers](https://img.shields.io/github/followers/Knucklessg1)
![GitHub User's stars](https://img.shields.io/github/stars/Knucklessg1)
</details>

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "fan-manager",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": null,
    "author": null,
    "author_email": "Audel Rouhi <knucklessg1@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/f9/35/ddb46b6ee63ff076b6573b2fae83aec61e388b6cd9c596c1e1dbadff0611/fan_manager-1.0.9.tar.gz",
    "platform": null,
    "description": "# Fan-Manager\n\n![PyPI - Version](https://img.shields.io/pypi/v/fan-manager)\n![PyPI - Downloads](https://img.shields.io/pypi/dd/fan-manager)\n![GitHub Repo stars](https://img.shields.io/github/stars/Knuckles-Team/fan-manager)\n![GitHub forks](https://img.shields.io/github/forks/Knuckles-Team/fan-manager)\n![GitHub contributors](https://img.shields.io/github/contributors/Knuckles-Team/fan-manager)\n![PyPI - License](https://img.shields.io/pypi/l/fan-manager)\n![GitHub](https://img.shields.io/github/license/Knuckles-Team/fan-manager)\n\n![GitHub last commit (by committer)](https://img.shields.io/github/last-commit/Knuckles-Team/fan-manager)\n![GitHub pull requests](https://img.shields.io/github/issues-pr/Knuckles-Team/fan-manager)\n![GitHub closed pull requests](https://img.shields.io/github/issues-pr-closed/Knuckles-Team/fan-manager)\n![GitHub issues](https://img.shields.io/github/issues/Knuckles-Team/fan-manager)\n\n![GitHub top language](https://img.shields.io/github/languages/top/Knuckles-Team/fan-manager)\n![GitHub language count](https://img.shields.io/github/languages/count/Knuckles-Team/fan-manager)\n![GitHub repo size](https://img.shields.io/github/repo-size/Knuckles-Team/fan-manager)\n![GitHub repo file count (file type)](https://img.shields.io/github/directory-file-count/Knuckles-Team/fan-manager)\n![PyPI - Wheel](https://img.shields.io/pypi/wheel/fan-manager)\n![PyPI - Implementation](https://img.shields.io/pypi/implementation/fan-manager)\n\n*Version: 1.0.9*\n\nManager your Dell PowerEdge Fan Speed with this handy tool!\n\nMCP Server for Agentic AI! Get started with Pip or Docker as well\n\nThis repository is actively maintained - Contributions are welcome!\n\nContribution Opportunities:\n- Increase support of Dell PowerEdge Devices\n- Support Non-PowerEdge Devices\n- Support Non-Dell Devices\n\n<details>\n  <summary><b>Usage:</b></summary>\n\n### CLI\n| Short Flag | Long Flag   | Description                                            |\n|------------|-------------|--------------------------------------------------------|\n| -h         | --help      | See usage for fan-manager                              |\n| -i         | --intensity | Intensity of Fan Speed - Scales Logarithmically (0-10) |\n| -c         | --cold      | Minimum Temperature for Fan Speed                      |\n| -w         | --warm      | Maximum Temperature for Fan Speed                      |\n| -s         | --slow      | Minimum Fan Speed                                      |\n| -f         | --fast      | Maximum Fan Speed                                      |\n| -p         | --poll-rate | Poll Rate for CPU Temperature in Seconds               |\n\n```bash\nfan-manager --intensity 5 --cold 50 --warm 80 --slow 5 --fast 100 --poll-rate 24\n```\n\n### MCP CLI\n\n| Short Flag | Long Flag                          | Description                                                                 |\n|------------|------------------------------------|-----------------------------------------------------------------------------|\n| -h         | --help                             | Display help information                                                    |\n| -t         | --transport                        | Transport method: 'stdio', 'http', or 'sse' [legacy] (default: stdio)       |\n| -s         | --host                             | Host address for HTTP transport (default: 0.0.0.0)                          |\n| -p         | --port                             | Port number for HTTP transport (default: 8000)                              |\n|            | --auth-type                        | Authentication type: 'none', 'static', 'jwt', 'oauth-proxy', 'oidc-proxy', 'remote-oauth' (default: none) |\n|            | --token-jwks-uri                   | JWKS URI for JWT verification                                              |\n|            | --token-issuer                     | Issuer for JWT verification                                                |\n|            | --token-audience                   | Audience for JWT verification                                              |\n|            | --oauth-upstream-auth-endpoint     | Upstream authorization endpoint for OAuth Proxy                             |\n|            | --oauth-upstream-token-endpoint    | Upstream token endpoint for OAuth Proxy                                    |\n|            | --oauth-upstream-client-id         | Upstream client ID for OAuth Proxy                                         |\n|            | --oauth-upstream-client-secret     | Upstream client secret for OAuth Proxy                                     |\n|            | --oauth-base-url                   | Base URL for OAuth Proxy                                                   |\n|            | --oidc-config-url                  | OIDC configuration URL                                                     |\n|            | --oidc-client-id                   | OIDC client ID                                                             |\n|            | --oidc-client-secret               | OIDC client secret                                                         |\n|            | --oidc-base-url                    | Base URL for OIDC Proxy                                                    |\n|            | --remote-auth-servers              | Comma-separated list of authorization servers for Remote OAuth             |\n|            | --remote-base-url                  | Base URL for Remote OAuth                                                  |\n|            | --allowed-client-redirect-uris     | Comma-separated list of allowed client redirect URIs                       |\n|            | --eunomia-type                     | Eunomia authorization type: 'none', 'embedded', 'remote' (default: none)   |\n|            | --eunomia-policy-file              | Policy file for embedded Eunomia (default: mcp_policies.json)              |\n|            | --eunomia-remote-url               | URL for remote Eunomia server                                              |\n\n### Using as an MCP Server\n\nThe MCP Server can be run in two modes: `stdio` (for local testing) or `http` (for networked access). To start the server, use the following commands:\n\n#### Run in stdio mode (default):\n```bash\nfan-manager-mcp --transport \"stdio\"\n```\n\n#### Run in HTTP mode:\n```bash\nfan-manager-mcp --transport \"http\"  --host \"0.0.0.0\"  --port \"8000\"\n```\n\nDocker Compose\n\nFan Manager\n```docker-compose\n---\nservices:\n  fan-manager:\n    image: knucklessg1/fan-manager:latest\n    container_name: server_fan_speed\n    privileged: true\n    environment:\n      MODE: \"fan-manager\"\n      INTENSITY: ${INTENSITY}\n      COLD: ${COLD}\n      WARM: ${WARM}\n      SLOW: ${SLOW}\n      FAST: ${FAST}\n      POLL_RATE: ${POLL_RATE}\n    volumes:\n      - /dev/ipmi0:/dev/ipmi0\n    restart: unless-stopped\n```\n\nFan Manager MCP Server\n```docker-compose\n---\nservices:\n  fan-manager-mcp:\n    image: knucklessg1/fan-manager:latest\n    container_name: server_fan_speed\n    privileged: true\n    environment:\n      MODE: \"fan-manager-mcp\"\n      HOST: 0.0.0.0\n      PORT: 8030\n      TRANSPORT: \"http\"\n    volumes:\n      - /dev/ipmi0:/dev/ipmi0\n    restart: unless-stopped\n```\n\nDocker Run\n```bash\ndocker run -it -d knucklessg1/fan-manager:latest fan-manager\n```\n\nDocker Compose\n```bash\ndocker-compose up --build -d\n```\n\n#### Configure `mcp.json` for AI Integration\n\n```json\n{\n  \"mcpServers\": {\n    \"fan-manager\": {\n      \"command\": \"uv\",\n      \"args\": [\n        \"run\",\n        \"--with\",\n        \"fan-manager\",\n        \"fan-manager-mcp\"\n      ],\n      \"timeout\": 200000\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary><b>Installation Instructions:</b></summary>\n\nInstall Python Package\n\n```bash\npython -m pip install fan-manager\n```\n\n</details>\n\n<details>\n  <summary><b>Repository Owners:</b></summary>\n\n\n<img width=\"100%\" height=\"180em\" src=\"https://github-readme-stats.vercel.app/api?username=Knucklessg1&show_icons=true&hide_border=true&&count_private=true&include_all_commits=true\" />\n\n![GitHub followers](https://img.shields.io/github/followers/Knucklessg1)\n![GitHub User's stars](https://img.shields.io/github/stars/Knucklessg1)\n</details>\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Manager your Dell PowerEdge Fan Speed with this handy tool and MCP Server!",
    "version": "1.0.9",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2e83f7e4e701954c34cc6528e0c4d9a07d9ccec7b38f1025d1b11d83ae48157c",
                "md5": "1962ff5c5d1fe2d5eb02acd4430a5928",
                "sha256": "e2210235c836773bbae13634adce2a795a5b2beff24a439d071aabec13e1b2ec"
            },
            "downloads": -1,
            "filename": "fan_manager-1.0.9-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "1962ff5c5d1fe2d5eb02acd4430a5928",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 11458,
            "upload_time": "2025-10-29T02:43:51",
            "upload_time_iso_8601": "2025-10-29T02:43:51.049618Z",
            "url": "https://files.pythonhosted.org/packages/2e/83/f7e4e701954c34cc6528e0c4d9a07d9ccec7b38f1025d1b11d83ae48157c/fan_manager-1.0.9-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f935ddb46b6ee63ff076b6573b2fae83aec61e388b6cd9c596c1e1dbadff0611",
                "md5": "179ff761482d0edb04c97d872085417e",
                "sha256": "d4be8b4ba66129e3181d42162cdb9497a72159fe75bd1152f0d7664e79553127"
            },
            "downloads": -1,
            "filename": "fan_manager-1.0.9.tar.gz",
            "has_sig": false,
            "md5_digest": "179ff761482d0edb04c97d872085417e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 11719,
            "upload_time": "2025-10-29T02:43:52",
            "upload_time_iso_8601": "2025-10-29T02:43:52.473260Z",
            "url": "https://files.pythonhosted.org/packages/f9/35/ddb46b6ee63ff076b6573b2fae83aec61e388b6cd9c596c1e1dbadff0611/fan_manager-1.0.9.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-29 02:43:52",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "fan-manager"
}
        
Elapsed time: 9.74921s