{"_id":"@drjoy_vn/mcp-for-redmine","_rev":"5-79d7b34633dab117d6365d93194876f5","name":"@drjoy_vn/mcp-for-redmine","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@drjoy_vn/mcp-for-redmine","version":"1.0.0","keywords":["mcp","redmine","typescript"],"author":{"name":"DrJoy"},"license":"MIT","_id":"@drjoy_vn/mcp-for-redmine@1.0.0","maintainers":[{"name":"tungledjv","email":"tung.le@drjoy.vn"},{"name":"annguyendjv","email":"an.nguyen@drjoy.vn"}],"homepage":"https://github.com/tungledjv/mcp-for-redmine/blob/main/README.md","bugs":{"url":"https://github.com/tungledjv/mcp-for-redmine/issues"},"bin":{"mcp-for-redmine":"dist/cli.js"},"dist":{"shasum":"2bee8112ed17990bdf4b7a826af2d58c92c0b76e","tarball":"https://registry.npmjs.org/@drjoy_vn/mcp-for-redmine/-/mcp-for-redmine-1.0.0.tgz","fileCount":72,"integrity":"sha512-/zr7YBJxJNrCyq7xQiPHtBR2x3ZqJcQpmmILXiHagGT3E3Zq15oR1YCU/Y9wsvL4vlVq/7ste1HmHHox7Eul+A==","signatures":[{"sig":"MEQCIDj9IFBQ9spRCO97mJGmhNDkMkmyi+YiyuURPc8/Dss0AiALmfJ99AWRHfagVK3oc6AQ428V8JjPu/Ht8RW63OrHBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195417},"main":"dist/index.js","type":"module","gitHead":"c06324ef91c1ccee794c3c171c9b781894f31795","scripts":{"dev":"tsx watch src/cli.ts","test":"jest","build":"tsc && tsc-alias && tsc-esm-fix","start":"node dist/cli.js"},"_npmUser":{"name":"tungledjv","email":"tung.le@drjoy.vn"},"repository":{"url":"git+https://github.com/tungledjv/mcp-for-redmine.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP Server for interacting with a Redmine instance.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.22.4","axios":"^1.10.0","dotenv":"^16.6.1","commander":"^14.0.0","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","jest":"^30.0.5","ts-jest":"^29.4.0","tsc-alias":"^1.8.16","typescript":"^5.3.3","@types/jest":"^30.0.0","@types/node":"^20.11.20","tsc-esm-fix":"^3.1.2","concurrently":"^9.1.2","@types/dotenv":"^6.1.1","@types/node-fetch":"^2.6.11","axios-mock-adapter":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-for-redmine_1.0.0_1767154294743_0.8594051039761788","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@drjoy_vn/mcp-for-redmine","version":"1.0.1","keywords":["mcp","redmine","typescript"],"author":{"name":"DrJoy"},"license":"MIT","_id":"@drjoy_vn/mcp-for-redmine@1.0.1","maintainers":[{"name":"tungledjv","email":"tung.le@drjoy.vn"},{"name":"annguyendjv","email":"an.nguyen@drjoy.vn"}],"homepage":"https://github.com/tungledjv/mcp-for-redmine/blob/main/README.md","bugs":{"url":"https://github.com/tungledjv/mcp-for-redmine/issues"},"bin":{"mcp-for-redmine":"dist/cli.js"},"dist":{"shasum":"85c352fecd4a8271cc73516d72a6acabe80a9299","tarball":"https://registry.npmjs.org/@drjoy_vn/mcp-for-redmine/-/mcp-for-redmine-1.0.1.tgz","fileCount":72,"integrity":"sha512-O6kWDLUCFV3H6/Mjetj/RevzDurMJT4XneVo1b5pu2ZLLrrY/LR2dfct2lsRgceby4iV5vNmNtpBymH1fxqtnw==","signatures":[{"sig":"MEUCIQC2C5mY2McAGfXlnGxFujUkb5xW6NwCLR/P84km3dB0iQIgQTRkq9xEmOtn2W9KiSXC2b01OW6MUneCTenWMBLWLp8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197955},"main":"dist/index.js","type":"module","gitHead":"c06324ef91c1ccee794c3c171c9b781894f31795","scripts":{"dev":"tsx watch src/cli.ts","test":"jest","build":"tsc && tsc-alias && tsc-esm-fix","start":"node dist/cli.js"},"_npmUser":{"name":"tungledjv","email":"tung.le@drjoy.vn"},"repository":{"url":"git+https://github.com/tungledjv/mcp-for-redmine.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP Server for interacting with a Redmine instance.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.22.4","axios":"^1.10.0","dotenv":"^16.6.1","commander":"^14.0.0","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","jest":"^30.0.5","ts-jest":"^29.4.0","tsc-alias":"^1.8.16","typescript":"^5.3.3","@types/jest":"^30.0.0","@types/node":"^20.11.20","tsc-esm-fix":"^3.1.2","concurrently":"^9.1.2","@types/dotenv":"^6.1.1","@types/node-fetch":"^2.6.11","axios-mock-adapter":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-for-redmine_1.0.1_1767154657141_0.3661162170578618","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@drjoy_vn/mcp-for-redmine","version":"1.0.2","keywords":["mcp","redmine","typescript"],"author":{"name":"DrJoy"},"license":"MIT","_id":"@drjoy_vn/mcp-for-redmine@1.0.2","maintainers":[{"name":"tungledjv","email":"tung.le@drjoy.vn"},{"name":"annguyendjv","email":"an.nguyen@drjoy.vn"}],"homepage":"https://github.com/tungledjv/mcp-for-redmine/blob/main/README.md","bugs":{"url":"https://github.com/tungledjv/mcp-for-redmine/issues"},"bin":{"mcp-for-redmine":"dist/cli.js"},"dist":{"shasum":"0c688974b882005b0ea8d4b46ff6877cd7b6711e","tarball":"https://registry.npmjs.org/@drjoy_vn/mcp-for-redmine/-/mcp-for-redmine-1.0.2.tgz","fileCount":72,"integrity":"sha512-hNvvQ58QdgCplRmROlHuPepN4nr35z36MJIsN/C4aHVJkxEt59LXrN4Ftt795lhxvcXFnZXw8sYOr045fpmWJA==","signatures":[{"sig":"MEUCIQChScNOoK9JEZbSqJUSBnY5BhLMLITBd09UZJPie3pY+AIgIBAy9M7g3enwFgFD7a6+9B0K14VaVMkCSdU0GAcGtdo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197654},"main":"dist/index.js","type":"module","gitHead":"c06324ef91c1ccee794c3c171c9b781894f31795","scripts":{"dev":"tsx watch src/cli.ts","test":"jest","build":"tsc && tsc-alias && tsc-esm-fix","start":"node dist/cli.js"},"_npmUser":{"name":"tungledjv","email":"tung.le@drjoy.vn"},"repository":{"url":"git+https://github.com/tungledjv/mcp-for-redmine.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP Server for interacting with a Redmine instance.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.22.4","axios":"^1.10.0","dotenv":"^16.6.1","commander":"^14.0.0","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","jest":"^30.0.5","ts-jest":"^29.4.0","tsc-alias":"^1.8.16","typescript":"^5.3.3","@types/jest":"^30.0.0","@types/node":"^20.11.20","tsc-esm-fix":"^3.1.2","concurrently":"^9.1.2","@types/dotenv":"^6.1.1","@types/node-fetch":"^2.6.11","axios-mock-adapter":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-for-redmine_1.0.2_1767155018574_0.8300343123433891","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@drjoy_vn/mcp-for-redmine","version":"1.0.3","keywords":["mcp","redmine","typescript"],"author":{"name":"DrJoy"},"license":"MIT","_id":"@drjoy_vn/mcp-for-redmine@1.0.3","maintainers":[{"name":"tungledjv","email":"tung.le@drjoy.vn"},{"name":"annguyendjv","email":"an.nguyen@drjoy.vn"}],"homepage":"https://github.com/tungledjv/mcp-for-redmine/blob/main/README.md","bugs":{"url":"https://github.com/tungledjv/mcp-for-redmine/issues"},"bin":{"mcp-for-redmine":"dist/cli.js"},"dist":{"shasum":"e61dc05421b590fe21ce52f0ac2c580b7dd6c819","tarball":"https://registry.npmjs.org/@drjoy_vn/mcp-for-redmine/-/mcp-for-redmine-1.0.3.tgz","fileCount":72,"integrity":"sha512-kFLRpgIITQLs2CgiTLLOEqJQhGhnVOsqoDaNM2Kyn03kDWj0PcGTq/cnBi5t8eU493soNWevCyUF8mj8QJ8XEw==","signatures":[{"sig":"MEUCIQCciv08s4PvQ9cxC/Qml4OUhuJ6QYZM9Ca3Vef9F568UgIgJIO9BrWoqGD9jh660x2GztU/LEXYqpCj/MjZ0bK8z10=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197533},"main":"dist/index.js","type":"module","gitHead":"c06324ef91c1ccee794c3c171c9b781894f31795","scripts":{"dev":"tsx watch src/cli.ts","test":"jest","build":"tsc && tsc-alias && tsc-esm-fix","start":"node dist/cli.js"},"_npmUser":{"name":"tungledjv","email":"tung.le@drjoy.vn"},"repository":{"url":"git+https://github.com/tungledjv/mcp-for-redmine.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP Server for interacting with a Redmine instance.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.22.4","axios":"^1.10.0","dotenv":"^16.6.1","commander":"^14.0.0","node-fetch":"^3.3.2","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","jest":"^30.0.5","ts-jest":"^29.4.0","tsc-alias":"^1.8.16","typescript":"^5.3.3","@types/jest":"^30.0.0","@types/node":"^20.11.20","tsc-esm-fix":"^3.1.2","concurrently":"^9.1.2","@types/dotenv":"^6.1.1","@types/node-fetch":"^2.6.11","axios-mock-adapter":"^2.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-for-redmine_1.0.3_1767155339303_0.4942580413612083","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@drjoy_vn/mcp-for-redmine","version":"1.0.4","description":"MCP Server for interacting with a Redmine instance.","main":"dist/index.js","type":"module","scripts":{"build":"tsc && tsc-alias && tsc-esm-fix","start":"node dist/cli.js","dev":"tsx watch src/cli.ts","test":"jest"},"repository":{"type":"git","url":"git+https://github.com/tungledjv/mcp-for-redmine.git"},"keywords":["mcp","redmine","typescript"],"author":{"name":"DrJoy"},"license":"MIT","bin":{"mcp-for-redmine":"dist/cli.js"},"homepage":"https://github.com/tungledjv/mcp-for-redmine/blob/main/README.md","dependencies":{"@modelcontextprotocol/sdk":"^1.7.0","axios":"^1.10.0","commander":"^14.0.0","dotenv":"^16.6.1","node-fetch":"^3.3.2","zod":"^3.22.4"},"devDependencies":{"@types/dotenv":"^6.1.1","@types/jest":"^30.0.0","@types/node":"^20.11.20","@types/node-fetch":"^2.6.11","axios-mock-adapter":"^2.1.0","concurrently":"^9.1.2","jest":"^30.0.5","ts-jest":"^29.4.0","tsc-alias":"^1.8.16","tsc-esm-fix":"^3.1.2","tsx":"^4.20.3","typescript":"^5.3.3"},"gitHead":"c06324ef91c1ccee794c3c171c9b781894f31795","_id":"@drjoy_vn/mcp-for-redmine@1.0.4","bugs":{"url":"https://github.com/tungledjv/mcp-for-redmine/issues"},"_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-20h28wpVOahr7MX/4kJDbNkrOyvhsqoIpR0JCbCv45dKf028NsTLUSb1Yp8RrHgbHGPb16Kyh60oiN5HMVQAsQ==","shasum":"235538eab13522430bd715750b1482995a89881c","tarball":"https://registry.npmjs.org/@drjoy_vn/mcp-for-redmine/-/mcp-for-redmine-1.0.4.tgz","fileCount":72,"unpackedSize":197538,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAifR/ceXXwIGsRWWf/OLG+aqcLqQddEEc3vuzKxWoL3AiAQkrX9orKAfORPmhn08aMcYhJVKdb+KLf29ZsvCsBVXA=="}]},"_npmUser":{"name":"tungledjv","email":"tung.le@drjoy.vn"},"directories":{},"maintainers":[{"name":"tungledjv","email":"tung.le@drjoy.vn"},{"name":"annguyendjv","email":"an.nguyen@drjoy.vn"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-for-redmine_1.0.4_1767928716637_0.07531859498317406"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-31T04:11:34.561Z","modified":"2026-01-09T03:18:37.011Z","1.0.0":"2025-12-31T04:11:34.893Z","1.0.1":"2025-12-31T04:17:37.284Z","1.0.2":"2025-12-31T04:23:38.709Z","1.0.3":"2025-12-31T04:28:59.434Z","1.0.4":"2026-01-09T03:18:36.789Z"},"bugs":{"url":"https://github.com/tungledjv/mcp-for-redmine/issues"},"author":{"name":"DrJoy"},"license":"MIT","homepage":"https://github.com/tungledjv/mcp-for-redmine/blob/main/README.md","keywords":["mcp","redmine","typescript"],"repository":{"type":"git","url":"git+https://github.com/tungledjv/mcp-for-redmine.git"},"description":"MCP Server for interacting with a Redmine instance.","maintainers":[{"name":"tungledjv","email":"tung.le@drjoy.vn"},{"name":"annguyendjv","email":"an.nguyen@drjoy.vn"}],"readme":"<div align=\"center\">\r\n    <img src=\"./assets/cover.png\" alt=\"MCP-FOR-REDMINE\" />\r\n</div>\r\n\r\n# MCP-For-Redmine · [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/toss/slash/blob/main/LICENSE)\r\n\r\nEnglish | [한국어](./README-ko_kr.md) | [日本語](./README-ja_jp.md) | [简体中文](./README-zh_cn.md)\r\n\r\nThis project is a Model-Context-Protocol (MCP) server for interacting with Redmine. With an MCP-compatible client, you can easily manage Redmine projects, issues, users, and time entries.\r\n\r\nCurrently, only the standard input/output (`stdio`) transport is supported.\r\n\r\n## Requirements\r\n\r\n- Node.js 18 or higher\r\n- Redmine API key (your personal API key from your Redmine account)\r\n\r\nCompatibility baseline: Redmine 6.0.6\r\n\r\n## Getting Started\r\n\r\nHow to configure the MCP server for each environment:\r\n\r\n<details>\r\n<summary><b>Cursor</b></summary>\r\n\r\nFile (top-left) -> Preferences -> Cursor Settings -> MCP & Integrations -> New MCP Server\r\n\r\n<b>Config file</b>: `~/.cursor/mcp.json` (global) or `.cursor/mcp.json` (per-project)\r\n\r\n📚 <b>Docs</b>: [Cursor MCP documentation](https://docs.cursor.com/en/context/mcp)\r\n\r\n[![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=mcp-for-redmine&config=eyJjb21tYW5kIjoibnB4IC15IEBjaHNwb3dlcjEvbWNwLWZvci1yZWRtaW5lQGxhdGVzdCIsImVudiI6eyJSRURNSU5FX0JBU0VfVVJMIjoiaHR0cHM6Ly95b3VyLnJlZG1pbmUudGxkIiwiUkVETUlORV9BUElfS0VZIjoieW91cl9hcGlfa2V5X2hlcmUifX0%3D)\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"mcp-for-redmine\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"-y\", \"@chspower1/mcp-for-redmine@latest\"],\r\n      \"env\": {\r\n        \"REDMINE_BASE_URL\": \"https://your.redmine.tld\",\r\n        \"REDMINE_API_KEY\": \"your_api_key_here\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><b>Claude Desktop</b></summary>\r\n\r\n<b>Config files</b>:\r\n\r\n- <b>Windows</b>: `%APPDATA%\\Claude\\claude_desktop_config.json`\r\n- <b>macOS</b>: `~/Library/Application Support/Claude/claude_desktop_config.json`\r\n\r\n📚 <b>Docs</b>: [Claude Desktop MCP guide](https://support.anthropic.com/en/articles/10949351-getting-started-with-local-mcp-servers-on-claude-desktop)\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"mcp-for-redmine\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"-y\", \"@chspower1/mcp-for-redmine@latest\"],\r\n      \"env\": {\r\n        \"REDMINE_BASE_URL\": \"https://your.redmine.tld\",\r\n        \"REDMINE_API_KEY\": \"your_api_key_here\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><b>Claude Code</b></summary>\r\n\r\n📚 <b>Docs</b>: [Claude Code MCP documentation](https://docs.anthropic.com/en/docs/claude-code/mcp)\r\n\r\n<b>Set environment variables and run CLI</b>:\r\n\r\n```bash\r\n# Set environment variables\r\nexport REDMINE_BASE_URL=https://your.redmine.tld\r\nexport REDMINE_API_KEY=your_api_key_here\r\n\r\n# Add MCP server\r\nclaude mcp add mcp-for-redmine -- npx -y @chspower1/mcp-for-redmine@latest\r\n```\r\n\r\n<b>Or edit the settings file directly</b>: `~/.claude/settings.local.json`\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"mcp-for-redmine\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"-y\", \"@chspower1/mcp-for-redmine@latest\"],\r\n      \"env\": {\r\n        \"REDMINE_BASE_URL\": \"https://your.redmine.tld\",\r\n        \"REDMINE_API_KEY\": \"your_api_key_here\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><b>Gemini CLI</b></summary>\r\n\r\n<b>Config file</b>: `~/.gemini/settings.json` (global) or `.gemini/settings.json` (per-project)\r\n\r\n📚 <b>Docs</b>: [Gemini CLI MCP guide](https://gemini-cli.xyz/docs/en/tools/mcp-server)\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"mcp-for-redmine\": {\r\n      \"command\": \"npx\",\r\n      \"args\": [\"-y\", \"@chspower1/mcp-for-redmine@latest\"],\r\n      \"env\": {\r\n        \"REDMINE_BASE_URL\": \"https://your.redmine.tld\",\r\n        \"REDMINE_API_KEY\": \"your_api_key_here\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n</details>\r\n\r\n<details>\r\n<summary><b>OpenAI Codex</b></summary>\r\n\r\n<b>Config file</b>: `~/.codex/config.toml`\r\n\r\n📚 <b>Docs</b>: [OpenAI MCP documentation](https://platform.openai.com/docs/mcp)\r\n\r\n```toml\r\n[[mcp_servers]]\r\nname = \"mcp-for-redmine\"\r\ncommand = \"npx\"\r\nargs = [\"-y\", \"@chspower1/mcp-for-redmine@latest\"]\r\n\r\n[mcp_servers.env]\r\nREDMINE_BASE_URL = \"https://your.redmine.tld\"\r\nREDMINE_API_KEY = \"your_api_key_here\"\r\n```\r\n\r\n</details>\r\n\r\n## Configuration Options\r\n\r\nThe server reads configuration in the following priority:\r\n\r\n<details>\r\n<summary><b>CLI flags (highest priority)</b></summary>\r\n\r\n- `-u, --url <url>`\r\n- `-k, --api-key <key>`\r\n- `--no-tls-verify` (optional, disable TLS verification)\r\n- ```json\r\n  {\r\n    \"mcpServers\": {\r\n      \"mcp-for-redmine\": {\r\n        \"command\": \"npx\",\r\n        \"args\": [\r\n          \"-y\",\r\n          \"@chspower1/mcp-for-redmine@latest\",\r\n          \"--url\",\r\n          \"https://your.redmine.tld\",\r\n          \"--api-key\",\r\n          \"YOUR_API_KEY\"\r\n        ]\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n</details>\r\n\r\n<details><summary><b>Environment variables</b></summary>\r\n\r\n- `REDMINE_BASE_URL` or `REDMINE_URL`\r\n- `REDMINE_API_KEY` or `REDMINE_TOKEN`\r\n- `REDMINE_TLS_VERIFY` (optional, set to `false` or `0` to disable TLS verification)\r\n- ```json\r\n  {\r\n    \"mcpServers\": {\r\n      \"mcp-for-redmine\": {\r\n        \"command\": \"npx\",\r\n        \"args\": [\"-y\", \"@chspower1/mcp-for-redmine@latest\"],\r\n        \"env\": {\r\n          \"REDMINE_BASE_URL\": \"https://your.redmine.tld\",\r\n          \"REDMINE_API_KEY\": \"your_api_key_here\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n  </details>\r\n\r\n<details><summary><b>.env file values</b></summary>\r\n\r\n<b>Supported variables:</b>\r\n\r\n- `REDMINE_BASE_URL` or `REDMINE_URL` — Redmine server URL\r\n- `REDMINE_API_KEY` or `REDMINE_TOKEN` — Redmine API key\r\n- `REDMINE_TLS_VERIFY` — Set to `false` or `0` to disable TLS verification (optional)\r\n</details>\r\n\r\n> [!WARNING] > **Security Warning**: Disabling TLS verification (`REDMINE_TLS_VERIFY=false` or `--no-tls-verify`) makes your connection vulnerable to Man-in-the-Middle (MitM) attacks. Only use this option in trusted environments (e.g., internal networks with self-signed certificates). Never use it when connecting to public Redmine instances over the internet.\r\n\r\n## Key Features\r\n\r\nCurrently available tools:\r\n\r\n**Stable API**\r\n\r\n- **Users**: `users_create`, `users_get`, `users_current`, `users_list`, `users_update`, `users_delete`\r\n- **Projects**: `projects_list`, `projects_get`, `projects_create`, `projects_update`, `projects_archive`, `projects_unarchive`, `projects_delete`\r\n- **Issues**: `issues_list`, `issues_get`, `issues_create`, `issues_update`, `issues_delete`\r\n- **Time Entries**: `time_entries_list`, `time_entries_get`, `time_entries_create`, `time_entries_update`, `time_entries_delete`\r\n\r\n**Alpha API**\r\n\r\n- **Enumerations**: `enumerations_issue_priorities_list`, `enumerations_time_entry_activities_list`\r\n- **Memberships**: `memberships_list_project_memberships`, `memberships_get`, `memberships_create`, `memberships_update`, `memberships_delete`\r\n- **Issue Relations**: `issue_relations_list`, `issue_relations_get`, `issue_relations_create`, `issue_relations_delete`\r\n- **Versions**: `versions_list`, `versions_get`, `versions_create`, `versions_update`, `versions_delete`\r\n- **Wiki Pages**: `wiki_pages_list`, `wiki_pages_get`, `wiki_pages_create_or_update`, `wiki_pages_delete`\r\n- **Queries**: `queries_list`\r\n- **Files**: `files_list`\r\n- **Attachments**: `attachments_get`, `attachments_delete`, `attachments_upload`\r\n- **Issue Statuses**: `issue_statuses_list`\r\n- **Trackers**: `trackers_list`\r\n- **Roles**: `roles_list`, `roles_get`\r\n- **Groups**: `groups_list`, `groups_get`, `groups_create`, `groups_update`, `groups_delete`, `groups_add_user`, `groups_remove_user`\r\n- **Custom Fields**: `custom_fields_list`\r\n- **Issue Categories**: `issue_categories_list`, `issue_categories_get`, `issue_categories_create`, `issue_categories_update`, `issue_categories_delete`\r\n- **My Account**: `my_account_get`\r\n- **Search**: `search`\r\n\r\nThe input schema for each tool is defined in `src/schema/*.schema.ts`. Results are returned as JSON-formatted text.\r\n\r\n## Common Input Rules (dev)\r\n\r\n- **Collection pagination**: most list tools support `offset` and `limit` (default 25, max 100)\r\n- **Association expansion**: some `get`/`list` tools support `include` (e.g., issues: `children,attachments,journals,...`)\r\n- **Attachment upload token**: `attachments_upload` sends a Base64 file to `/uploads.json` and returns a token. Use this token in the `uploads` field of `issues_create/update` or `wiki_pages_create_or_update` to associate attachments.\r\n- **Tool-specific extras/constraints**: for detailed constraints (e.g., issue `custom_fields`, `watcher_user_ids`, etc.), see each tool’s schema in `src/schema/*.schema.ts`.\r\n\r\n## Troubleshooting Guide\r\n\r\n- **Configuration errors**\r\n  - **Example messages**: `❌ Redmine URL is required!` or `❌ Redmine API key is required!`\r\n  - **How to fix**: Choose one of the configuration methods shown in the error message. For security, environment variables are recommended.\r\n- **Node.js/ESM-related errors**\r\n  - Ensure you are using Node.js 18 or higher.\r\n- **Authentication and network errors (401, 403, etc.)**\r\n  - Verify your API key permissions and URL, and check for network issues.\r\n- **Execution issues on Windows**\r\n  - Try running with `cmd /c npx ...` as shown in the guide.\r\n\r\n## Security & Permissions\r\n\r\n- API keys are sensitive; avoid exposing them in Git commits, logs, or shared repositories.\r\n- For irreversible actions like deleting projects or issues, double-check permissions and proceed carefully.\r\n\r\n## Roadmap\r\n\r\nWe plan to deepen coverage of beta endpoints (e.g., attachment upload flows), add SSE (Server-Sent Events), and enhance examples/tests.\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md"}