@blackenedd18/planio-connector 2026.623.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +9 -0
- package/LICENSE +15 -0
- package/README.md +101 -0
- package/Redmine-functions/README.md +14 -0
- package/Redmine-functions/index.js +648 -0
- package/Redmine-functions/package.json +5 -0
- package/package.json +48 -0
- package/src/index.js +16 -0
- package/src/modules/hours/index.js +195 -0
- package/src/modules/issues/index.js +281 -0
- package/src/modules/projects/index.js +62 -0
- package/src/modules/time-entries/index.js +267 -0
- package/src/modules/users/index.js +87 -0
- package/src/server.js +87 -0
- package/src/shared/config.js +84 -0
- package/src/shared/date-validation.js +45 -0
- package/src/shared/logger.js +48 -0
- package/src/shared/redmine-functions-adapter.js +58 -0
- package/src/shared/redmine-functions-contract.js +4 -0
- package/src/shared/redmine-functions-entry.js +3 -0
- package/src/shared/request.js +97 -0
package/.env.example
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Required: Redmine/Planio API key (or pass via --api-key argument)
|
|
2
|
+
REDMINE_API_KEY=
|
|
3
|
+
|
|
4
|
+
# Required: Planio / Redmine instance base URL, no trailing slash
|
|
5
|
+
# (or pass via --redmine-url argument)
|
|
6
|
+
REDMINE_URL=https://your-redmine.example.com
|
|
7
|
+
|
|
8
|
+
# Optional: debug | info | warn | error
|
|
9
|
+
LOG_LEVEL=debug
|
package/LICENSE
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
ISC License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 blackenedd18
|
|
4
|
+
|
|
5
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
6
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
7
|
+
copyright notice and this permission notice appear in all copies.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
10
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
11
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
12
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
13
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
14
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
15
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# @blackenedd18/planio-connector
|
|
2
|
+
|
|
3
|
+
> Node.js MCP server that exposes Planio/Redmine operations over stdio.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@blackenedd18/planio-connector)
|
|
6
|
+
|
|
7
|
+
`@blackenedd18/planio-connector` is a ready-to-run MCP server powered by
|
|
8
|
+
`@modelcontextprotocol/sdk`. It provides tool-based access to users, issues, projects,
|
|
9
|
+
hours, and time entries against a Planio/Redmine REST API.
|
|
10
|
+
|
|
11
|
+
## Why Use It
|
|
12
|
+
|
|
13
|
+
- You need Redmine operations exposed as MCP tools for LLM hosts.
|
|
14
|
+
- You want a modular Node.js MCP implementation that is easy to extend by domain.
|
|
15
|
+
- You want a single `npx` command to run it with no global install.
|
|
16
|
+
|
|
17
|
+
## Install & Run (npx)
|
|
18
|
+
|
|
19
|
+
Run the published package directly — no install required:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npx -y @blackenedd18/planio-connector --api-key <YOUR_REDMINE_API_KEY> --redmine-url <YOUR_REDMINE_URL>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Or install globally and run the `planio-connector` binary:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm install -g @blackenedd18/planio-connector
|
|
29
|
+
planio-connector --api-key <YOUR_REDMINE_API_KEY> --redmine-url <YOUR_REDMINE_URL>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Local Development
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install
|
|
36
|
+
REDMINE_API_KEY=test_key REDMINE_URL=https://your-redmine.example.com npm start
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Run directly with npx from the source checkout:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npx . --api-key test_key --redmine-url https://your-redmine.example.com
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Key Features
|
|
46
|
+
|
|
47
|
+
- **MCP-native tool server** — stdio transport with typed MCP request handlers.
|
|
48
|
+
- **Domain modules** — users, issues, projects, hours, and time entries.
|
|
49
|
+
- **Stable response shapes** — request pipeline normalizes outputs for MCP compatibility.
|
|
50
|
+
- **Local function adapter** — no outbound HTTP required for built-in handler mode.
|
|
51
|
+
- **Regression test suite** — `node:test` coverage for adapter and response contracts.
|
|
52
|
+
|
|
53
|
+
## Example
|
|
54
|
+
|
|
55
|
+
Use it in an MCP host:
|
|
56
|
+
|
|
57
|
+
```json
|
|
58
|
+
{
|
|
59
|
+
"mcpServers": {
|
|
60
|
+
"planio-connector": {
|
|
61
|
+
"command": "npx",
|
|
62
|
+
"args": [
|
|
63
|
+
"-y", "@blackenedd18/planio-connector",
|
|
64
|
+
"--api-key", "${REDMINE_API_KEY}",
|
|
65
|
+
"--redmine-url", "${REDMINE_URL}"
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Requirements
|
|
73
|
+
|
|
74
|
+
- Node.js >= 18
|
|
75
|
+
- `REDMINE_API_KEY` via env var or `--api-key`
|
|
76
|
+
- `REDMINE_URL` via env var or `--redmine-url` — Planio/Redmine base URL
|
|
77
|
+
|
|
78
|
+
## Common Scripts
|
|
79
|
+
|
|
80
|
+
| Command | Purpose |
|
|
81
|
+
|---------|---------|
|
|
82
|
+
| `npm start` | Start MCP server from `src/index.js` |
|
|
83
|
+
| `npm run start:npx` | Start via package npx entry |
|
|
84
|
+
| `npm test` | Run regression and compatibility tests |
|
|
85
|
+
| `npm run inspector` | Open MCP inspector workflow |
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Documentation
|
|
90
|
+
|
|
91
|
+
| Guide | Description |
|
|
92
|
+
|-------|-------------|
|
|
93
|
+
| [Getting Started](docs/getting-started.md) | Install, run, and verify the server |
|
|
94
|
+
| [Architecture](docs/architecture.md) | Module boundaries and data flow |
|
|
95
|
+
| [Configuration](docs/configuration.md) | Environment variables and runtime settings |
|
|
96
|
+
| [CLI Usage](docs/cli.md) | Available npm and npx commands |
|
|
97
|
+
| [MCP Tools](docs/mcp-tools.md) | Domain tool catalog and examples |
|
|
98
|
+
|
|
99
|
+
## License
|
|
100
|
+
|
|
101
|
+
ISC
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Redmine-functions
|
|
2
|
+
|
|
3
|
+
Local function handlers used by the Node.js MCP server instead of outbound HTTP API calls.
|
|
4
|
+
|
|
5
|
+
## Contract
|
|
6
|
+
|
|
7
|
+
- Entry function: `executeRequest({ method, endpoint, params, body, apiKey })`
|
|
8
|
+
- Returns plain JavaScript data for the requested endpoint
|
|
9
|
+
- Throws `Error` with optional `status` for unsupported handlers or invalid input
|
|
10
|
+
|
|
11
|
+
## Notes
|
|
12
|
+
|
|
13
|
+
- This module is intentionally local-function based (`no-network` runtime path)
|
|
14
|
+
- Add or adjust handlers in `index.js` when new MCP tools/endpoints are introduced
|