{"id":35562191,"url":"https://github.com/jztan/redmine-mcp-server","last_synced_at":"2026-04-01T21:44:46.291Z","repository":{"id":295422254,"uuid":"989857106","full_name":"jztan/redmine-mcp-server","owner":"jztan","description":"Production-ready MCP server for Redmine with security, pagination, and enterprise features","archived":false,"fork":false,"pushed_at":"2026-03-29T11:32:03.000Z","size":1336,"stargazers_count":22,"open_issues_count":1,"forks_count":8,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2026-03-29T14:20:47.942Z","etag":null,"topics":["agent","agentic-ai","agentic-workflow","mcp-servers","mcp-tools","redmine"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/redmine-mcp-server/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jztan.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"docs/contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-25T01:18:59.000Z","updated_at":"2026-03-28T00:11:05.000Z","dependencies_parsed_at":"2025-05-25T13:43:34.352Z","dependency_job_id":"99024ec4-8378-44eb-89ff-25ad76cc996d","html_url":"https://github.com/jztan/redmine-mcp-server","commit_stats":null,"previous_names":["jztan/redmine-mcp-server"],"tags_count":34,"template":false,"template_full_name":null,"purl":"pkg:github/jztan/redmine-mcp-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jztan%2Fredmine-mcp-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jztan%2Fredmine-mcp-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jztan%2Fredmine-mcp-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jztan%2Fredmine-mcp-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jztan","download_url":"https://codeload.github.com/jztan/redmine-mcp-server/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jztan%2Fredmine-mcp-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292508,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","agentic-ai","agentic-workflow","mcp-servers","mcp-tools","redmine"],"created_at":"2026-01-04T13:10:32.086Z","updated_at":"2026-04-01T21:44:46.236Z","avatar_url":"https://github.com/jztan.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Redmine MCP Server\n\n[![PyPI Version](https://img.shields.io/pypi/v/redmine-mcp-server.svg)](https://pypi.org/project/redmine-mcp-server/)\n[![License](https://img.shields.io/github/license/jztan/redmine-mcp-server.svg)](LICENSE)\n[![Python Version](https://img.shields.io/pypi/pyversions/redmine-mcp-server.svg)](https://pypi.org/project/redmine-mcp-server/)\n[![GitHub Issues](https://img.shields.io/github/issues/jztan/redmine-mcp-server.svg)](https://github.com/jztan/redmine-mcp-server/issues)\n[![CI](https://github.com/jztan/redmine-mcp-server/actions/workflows/pr-tests.yml/badge.svg)](https://github.com/jztan/redmine-mcp-server/actions/workflows/pr-tests.yml)\n[![Coverage](https://codecov.io/gh/jztan/redmine-mcp-server/branch/master/graph/badge.svg)](https://codecov.io/gh/jztan/redmine-mcp-server)\n[![Downloads](https://pepy.tech/badge/redmine-mcp-server)](https://pepy.tech/project/redmine-mcp-server)\n\nA Model Context Protocol (MCP) server that integrates with Redmine project management systems. This server provides seamless access to Redmine data through MCP tools, enabling AI assistants to interact with your Redmine instance.\n\n**mcp-name: io.github.jztan/redmine-mcp-server**\n\n## [Tool reference](./docs/tool-reference.md) | [Changelog](./CHANGELOG.md) | [Contributing](./docs/contributing.md) | [Troubleshooting](./docs/troubleshooting.md)\n\n## Features\n\n- **Redmine Integration**: List projects, view/create/update issues, download attachments\n- **HTTP File Serving**: Secure file access via UUID-based URLs with automatic expiry\n- **MCP Compliant**: Full Model Context Protocol support with FastMCP and HTTP transport\n- **Flexible Authentication**: API key, username/password, or OAuth2 per-user tokens\n- **File Management**: Automatic cleanup of expired files with storage statistics\n- **Docker Ready**: Complete containerization support\n- **Pagination Support**: Efficiently handle large issue lists with configurable limits\n- **Read-Only Mode**: Restrict to read-only operations via `REDMINE_MCP_READ_ONLY` environment variable\n- **Prompt Injection Protection**: User-controlled content wrapped in boundary tags for safe LLM consumption\n\n## Quick Start\n\n1. **Install the package**\n   ```bash\n   pip install redmine-mcp-server\n   ```\n2. **Create a `.env` file** with your Redmine credentials (see [Installation](#installation) for template)\n3. **Start the server**\n   ```bash\n   redmine-mcp-server\n   ```\n4. **Add the server to your MCP client** using one of the guides in [MCP Client Configuration](#mcp-client-configuration).\n\nOnce running, the server listens on `http://localhost:8000` with the MCP endpoint at `/mcp`, health check at `/health`, and file serving at `/files/{file_id}`.\n\n## Installation\n\n### Prerequisites\n\n- Python 3.10+ (for local installation)\n- Docker (alternative deployment, uses Python 3.13)\n- Access to a Redmine instance\n\n### Install from PyPI (Recommended)\n\n```bash\n# Install the package\npip install redmine-mcp-server\n\n# Create configuration file .env\ncat \u003e .env \u003c\u003c 'EOF'\n# Redmine connection (required)\nREDMINE_URL=https://your-redmine-server.com\n\n# Authentication - Use either API key (recommended) or username/password\nREDMINE_API_KEY=your_api_key\n# OR use username/password:\n# REDMINE_USERNAME=your_username\n# REDMINE_PASSWORD=your_password\n\n# Server configuration (optional, defaults shown)\nSERVER_HOST=0.0.0.0\nSERVER_PORT=8000\n\n# Public URL for file serving (optional)\nPUBLIC_HOST=localhost\nPUBLIC_PORT=8000\n\n# File management (optional)\nATTACHMENTS_DIR=./attachments\nAUTO_CLEANUP_ENABLED=true\nCLEANUP_INTERVAL_MINUTES=10\nATTACHMENT_EXPIRES_MINUTES=60\nEOF\n\n# Edit .env with your actual Redmine settings\nnano .env  # or use your preferred editor\n\n# Run the server\nredmine-mcp-server\n# Or alternatively:\npython -m redmine_mcp_server.main\n```\n\nThe server runs on `http://localhost:8000` with the MCP endpoint at `/mcp`, health check at `/health`, and file serving at `/files/{file_id}`.\n\n### Environment Variables Configuration\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eEnvironment Variables\u003c/strong\u003e\u003c/summary\u003e\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `REDMINE_URL` | Yes | – | Base URL of your Redmine instance |\n| `REDMINE_AUTH_MODE` | No | `legacy` | Authentication mode: `legacy` or `oauth` (see [Authentication](#authentication)) |\n| `REDMINE_API_KEY` | Yes† | – | API key (legacy mode only) |\n| `REDMINE_USERNAME` | Yes† | – | Username for basic auth (legacy mode only) |\n| `REDMINE_PASSWORD` | Yes† | – | Password for basic auth (legacy mode only) |\n| `REDMINE_MCP_BASE_URL` | Yes‡ | `http://localhost:3040` | Public base URL of this server, no trailing slash (OAuth mode only) |\n| `SERVER_HOST` | No | `0.0.0.0` | Host/IP the MCP server binds to |\n| `SERVER_PORT` | No | `8000` | Port the MCP server listens on |\n| `PUBLIC_HOST` | No | `localhost` | Hostname used when generating download URLs |\n| `PUBLIC_PORT` | No | `8000` | Public port used for download URLs |\n| `ATTACHMENTS_DIR` | No | `./attachments` | Directory for downloaded attachments |\n| `AUTO_CLEANUP_ENABLED` | No | `true` | Toggle automatic cleanup of expired attachments |\n| `CLEANUP_INTERVAL_MINUTES` | No | `10` | Interval for cleanup task |\n| `ATTACHMENT_EXPIRES_MINUTES` | No | `60` | Expiry window for generated download URLs |\n| `REDMINE_SSL_VERIFY` | No | `true` | Enable/disable SSL certificate verification |\n| `REDMINE_SSL_CERT` | No | – | Path to custom CA certificate file |\n| `REDMINE_SSL_CLIENT_CERT` | No | – | Path to client certificate for mutual TLS |\n| `REDMINE_MCP_READ_ONLY` | No | `false` | Block all write operations (create/update/delete) when set to `true` |\n| `REDMINE_AUTOFILL_REQUIRED_CUSTOM_FIELDS` | No | `false` | Enable one retry for issue creation by filling missing required custom fields |\n| `REDMINE_REQUIRED_CUSTOM_FIELD_DEFAULTS` | No | `{}` | JSON object mapping required custom field names to fallback values used when creating issues |\n\n*† Required when `REDMINE_AUTH_MODE=legacy`. Either `REDMINE_API_KEY` or `REDMINE_USERNAME`+`REDMINE_PASSWORD` must be set. API key is recommended.*\n*‡ Required when `REDMINE_AUTH_MODE=oauth`.*\n\nWhen `REDMINE_AUTOFILL_REQUIRED_CUSTOM_FIELDS=true`, `create_redmine_issue` retries once on relevant custom-field validation errors (for example `\u003cField Name\u003e cannot be blank` or `\u003cField Name\u003e is not included in the list`) and fills values only from:\n- the Redmine custom field `default_value`, or\n- `REDMINE_REQUIRED_CUSTOM_FIELD_DEFAULTS`\n\nExample:\n\n```bash\nREDMINE_AUTOFILL_REQUIRED_CUSTOM_FIELDS=true\nREDMINE_REQUIRED_CUSTOM_FIELD_DEFAULTS='{\"Required Field A\":\"Value A\",\"Required Field B\":\"Value B\"}'\n```\n\n\u003c/details\u003e\n\n### SSL Certificate Configuration\n\nConfigure SSL certificate handling for Redmine servers with self-signed certificates or internal CA infrastructure.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eSelf-Signed Certificates\u003c/strong\u003e\u003c/summary\u003e\n\nIf your Redmine server uses a self-signed certificate or internal CA:\n\n```bash\n# In .env file\nREDMINE_URL=https://redmine.company.com\nREDMINE_API_KEY=your_api_key\nREDMINE_SSL_CERT=/path/to/ca-certificate.crt\n```\n\nSupported certificate formats: `.pem`, `.crt`, `.cer`\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eMutual TLS (Client Certificates)\u003c/strong\u003e\u003c/summary\u003e\n\nFor environments requiring client certificate authentication:\n\n```bash\n# In .env file\nREDMINE_URL=https://secure.redmine.com\nREDMINE_API_KEY=your_api_key\nREDMINE_SSL_CERT=/path/to/ca-bundle.pem\nREDMINE_SSL_CLIENT_CERT=/path/to/cert.pem,/path/to/key.pem\n```\n\n**Note**: Private keys must be unencrypted (Python requests library requirement).\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDisable SSL Verification (Development Only)\u003c/strong\u003e\u003c/summary\u003e\n\n⚠️ **WARNING**: Only use in development/testing environments!\n\n```bash\n# In .env file\nREDMINE_SSL_VERIFY=false\n```\n\nDisabling SSL verification makes your connection vulnerable to man-in-the-middle attacks.\n\n\u003c/details\u003e\n\nFor SSL troubleshooting, see the [Troubleshooting Guide](./docs/troubleshooting.md#ssl-certificate-errors).\n\n## Authentication\n\nThe server supports two authentication modes, selected via `REDMINE_AUTH_MODE`.\n\n\u003e **Backward compatibility**: `REDMINE_AUTH_MODE` defaults to `legacy`, so all existing deployments continue to work without any configuration changes. OAuth2 support is purely additive — nothing breaks if you never set the variable.\n\n### Legacy mode (default)\n\nUses a single shared credential — either an API key or a username/password pair — configured once in `.env`. Every request to Redmine uses the same identity.\n\n```bash\nREDMINE_AUTH_MODE=legacy        # or omit entirely — this is the default\nREDMINE_URL=https://redmine.example.com\nREDMINE_API_KEY=your_api_key\n# OR:\n# REDMINE_USERNAME=your_username\n# REDMINE_PASSWORD=your_password\n```\n\n### OAuth2 mode\n\n\u003e **Requires Redmine 6.1 or newer.** OAuth2 support (via the Doorkeeper gem) was introduced in Redmine 6.1.\n\nEach MCP request carries its own `Authorization: Bearer \u003ctoken\u003e` header. The server validates the token against `GET /users/current.json` on Redmine before forwarding it. This enables multi-user deployments where each user authenticates with their own Redmine account.\n\n```bash\nREDMINE_AUTH_MODE=oauth\nREDMINE_URL=https://redmine.example.com\nREDMINE_MCP_BASE_URL=https://redmine-mcp.example.com   # public URL of this server\n```\n\nIn OAuth mode the server also exposes OAuth2 discovery and token management endpoints:\n\n| Endpoint | Standard | Purpose |\n|----------|----------|---------|\n| `/.well-known/oauth-protected-resource` | RFC 8707 | Tells clients where to find the authorization server |\n| `/.well-known/oauth-authorization-server` | RFC 8414 | Advertises Redmine's Doorkeeper OAuth endpoints |\n| `POST /revoke` | RFC 7009 | Revokes an OAuth2 token (proxies to Redmine's `/oauth/revoke`) |\n\nRedmine uses the [Doorkeeper](https://github.com/doorkeeper-gem/doorkeeper) gem for OAuth2 but does not serve the RFC 8414 discovery document itself. This server serves it on Redmine's behalf, pointing to Redmine's real `/oauth/authorize`, `/oauth/token`, and `/oauth/revoke` endpoints.\n\n**Prerequisites for OAuth mode:**\n- An OAuth application registered in Redmine admin → **Applications** with the callback URL of your client\n- A client that handles the authorization code flow, stores the resulting token per user, and sends it as `Authorization: Bearer \u003ctoken\u003e` on every MCP request\n- No Dynamic Client Registration (DCR) is required — register the application manually in Redmine admin\n\nFor step-by-step setup instructions, see the [OAuth2 Setup Guide](./docs/oauth-setup.md).\n\n## MCP Client Configuration\n\nThe server exposes an HTTP endpoint at `http://127.0.0.1:8000/mcp`. Register it with your preferred MCP-compatible agent using the instructions below.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eVisual Studio Code (Native MCP Support)\u003c/strong\u003e\u003c/summary\u003e\n\nVS Code has built-in MCP support via GitHub Copilot (requires VS Code 1.102+).\n\n**Using CLI (Quickest):**\n```bash\ncode --add-mcp '{\"name\":\"redmine\",\"type\":\"http\",\"url\":\"http://127.0.0.1:8000/mcp\"}'\n```\n\n**Using Command Palette:**\n1. Open Command Palette (`Cmd/Ctrl+Shift+P`)\n2. Run `MCP: Open User Configuration` (for global) or `MCP: Open Workspace Folder Configuration` (for project-specific)\n3. Add the configuration:\n   ```json\n   {\n     \"servers\": {\n       \"redmine\": {\n         \"type\": \"http\",\n         \"url\": \"http://127.0.0.1:8000/mcp\"\n       }\n     }\n   }\n   ```\n4. Save the file. VS Code will automatically load the MCP server.\n\n**Manual Configuration:**\nCreate `.vscode/mcp.json` in your workspace (or `mcp.json` in your user profile directory):\n```json\n{\n  \"servers\": {\n    \"redmine\": {\n      \"type\": \"http\",\n      \"url\": \"http://127.0.0.1:8000/mcp\"\n    }\n  }\n}\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eClaude Code\u003c/strong\u003e\u003c/summary\u003e\n\nAdd to Claude Code using the CLI command:\n\n```bash\nclaude mcp add --transport http redmine http://127.0.0.1:8000/mcp\n```\n\nOr configure manually in your Claude Code settings file (`~/.claude.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"redmine\": {\n      \"type\": \"http\",\n      \"url\": \"http://127.0.0.1:8000/mcp\"\n    }\n  }\n}\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eClaude Desktop (macOS \u0026 Windows)\u003c/strong\u003e\u003c/summary\u003e\n\nClaude Desktop's config file supports stdio transport only. Use FastMCP's proxy via `uv` to bridge to this HTTP server.\n\n**Setup:**\n1. Open Claude Desktop\n2. Click the **Claude** menu (macOS menu bar / Windows title bar) \u003e **Settings...**\n3. Click the **Developer** tab \u003e **Edit Config**\n4. Add the following configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"redmine\": {\n      \"command\": \"uv\",\n      \"args\": [\n        \"run\",\n        \"--with\", \"fastmcp\",\n        \"fastmcp\",\n        \"run\",\n        \"http://127.0.0.1:8000/mcp\"\n      ]\n    }\n  }\n}\n```\n\n5. Save the file, then **fully quit and restart** Claude Desktop\n6. Look for the tools icon in the input area to verify the connection\n\n**Config file locations:**\n- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- Windows: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n**Note:** The Redmine MCP server must be running before starting Claude Desktop.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eCodex CLI\u003c/strong\u003e\u003c/summary\u003e\n\nAdd to Codex CLI using the command:\n\n```bash\ncodex mcp add redmine -- npx -y mcp-client-http http://127.0.0.1:8000/mcp\n```\n\nOr configure manually in `~/.codex/config.toml`:\n\n```toml\n[mcp_servers.redmine]\ncommand = \"npx\"\nargs = [\"-y\", \"mcp-client-http\", \"http://127.0.0.1:8000/mcp\"]\n```\n\n**Note:** Codex CLI primarily supports stdio-based MCP servers. The above uses `mcp-client-http` as a bridge for HTTP transport.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eKiro\u003c/strong\u003e\u003c/summary\u003e\n\nKiro primarily supports stdio-based MCP servers. For HTTP servers, use an HTTP-to-stdio bridge:\n\n1. Create or edit `.kiro/settings/mcp.json` in your workspace:\n   ```json\n   {\n     \"mcpServers\": {\n       \"redmine\": {\n         \"command\": \"npx\",\n         \"args\": [\n           \"-y\",\n           \"mcp-client-http\",\n           \"http://127.0.0.1:8000/mcp\"\n         ],\n         \"disabled\": false\n       }\n     }\n   }\n   ```\n2. Save the file and restart Kiro. The Redmine tools will appear in the MCP panel.\n\n**Note:** Direct HTTP transport support in Kiro is limited. The above configuration uses `mcp-client-http` as a bridge to connect to HTTP MCP servers.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eGeneric MCP Clients\u003c/strong\u003e\u003c/summary\u003e\n\nMost MCP clients use a standard configuration format. For HTTP servers:\n\n```json\n{\n  \"mcpServers\": {\n    \"redmine\": {\n      \"type\": \"http\",\n      \"url\": \"http://127.0.0.1:8000/mcp\"\n    }\n  }\n}\n```\n\nFor clients that require a command-based approach with HTTP bridge:\n\n```json\n{\n  \"mcpServers\": {\n    \"redmine\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-client-http\", \"http://127.0.0.1:8000/mcp\"]\n    }\n  }\n}\n```\n\n\u003c/details\u003e\n\n### Testing Your Setup\n\n```bash\n# Test connection by checking health endpoint\ncurl http://localhost:8000/health\n```\n\n## Available Tools\n\nThis MCP server provides 21 tools for interacting with Redmine. For detailed documentation, see [Tool Reference](./docs/tool-reference.md).\n\n- **Project Management** (5 tools)\n  - [`list_redmine_projects`](docs/tool-reference.md#list_redmine_projects) - List all accessible projects\n  - [`list_project_issue_custom_fields`](docs/tool-reference.md#list_project_issue_custom_fields) - List issue custom fields configured for a project\n  - [`list_redmine_versions`](docs/tool-reference.md#list_redmine_versions) - List versions/milestones for a project\n  - [`list_project_members`](docs/tool-reference.md#list_project_members) - List members and roles of a project\n  - [`summarize_project_status`](docs/tool-reference.md#summarize_project_status) - Get comprehensive project status summary\n\n- **Issue Operations** (5 tools)\n  - [`get_redmine_issue`](docs/tool-reference.md#get_redmine_issue) - Retrieve detailed issue information (supports journal pagination, watchers, relations, children)\n  - [`list_redmine_issues`](docs/tool-reference.md#list_redmine_issues) - List issues with flexible filtering (project, status, assignee, etc.)\n  - [`search_redmine_issues`](docs/tool-reference.md#search_redmine_issues) - Search issues by text query\n  - [`create_redmine_issue`](docs/tool-reference.md#create_redmine_issue) - Create new issues\n  - [`update_redmine_issue`](docs/tool-reference.md#update_redmine_issue) - Update existing issues\n  - Note: `get_redmine_issue` can include `custom_fields` and `update_redmine_issue` can update custom fields by name (for example `{\"size\": \"S\"}`).\n\n- **Time Tracking** (4 tools)\n  - [`list_time_entries`](docs/tool-reference.md#list_time_entries) - List time entries with filtering by project, issue, user, and date range\n  - [`create_time_entry`](docs/tool-reference.md#create_time_entry) - Log time against projects or issues\n  - [`update_time_entry`](docs/tool-reference.md#update_time_entry) - Modify existing time entries\n  - [`list_time_entry_activities`](docs/tool-reference.md#list_time_entry_activities) - Discover available activity types for time entries\n\n- **Search \u0026 Wiki** (5 tools)\n  - [`search_entire_redmine`](docs/tool-reference.md#search_entire_redmine) - Global search across issues and wiki pages (Redmine 3.3.0+)\n  - [`get_redmine_wiki_page`](docs/tool-reference.md#get_redmine_wiki_page) - Retrieve wiki page content\n  - [`create_redmine_wiki_page`](docs/tool-reference.md#create_redmine_wiki_page) - Create new wiki pages\n  - [`update_redmine_wiki_page`](docs/tool-reference.md#update_redmine_wiki_page) - Update existing wiki pages\n  - [`delete_redmine_wiki_page`](docs/tool-reference.md#delete_redmine_wiki_page) - Delete wiki pages\n\n- **File Operations** (2 tools)\n  - [`get_redmine_attachment_download_url`](docs/tool-reference.md#get_redmine_attachment_download_url) - Get secure download URLs for attachments\n  - [`cleanup_attachment_files`](docs/tool-reference.md#cleanup_attachment_files) - Clean up expired attachment files\n\n\n## Docker Deployment\n\n### Quick Start with Docker\n\n```bash\n# Configure environment\ncp .env.example .env.docker\n# Edit .env.docker with your Redmine settings\n\n# Run with docker-compose\ndocker-compose up --build\n\n# Or run directly\ndocker build -t redmine-mcp-server .\ndocker run -p 8000:8000 --env-file .env.docker redmine-mcp-server\n```\n\n### Production Deployment\n\nUse the automated deployment script:\n\n```bash\nchmod +x deploy.sh\n./deploy.sh\n```\n\n## Troubleshooting\n\nIf you run into any issues, checkout our [troubleshooting guide](./docs/troubleshooting.md).\n\n## Contributing\n\nContributions are welcome! Please see our [contributing guide](./docs/contributing.md) for details.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Additional Resources\n\n- [Tool Reference](./docs/tool-reference.md) - Complete tool documentation\n- [Troubleshooting Guide](./docs/troubleshooting.md) - Common issues and solutions\n- [Contributing Guide](./docs/contributing.md) - Development setup and guidelines\n- [Changelog](./CHANGELOG.md) - Detailed version history\n- [Roadmap](roadmap.md) - Future development plans\n- [Blog: How I linked a legacy system to a modern AI agent with MCP](https://blog.jztan.com/how-i-linked-a-legacy-system-to-a-modern-ai-agent/) - The story behind this project\n- [Blog: Designing Reliable MCP Servers: 3 Hard Lessons in Agentic Architecture](https://blog.jztan.com/i-gave-my-ai-agent-full-api-access-it-was-a-mistak/) - Lessons learned building this server\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjztan%2Fredmine-mcp-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjztan%2Fredmine-mcp-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjztan%2Fredmine-mcp-server/lists"}