@yakirmar/mcp-toggl 1.1.0
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/LICENSE +21 -0
- package/README.md +268 -0
- package/dist/cache-manager.d.ts +43 -0
- package/dist/cache-manager.d.ts.map +1 -0
- package/dist/cache-manager.js +484 -0
- package/dist/cache-manager.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1264 -0
- package/dist/index.js.map +1 -0
- package/dist/timeline.d.ts +24 -0
- package/dist/timeline.d.ts.map +1 -0
- package/dist/timeline.js +55 -0
- package/dist/timeline.js.map +1 -0
- package/dist/toggl-api.d.ts +55 -0
- package/dist/toggl-api.d.ts.map +1 -0
- package/dist/toggl-api.js +402 -0
- package/dist/toggl-api.js.map +1 -0
- package/dist/types.d.ts +268 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +48 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +439 -0
- package/dist/utils.js.map +1 -0
- package/dist/workspace.d.ts +22 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +65 -0
- package/dist/workspace.js.map +1 -0
- package/docs/images/drift-detection.svg +82 -0
- package/docs/images/monthly-heatmap.svg +124 -0
- package/docs/images/weekly-recap.svg +97 -0
- package/package.json +75 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 380" role="img" aria-label="Calendar heatmap of April 2026 plus May 1: 26 active days, 219.6 hours total. Longest day Apr 2 at 18.2 hours. Most consistent stretch Apr 20 to 25 with 6 straight days of 9 to 14 hours.">
|
|
3
|
+
<title>April recap — 219.6 hrs across 26 active days</title>
|
|
4
|
+
<desc>Calendar heatmap showing daily hours tracked across April 2026 and May 1. Color intensity scales from light green (under 4 hours) to dark green (over 16 hours). Empty cells represent days with no entries. Off days: April 7, 11, 14-15, and 26.</desc>
|
|
5
|
+
<style>
|
|
6
|
+
.title { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; font-size: 16px; font-weight: 500; fill: #2C2C2A; }
|
|
7
|
+
.subtitle { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; font-size: 12px; fill: #5F5E5A; }
|
|
8
|
+
.day-label { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; font-size: 11px; fill: #5F5E5A; }
|
|
9
|
+
.month-label { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; font-size: 10px; fill: #888780; }
|
|
10
|
+
.legend-text { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; font-size: 11px; fill: #5F5E5A; }
|
|
11
|
+
.stat-label { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; font-size: 12px; fill: #5F5E5A; }
|
|
12
|
+
.stat-value { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; font-size: 22px; font-weight: 500; fill: #2C2C2A; }
|
|
13
|
+
.stat-sub { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; font-size: 11px; fill: #888780; }
|
|
14
|
+
.note-label { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; font-size: 12px; fill: #5F5E5A; }
|
|
15
|
+
.note-value { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; font-size: 13px; font-weight: 500; fill: #2C2C2A; }
|
|
16
|
+
@media (prefers-color-scheme: dark) {
|
|
17
|
+
.title { fill: #F1EFE8; }
|
|
18
|
+
.subtitle { fill: #B4B2A9; }
|
|
19
|
+
.day-label { fill: #B4B2A9; }
|
|
20
|
+
.month-label { fill: #888780; }
|
|
21
|
+
.legend-text { fill: #B4B2A9; }
|
|
22
|
+
.stat-label { fill: #B4B2A9; }
|
|
23
|
+
.stat-value { fill: #F1EFE8; }
|
|
24
|
+
.stat-sub { fill: #888780; }
|
|
25
|
+
.note-label { fill: #B4B2A9; }
|
|
26
|
+
.note-value { fill: #F1EFE8; }
|
|
27
|
+
}
|
|
28
|
+
</style>
|
|
29
|
+
|
|
30
|
+
<text x="20" y="28" class="title">April recap — 219.6 hrs across 26 active days</text>
|
|
31
|
+
<text x="20" y="48" class="subtitle">Apr 1 → May 1 · daily hours tracked</text>
|
|
32
|
+
|
|
33
|
+
<text x="60" y="100" class="day-label" text-anchor="end">Mon</text>
|
|
34
|
+
<text x="60" y="136" class="day-label" text-anchor="end">Tue</text>
|
|
35
|
+
<text x="60" y="172" class="day-label" text-anchor="end">Wed</text>
|
|
36
|
+
<text x="60" y="208" class="day-label" text-anchor="end">Thu</text>
|
|
37
|
+
<text x="60" y="244" class="day-label" text-anchor="end">Fri</text>
|
|
38
|
+
<text x="60" y="280" class="day-label" text-anchor="end">Sat</text>
|
|
39
|
+
<text x="60" y="316" class="day-label" text-anchor="end">Sun</text>
|
|
40
|
+
|
|
41
|
+
<rect x="70" y="80" width="32" height="32" fill="#F1EFE8" rx="4" opacity="0.4" />
|
|
42
|
+
<rect x="70" y="116" width="32" height="32" fill="#F1EFE8" rx="4" opacity="0.4" />
|
|
43
|
+
<rect x="70" y="152" width="32" height="32" fill="#5DCAA5" rx="4" />
|
|
44
|
+
<rect x="70" y="188" width="32" height="32" fill="#085041" rx="4" />
|
|
45
|
+
<rect x="70" y="224" width="32" height="32" fill="#9FE1CB" rx="4" />
|
|
46
|
+
<rect x="70" y="260" width="32" height="32" fill="#9FE1CB" rx="4" />
|
|
47
|
+
<rect x="70" y="296" width="32" height="32" fill="#9FE1CB" rx="4" />
|
|
48
|
+
|
|
49
|
+
<rect x="106" y="80" width="32" height="32" fill="#5DCAA5" rx="4" />
|
|
50
|
+
<rect x="106" y="116" width="32" height="32" fill="#E8E5DA" rx="4" />
|
|
51
|
+
<rect x="106" y="152" width="32" height="32" fill="#9FE1CB" rx="4" />
|
|
52
|
+
<rect x="106" y="188" width="32" height="32" fill="#085041" rx="4" />
|
|
53
|
+
<rect x="106" y="224" width="32" height="32" fill="#1D9E75" rx="4" />
|
|
54
|
+
<rect x="106" y="260" width="32" height="32" fill="#E8E5DA" rx="4" />
|
|
55
|
+
<rect x="106" y="296" width="32" height="32" fill="#9FE1CB" rx="4" />
|
|
56
|
+
|
|
57
|
+
<rect x="142" y="80" width="32" height="32" fill="#1D9E75" rx="4" />
|
|
58
|
+
<rect x="142" y="116" width="32" height="32" fill="#E8E5DA" rx="4" />
|
|
59
|
+
<rect x="142" y="152" width="32" height="32" fill="#E8E5DA" rx="4" />
|
|
60
|
+
<rect x="142" y="188" width="32" height="32" fill="#0F6E56" rx="4" />
|
|
61
|
+
<rect x="142" y="224" width="32" height="32" fill="#5DCAA5" rx="4" />
|
|
62
|
+
<rect x="142" y="260" width="32" height="32" fill="#1D9E75" rx="4" />
|
|
63
|
+
<rect x="142" y="296" width="32" height="32" fill="#1D9E75" rx="4" />
|
|
64
|
+
|
|
65
|
+
<rect x="178" y="80" width="32" height="32" fill="#1D9E75" rx="4" />
|
|
66
|
+
<rect x="178" y="116" width="32" height="32" fill="#0F6E56" rx="4" />
|
|
67
|
+
<rect x="178" y="152" width="32" height="32" fill="#1D9E75" rx="4" />
|
|
68
|
+
<rect x="178" y="188" width="32" height="32" fill="#0F6E56" rx="4" />
|
|
69
|
+
<rect x="178" y="224" width="32" height="32" fill="#0F6E56" rx="4" />
|
|
70
|
+
<rect x="178" y="260" width="32" height="32" fill="#1D9E75" rx="4" />
|
|
71
|
+
<rect x="178" y="296" width="32" height="32" fill="#E8E5DA" rx="4" />
|
|
72
|
+
|
|
73
|
+
<rect x="214" y="80" width="32" height="32" fill="#5DCAA5" rx="4" />
|
|
74
|
+
<rect x="214" y="116" width="32" height="32" fill="#0F6E56" rx="4" />
|
|
75
|
+
<rect x="214" y="152" width="32" height="32" fill="#5DCAA5" rx="4" />
|
|
76
|
+
<rect x="214" y="188" width="32" height="32" fill="#5DCAA5" rx="4" />
|
|
77
|
+
<rect x="214" y="224" width="32" height="32" fill="#9FE1CB" rx="4" />
|
|
78
|
+
<rect x="214" y="260" width="32" height="32" fill="#F1EFE8" rx="4" opacity="0.4" />
|
|
79
|
+
<rect x="214" y="296" width="32" height="32" fill="#F1EFE8" rx="4" opacity="0.4" />
|
|
80
|
+
|
|
81
|
+
<text x="86" y="64" class="month-label" text-anchor="middle">Mar 30</text>
|
|
82
|
+
<text x="194" y="64" class="month-label" text-anchor="middle">Apr 13</text>
|
|
83
|
+
<text x="230" y="64" class="month-label" text-anchor="middle">Apr 27</text>
|
|
84
|
+
|
|
85
|
+
<g transform="translate(70, 348)">
|
|
86
|
+
<text x="0" y="0" class="legend-text">Less</text>
|
|
87
|
+
<rect x="32" y="-9" width="11" height="11" fill="#E8E5DA" rx="2" />
|
|
88
|
+
<rect x="48" y="-9" width="11" height="11" fill="#9FE1CB" rx="2" />
|
|
89
|
+
<rect x="64" y="-9" width="11" height="11" fill="#5DCAA5" rx="2" />
|
|
90
|
+
<rect x="80" y="-9" width="11" height="11" fill="#1D9E75" rx="2" />
|
|
91
|
+
<rect x="96" y="-9" width="11" height="11" fill="#0F6E56" rx="2" />
|
|
92
|
+
<rect x="112" y="-9" width="11" height="11" fill="#085041" rx="2" />
|
|
93
|
+
<text x="130" y="0" class="legend-text">More</text>
|
|
94
|
+
<text x="170" y="0" class="legend-text" fill="#888780">0h · <4h · 4-8h · 8-12h · 12-16h · 16h+</text>
|
|
95
|
+
</g>
|
|
96
|
+
|
|
97
|
+
<g transform="translate(310, 80)">
|
|
98
|
+
<text x="0" y="14" class="stat-label">Total tracked</text>
|
|
99
|
+
<text x="0" y="42" class="stat-value">219.6</text>
|
|
100
|
+
<text x="74" y="42" class="stat-sub">hrs</text>
|
|
101
|
+
|
|
102
|
+
<text x="0" y="84" class="stat-label">Active days</text>
|
|
103
|
+
<text x="0" y="112" class="stat-value">26</text>
|
|
104
|
+
<text x="46" y="112" class="stat-sub">of 31 (84%)</text>
|
|
105
|
+
|
|
106
|
+
<text x="0" y="154" class="stat-label">Avg active day</text>
|
|
107
|
+
<text x="0" y="182" class="stat-value">8.4</text>
|
|
108
|
+
<text x="58" y="182" class="stat-sub">hrs</text>
|
|
109
|
+
</g>
|
|
110
|
+
|
|
111
|
+
<g transform="translate(530, 80)">
|
|
112
|
+
<text x="0" y="14" class="note-label">Longest day</text>
|
|
113
|
+
<text x="0" y="34" class="note-value">Apr 2 — 18.2 hrs</text>
|
|
114
|
+
<text x="0" y="52" class="stat-sub">"AI shit" + late call w/ Spence</text>
|
|
115
|
+
|
|
116
|
+
<text x="0" y="92" class="note-label">Best stretch</text>
|
|
117
|
+
<text x="0" y="112" class="note-value">Apr 20 → 25 · 6 days</text>
|
|
118
|
+
<text x="0" y="130" class="stat-sub">avg 11.9 hrs/day, no breaks</text>
|
|
119
|
+
|
|
120
|
+
<text x="0" y="170" class="note-label">Days off</text>
|
|
121
|
+
<text x="0" y="190" class="note-value">5 · Apr 7, 11, 14, 15, 26</text>
|
|
122
|
+
<text x="0" y="208" class="stat-sub">2 weekend pairs, mostly steady</text>
|
|
123
|
+
</g>
|
|
124
|
+
</svg>
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 440" role="img" aria-label="Stacked bar chart of weekly hours by project, Apr 27 to May 1: Mon 2.5, Tue 15.8, Wed 6.9, Thu 2.2, Fri 5.2; total 32.7 hours across 7 projects">
|
|
3
|
+
<title>Week of Apr 27 — 32.7 hours across 7 projects</title>
|
|
4
|
+
<desc>Daily hours stacked by project. Tuesday peaks at 15.8 hours covering Business Development, AutoMem, Automation Hub, and MCP Servers. Wednesday is 6.9 hours of AI Learning. Friday is 5.2 hours, mostly Toggl MCP shipping work.</desc>
|
|
5
|
+
<style>
|
|
6
|
+
.title { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; font-size: 16px; font-weight: 500; fill: #2C2C2A; }
|
|
7
|
+
.subtitle { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; font-size: 12px; fill: #5F5E5A; }
|
|
8
|
+
.axis { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; font-size: 11px; fill: #5F5E5A; }
|
|
9
|
+
.day-total { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; font-size: 11px; font-weight: 500; fill: #2C2C2A; }
|
|
10
|
+
.legend-text { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; font-size: 11px; fill: #2C2C2A; }
|
|
11
|
+
.grid { stroke: rgba(0,0,0,0.08); stroke-width: 1; }
|
|
12
|
+
@media (prefers-color-scheme: dark) {
|
|
13
|
+
.title { fill: #F1EFE8; }
|
|
14
|
+
.subtitle { fill: #B4B2A9; }
|
|
15
|
+
.axis { fill: #B4B2A9; }
|
|
16
|
+
.day-total { fill: #F1EFE8; }
|
|
17
|
+
.legend-text { fill: #F1EFE8; }
|
|
18
|
+
.grid { stroke: rgba(255,255,255,0.10); }
|
|
19
|
+
}
|
|
20
|
+
</style>
|
|
21
|
+
|
|
22
|
+
<text x="20" y="28" class="title">Week of Apr 27 — 32.7 hrs across 7 projects</text>
|
|
23
|
+
<text x="20" y="48" class="subtitle">Daily hours stacked by project · 31 entries</text>
|
|
24
|
+
|
|
25
|
+
<line x1="60" y1="80" x2="770" y2="80" class="grid" />
|
|
26
|
+
<text x="50" y="84" class="axis" text-anchor="end">16h</text>
|
|
27
|
+
<line x1="60" y1="145" x2="770" y2="145" class="grid" />
|
|
28
|
+
<text x="50" y="149" class="axis" text-anchor="end">12h</text>
|
|
29
|
+
<line x1="60" y1="210" x2="770" y2="210" class="grid" />
|
|
30
|
+
<text x="50" y="214" class="axis" text-anchor="end">8h</text>
|
|
31
|
+
<line x1="60" y1="275" x2="770" y2="275" class="grid" />
|
|
32
|
+
<text x="50" y="279" class="axis" text-anchor="end">4h</text>
|
|
33
|
+
<line x1="60" y1="340" x2="770" y2="340" class="grid" />
|
|
34
|
+
<text x="50" y="344" class="axis" text-anchor="end">0h</text>
|
|
35
|
+
|
|
36
|
+
<g>
|
|
37
|
+
<rect x="96" y="306.7" width="70" height="33.3" fill="#378ADD" />
|
|
38
|
+
<rect x="96" y="300.0" width="70" height="6.7" fill="#1D9E75" />
|
|
39
|
+
<text x="131" y="293" class="day-total" text-anchor="middle">2.5h</text>
|
|
40
|
+
<text x="131" y="360" class="axis" text-anchor="middle">Mon</text>
|
|
41
|
+
<text x="131" y="375" class="axis" text-anchor="middle">Apr 27</text>
|
|
42
|
+
</g>
|
|
43
|
+
|
|
44
|
+
<g>
|
|
45
|
+
<rect x="238" y="246.1" width="70" height="93.9" fill="#378ADD" />
|
|
46
|
+
<rect x="238" y="159.8" width="70" height="86.3" fill="#7F77DD" />
|
|
47
|
+
<rect x="238" y="113.2" width="70" height="46.6" fill="#1D9E75" />
|
|
48
|
+
<rect x="238" y="82.6" width="70" height="30.6" fill="#EF9F27" />
|
|
49
|
+
<text x="273" y="76" class="day-total" text-anchor="middle">15.8h</text>
|
|
50
|
+
<text x="273" y="360" class="axis" text-anchor="middle">Tue</text>
|
|
51
|
+
<text x="273" y="375" class="axis" text-anchor="middle">Apr 28</text>
|
|
52
|
+
</g>
|
|
53
|
+
|
|
54
|
+
<g>
|
|
55
|
+
<rect x="380" y="227.4" width="70" height="112.6" fill="#D85A30" />
|
|
56
|
+
<text x="415" y="220" class="day-total" text-anchor="middle">6.9h</text>
|
|
57
|
+
<text x="415" y="360" class="axis" text-anchor="middle">Wed</text>
|
|
58
|
+
<text x="415" y="375" class="axis" text-anchor="middle">Apr 29</text>
|
|
59
|
+
</g>
|
|
60
|
+
|
|
61
|
+
<g>
|
|
62
|
+
<rect x="522" y="326.2" width="70" height="13.8" fill="#378ADD" />
|
|
63
|
+
<rect x="522" y="307.5" width="70" height="18.7" fill="#D85A30" />
|
|
64
|
+
<rect x="522" y="303.9" width="70" height="3.6" fill="#1D9E75" />
|
|
65
|
+
<text x="557" y="297" class="day-total" text-anchor="middle">2.2h</text>
|
|
66
|
+
<text x="557" y="360" class="axis" text-anchor="middle">Thu</text>
|
|
67
|
+
<text x="557" y="375" class="axis" text-anchor="middle">Apr 30</text>
|
|
68
|
+
</g>
|
|
69
|
+
|
|
70
|
+
<g>
|
|
71
|
+
<rect x="664" y="338.05" width="70" height="1.95" fill="#378ADD" />
|
|
72
|
+
<rect x="664" y="312.85" width="70" height="25.2" fill="#1D9E75" />
|
|
73
|
+
<rect x="664" y="267.85" width="70" height="45.0" fill="#D4537E" />
|
|
74
|
+
<rect x="664" y="260.55" width="70" height="7.3" fill="#EF9F27" />
|
|
75
|
+
<rect x="664" y="255.35" width="70" height="5.2" fill="#888780" />
|
|
76
|
+
<text x="699" y="248" class="day-total" text-anchor="middle">5.2h</text>
|
|
77
|
+
<text x="699" y="360" class="axis" text-anchor="middle">Fri</text>
|
|
78
|
+
<text x="699" y="375" class="axis" text-anchor="middle">May 1</text>
|
|
79
|
+
</g>
|
|
80
|
+
|
|
81
|
+
<g transform="translate(20, 405)">
|
|
82
|
+
<rect x="0" y="0" width="10" height="10" fill="#378ADD" />
|
|
83
|
+
<text x="16" y="9" class="legend-text">Business Dev</text>
|
|
84
|
+
<rect x="108" y="0" width="10" height="10" fill="#D85A30" />
|
|
85
|
+
<text x="124" y="9" class="legend-text">AI Learning</text>
|
|
86
|
+
<rect x="208" y="0" width="10" height="10" fill="#7F77DD" />
|
|
87
|
+
<text x="224" y="9" class="legend-text">AutoMem</text>
|
|
88
|
+
<rect x="296" y="0" width="10" height="10" fill="#1D9E75" />
|
|
89
|
+
<text x="312" y="9" class="legend-text">Automation Hub</text>
|
|
90
|
+
<rect x="416" y="0" width="10" height="10" fill="#D4537E" />
|
|
91
|
+
<text x="432" y="9" class="legend-text">Toggl MCP</text>
|
|
92
|
+
<rect x="516" y="0" width="10" height="10" fill="#EF9F27" />
|
|
93
|
+
<text x="532" y="9" class="legend-text">MCP Servers</text>
|
|
94
|
+
<rect x="624" y="0" width="10" height="10" fill="#888780" />
|
|
95
|
+
<text x="640" y="9" class="legend-text">WPF Support</text>
|
|
96
|
+
</g>
|
|
97
|
+
</svg>
|
package/package.json
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@yakirmar/mcp-toggl",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "MCP server for Toggl Track integration with time tracking and reporting",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"mcpName": "io.github.yakirmar/mcp-toggl",
|
|
8
|
+
"bin": {
|
|
9
|
+
"mcp-toggl": "dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "rm -rf dist && tsc",
|
|
13
|
+
"postbuild": "chmod +x dist/index.js",
|
|
14
|
+
"dev": "tsx watch src/index.ts",
|
|
15
|
+
"start": "node dist/index.js",
|
|
16
|
+
"setup": "node scripts/setup.js",
|
|
17
|
+
"test": "vitest run",
|
|
18
|
+
"test:coverage": "vitest run --coverage",
|
|
19
|
+
"lint": "eslint src/ tests/",
|
|
20
|
+
"format": "prettier --write src/**/*.ts",
|
|
21
|
+
"prepublishOnly": "npm run build && npm test"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"mcp",
|
|
25
|
+
"mcp-server",
|
|
26
|
+
"modelcontextprotocol",
|
|
27
|
+
"toggl",
|
|
28
|
+
"time-tracking",
|
|
29
|
+
"reporting",
|
|
30
|
+
"productivity"
|
|
31
|
+
],
|
|
32
|
+
"author": "Very Good Plugins",
|
|
33
|
+
"contributors": [
|
|
34
|
+
"Yakir Marziano"
|
|
35
|
+
],
|
|
36
|
+
"license": "MIT",
|
|
37
|
+
"repository": {
|
|
38
|
+
"type": "git",
|
|
39
|
+
"url": "git+https://github.com/yakirmar/mcp-toggl.git"
|
|
40
|
+
},
|
|
41
|
+
"homepage": "https://github.com/yakirmar/mcp-toggl#readme",
|
|
42
|
+
"bugs": {
|
|
43
|
+
"url": "https://github.com/yakirmar/mcp-toggl/issues"
|
|
44
|
+
},
|
|
45
|
+
"engines": {
|
|
46
|
+
"node": "^20.19.0 || >=22.12.0"
|
|
47
|
+
},
|
|
48
|
+
"publishConfig": {
|
|
49
|
+
"access": "public"
|
|
50
|
+
},
|
|
51
|
+
"files": [
|
|
52
|
+
"dist/",
|
|
53
|
+
"docs/images/*.svg",
|
|
54
|
+
"README.md",
|
|
55
|
+
"LICENSE"
|
|
56
|
+
],
|
|
57
|
+
"dependencies": {
|
|
58
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
59
|
+
"dotenv": "^17.4.2",
|
|
60
|
+
"node-fetch": "^3.3.2",
|
|
61
|
+
"zod": "^4.3.6"
|
|
62
|
+
},
|
|
63
|
+
"devDependencies": {
|
|
64
|
+
"@eslint/js": "^10.0.1",
|
|
65
|
+
"@types/node": "^25.6.0",
|
|
66
|
+
"@vitest/coverage-v8": "^4.1.5",
|
|
67
|
+
"eslint": "^10.2.1",
|
|
68
|
+
"eslint-config-prettier": "^10.1.8",
|
|
69
|
+
"prettier": "^3.1.0",
|
|
70
|
+
"tsx": "^4.6.0",
|
|
71
|
+
"typescript": "^6.0.3",
|
|
72
|
+
"typescript-eslint": "^8.59.1",
|
|
73
|
+
"vitest": "^4.1.5"
|
|
74
|
+
}
|
|
75
|
+
}
|