@cyanheads/reliefweb-mcp-server 0.1.1

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.
Files changed (77) hide show
  1. package/CLAUDE.md +391 -0
  2. package/Dockerfile +98 -0
  3. package/LICENSE +201 -0
  4. package/README.md +320 -0
  5. package/changelog/0.1.x/0.1.0.md +24 -0
  6. package/changelog/0.1.x/0.1.1.md +29 -0
  7. package/changelog/template.md +119 -0
  8. package/dist/config/server-config.d.ts +14 -0
  9. package/dist/config/server-config.d.ts.map +1 -0
  10. package/dist/config/server-config.js +19 -0
  11. package/dist/config/server-config.js.map +1 -0
  12. package/dist/index.d.ts +7 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +42 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/mcp-server/prompts/definitions/crisis-briefing.prompt.d.ts +14 -0
  17. package/dist/mcp-server/prompts/definitions/crisis-briefing.prompt.d.ts.map +1 -0
  18. package/dist/mcp-server/prompts/definitions/crisis-briefing.prompt.js +62 -0
  19. package/dist/mcp-server/prompts/definitions/crisis-briefing.prompt.js.map +1 -0
  20. package/dist/mcp-server/resources/definitions/country.resource.d.ts +9 -0
  21. package/dist/mcp-server/resources/definitions/country.resource.d.ts.map +1 -0
  22. package/dist/mcp-server/resources/definitions/country.resource.js +30 -0
  23. package/dist/mcp-server/resources/definitions/country.resource.js.map +1 -0
  24. package/dist/mcp-server/resources/definitions/disaster.resource.d.ts +9 -0
  25. package/dist/mcp-server/resources/definitions/disaster.resource.d.ts.map +1 -0
  26. package/dist/mcp-server/resources/definitions/disaster.resource.js +30 -0
  27. package/dist/mcp-server/resources/definitions/disaster.resource.js.map +1 -0
  28. package/dist/mcp-server/resources/definitions/report.resource.d.ts +9 -0
  29. package/dist/mcp-server/resources/definitions/report.resource.d.ts.map +1 -0
  30. package/dist/mcp-server/resources/definitions/report.resource.js +30 -0
  31. package/dist/mcp-server/resources/definitions/report.resource.js.map +1 -0
  32. package/dist/mcp-server/tools/definitions/get-country.tool.d.ts +35 -0
  33. package/dist/mcp-server/tools/definitions/get-country.tool.d.ts.map +1 -0
  34. package/dist/mcp-server/tools/definitions/get-country.tool.js +106 -0
  35. package/dist/mcp-server/tools/definitions/get-country.tool.js.map +1 -0
  36. package/dist/mcp-server/tools/definitions/get-disaster.tool.d.ts +42 -0
  37. package/dist/mcp-server/tools/definitions/get-disaster.tool.d.ts.map +1 -0
  38. package/dist/mcp-server/tools/definitions/get-disaster.tool.js +127 -0
  39. package/dist/mcp-server/tools/definitions/get-disaster.tool.js.map +1 -0
  40. package/dist/mcp-server/tools/definitions/get-report.tool.d.ts +30 -0
  41. package/dist/mcp-server/tools/definitions/get-report.tool.d.ts.map +1 -0
  42. package/dist/mcp-server/tools/definitions/get-report.tool.js +92 -0
  43. package/dist/mcp-server/tools/definitions/get-report.tool.js.map +1 -0
  44. package/dist/mcp-server/tools/definitions/list-countries.tool.d.ts +20 -0
  45. package/dist/mcp-server/tools/definitions/list-countries.tool.d.ts.map +1 -0
  46. package/dist/mcp-server/tools/definitions/list-countries.tool.js +83 -0
  47. package/dist/mcp-server/tools/definitions/list-countries.tool.js.map +1 -0
  48. package/dist/mcp-server/tools/definitions/list-sources.tool.d.ts +22 -0
  49. package/dist/mcp-server/tools/definitions/list-sources.tool.d.ts.map +1 -0
  50. package/dist/mcp-server/tools/definitions/list-sources.tool.js +82 -0
  51. package/dist/mcp-server/tools/definitions/list-sources.tool.js.map +1 -0
  52. package/dist/mcp-server/tools/definitions/search-disasters.tool.d.ts +35 -0
  53. package/dist/mcp-server/tools/definitions/search-disasters.tool.d.ts.map +1 -0
  54. package/dist/mcp-server/tools/definitions/search-disasters.tool.js +163 -0
  55. package/dist/mcp-server/tools/definitions/search-disasters.tool.js.map +1 -0
  56. package/dist/mcp-server/tools/definitions/search-jobs.tool.d.ts +32 -0
  57. package/dist/mcp-server/tools/definitions/search-jobs.tool.d.ts.map +1 -0
  58. package/dist/mcp-server/tools/definitions/search-jobs.tool.js +148 -0
  59. package/dist/mcp-server/tools/definitions/search-jobs.tool.js.map +1 -0
  60. package/dist/mcp-server/tools/definitions/search-reports.tool.d.ts +40 -0
  61. package/dist/mcp-server/tools/definitions/search-reports.tool.d.ts.map +1 -0
  62. package/dist/mcp-server/tools/definitions/search-reports.tool.js +191 -0
  63. package/dist/mcp-server/tools/definitions/search-reports.tool.js.map +1 -0
  64. package/dist/mcp-server/tools/definitions/search-training.tool.d.ts +35 -0
  65. package/dist/mcp-server/tools/definitions/search-training.tool.d.ts.map +1 -0
  66. package/dist/mcp-server/tools/definitions/search-training.tool.js +166 -0
  67. package/dist/mcp-server/tools/definitions/search-training.tool.js.map +1 -0
  68. package/dist/services/reliefweb/reliefweb-service.d.ts +103 -0
  69. package/dist/services/reliefweb/reliefweb-service.d.ts.map +1 -0
  70. package/dist/services/reliefweb/reliefweb-service.js +546 -0
  71. package/dist/services/reliefweb/reliefweb-service.js.map +1 -0
  72. package/dist/services/reliefweb/types.d.ts +345 -0
  73. package/dist/services/reliefweb/types.d.ts.map +1 -0
  74. package/dist/services/reliefweb/types.js +7 -0
  75. package/dist/services/reliefweb/types.js.map +1 -0
  76. package/package.json +78 -0
  77. package/server.json +111 -0
@@ -0,0 +1,345 @@
1
+ /**
2
+ * @fileoverview Domain types for the ReliefWeb API v2 service layer.
3
+ * Covers raw API response shapes, normalized domain objects, and query builder types.
4
+ * @module services/reliefweb/types
5
+ */
6
+ export interface RawApiResponse<T> {
7
+ /** Total number of records in this response page. */
8
+ count: number;
9
+ /** Result records. */
10
+ data?: RawRecord<T>[];
11
+ /** Link to the next page of results, if any. */
12
+ next?: string;
13
+ /** Self-link for the request. */
14
+ self: string;
15
+ /** HTTP status code returned by the API. */
16
+ status: number;
17
+ /** Time taken for the API to process the request. */
18
+ time: number;
19
+ /** Total number of records matching the query (before pagination). */
20
+ totalCount: number;
21
+ }
22
+ export interface RawRecord<T> {
23
+ /** The record's field data. */
24
+ fields: T;
25
+ /** URL of this record. */
26
+ href?: string;
27
+ /** Numeric ReliefWeb record ID. */
28
+ id: number;
29
+ /** Content type / API entity type (e.g. "reports", "disasters"). */
30
+ type?: string;
31
+ }
32
+ export interface RawReportFields {
33
+ body?: string;
34
+ country?: Array<{
35
+ name?: string;
36
+ iso3?: string;
37
+ }>;
38
+ date?: {
39
+ original?: string;
40
+ created?: string;
41
+ };
42
+ file?: Array<{
43
+ url?: string;
44
+ filename?: string;
45
+ mimetype?: string;
46
+ }>;
47
+ format?: Array<{
48
+ name?: string;
49
+ }>;
50
+ headline?: {
51
+ summary?: string;
52
+ };
53
+ id?: number;
54
+ language?: Array<{
55
+ code?: string;
56
+ name?: string;
57
+ }>;
58
+ primary_country?: {
59
+ name?: string;
60
+ iso3?: string;
61
+ };
62
+ source?: Array<{
63
+ shortname?: string;
64
+ name?: string;
65
+ }>;
66
+ theme?: Array<{
67
+ name?: string;
68
+ }>;
69
+ title?: string;
70
+ url_alias?: string;
71
+ }
72
+ export interface RawDisasterFields {
73
+ country?: Array<{
74
+ name?: string;
75
+ iso3?: string;
76
+ }>;
77
+ date?: {
78
+ created?: string;
79
+ event?: string;
80
+ };
81
+ description?: string;
82
+ glide?: string;
83
+ id?: number;
84
+ name?: string;
85
+ primary_country?: {
86
+ name?: string;
87
+ iso3?: string;
88
+ };
89
+ primary_type?: {
90
+ name?: string;
91
+ };
92
+ profile?: {
93
+ overview?: string;
94
+ key_content?: Array<{
95
+ title?: string;
96
+ url?: string;
97
+ }>;
98
+ appeals_response_plans?: Array<{
99
+ title?: string;
100
+ url?: string;
101
+ date?: string;
102
+ }>;
103
+ useful_links?: Array<{
104
+ title?: string;
105
+ url?: string;
106
+ }>;
107
+ };
108
+ status?: string;
109
+ type?: Array<{
110
+ name?: string;
111
+ }>;
112
+ url_alias?: string;
113
+ }
114
+ export interface RawCountryFields {
115
+ id?: number;
116
+ iso3?: string;
117
+ name?: string;
118
+ profile?: {
119
+ overview?: string;
120
+ key_content?: Array<{
121
+ title?: string;
122
+ url?: string;
123
+ }>;
124
+ appeals_response_plans?: Array<{
125
+ title?: string;
126
+ url?: string;
127
+ date?: string;
128
+ }>;
129
+ useful_links?: Array<{
130
+ title?: string;
131
+ url?: string;
132
+ }>;
133
+ };
134
+ status?: string;
135
+ url_alias?: string;
136
+ }
137
+ export interface RawJobFields {
138
+ body?: string;
139
+ career_categories?: Array<{
140
+ name?: string;
141
+ }>;
142
+ country?: Array<{
143
+ name?: string;
144
+ iso3?: string;
145
+ }>;
146
+ date?: {
147
+ created?: string;
148
+ closing?: string;
149
+ };
150
+ experience?: Array<{
151
+ name?: string;
152
+ }>;
153
+ id?: number;
154
+ source?: Array<{
155
+ shortname?: string;
156
+ name?: string;
157
+ }>;
158
+ theme?: Array<{
159
+ name?: string;
160
+ }>;
161
+ title?: string;
162
+ type?: Array<{
163
+ name?: string;
164
+ }>;
165
+ url_alias?: string;
166
+ }
167
+ export interface RawTrainingFields {
168
+ body?: string;
169
+ career_categories?: Array<{
170
+ name?: string;
171
+ }>;
172
+ country?: Array<{
173
+ name?: string;
174
+ iso3?: string;
175
+ }>;
176
+ date?: {
177
+ start?: string;
178
+ end?: string;
179
+ registration?: string;
180
+ created?: string;
181
+ };
182
+ format?: Array<{
183
+ name?: string;
184
+ }>;
185
+ id?: number;
186
+ language?: Array<{
187
+ code?: string;
188
+ name?: string;
189
+ }>;
190
+ source?: Array<{
191
+ shortname?: string;
192
+ name?: string;
193
+ }>;
194
+ theme?: Array<{
195
+ name?: string;
196
+ }>;
197
+ title?: string;
198
+ url_alias?: string;
199
+ }
200
+ export interface RawSourceFields {
201
+ homepage?: string;
202
+ id?: number;
203
+ name?: string;
204
+ shortname?: string;
205
+ type?: Array<{
206
+ name?: string;
207
+ }>;
208
+ url?: string;
209
+ }
210
+ export interface ReportSummary {
211
+ countries?: string[];
212
+ dateCreated?: string;
213
+ dateOriginal?: string;
214
+ fileUrls?: string[];
215
+ formats?: string[];
216
+ headlineSummary?: string;
217
+ id: number;
218
+ languages?: string[];
219
+ primaryCountry?: string;
220
+ sources?: string[];
221
+ themes?: string[];
222
+ title: string;
223
+ urlAlias?: string;
224
+ }
225
+ export interface ReportDetail extends ReportSummary {
226
+ body?: string;
227
+ }
228
+ export interface DisasterSummary {
229
+ countries?: string[];
230
+ dateCreated?: string;
231
+ dateEvent?: string;
232
+ glide?: string;
233
+ id: number;
234
+ name: string;
235
+ primaryCountry?: string;
236
+ primaryType?: string;
237
+ status?: string;
238
+ types?: string[];
239
+ urlAlias?: string;
240
+ }
241
+ export interface DisasterDetail extends DisasterSummary {
242
+ appealsResponsePlans?: Array<{
243
+ title: string;
244
+ url: string;
245
+ date?: string;
246
+ }>;
247
+ description?: string;
248
+ keyContent?: Array<{
249
+ title: string;
250
+ url: string;
251
+ }>;
252
+ profileOverview?: string;
253
+ usefulLinks?: Array<{
254
+ title: string;
255
+ url: string;
256
+ }>;
257
+ }
258
+ export interface CountrySummary {
259
+ id: number;
260
+ iso3?: string;
261
+ name: string;
262
+ status?: string;
263
+ urlAlias?: string;
264
+ }
265
+ export interface CountryDetail extends CountrySummary {
266
+ appealsResponsePlans?: Array<{
267
+ title: string;
268
+ url: string;
269
+ date?: string;
270
+ }>;
271
+ keyContent?: Array<{
272
+ title: string;
273
+ url: string;
274
+ }>;
275
+ profileOverview?: string;
276
+ usefulLinks?: Array<{
277
+ title: string;
278
+ url: string;
279
+ }>;
280
+ }
281
+ export interface JobSummary {
282
+ careerCategories?: string[];
283
+ countries?: string[];
284
+ dateClosing?: string;
285
+ dateCreated?: string;
286
+ experienceLevels?: string[];
287
+ id: number;
288
+ sources?: string[];
289
+ themes?: string[];
290
+ title: string;
291
+ types?: string[];
292
+ urlAlias?: string;
293
+ }
294
+ export interface TrainingSummary {
295
+ careerCategories?: string[];
296
+ countries?: string[];
297
+ dateEnd?: string;
298
+ dateRegistration?: string;
299
+ dateStart?: string;
300
+ formats?: string[];
301
+ id: number;
302
+ languages?: string[];
303
+ sources?: string[];
304
+ themes?: string[];
305
+ title: string;
306
+ urlAlias?: string;
307
+ }
308
+ export interface SourceSummary {
309
+ homepage?: string;
310
+ id: number;
311
+ name: string;
312
+ shortname?: string;
313
+ types?: string[];
314
+ url?: string;
315
+ }
316
+ /** A ReliefWeb API filter condition or compound filter. */
317
+ export type FilterCondition = {
318
+ field: string;
319
+ value: string | string[] | number | number[];
320
+ operator?: 'AND' | 'OR';
321
+ } | {
322
+ operator: 'AND' | 'OR';
323
+ conditions: FilterCondition[];
324
+ negate?: boolean;
325
+ };
326
+ /** POST body for the ReliefWeb search endpoint. */
327
+ export interface ReliefWebQuery {
328
+ fields?: {
329
+ include?: string[];
330
+ };
331
+ filter?: FilterCondition;
332
+ limit?: number;
333
+ offset?: number;
334
+ preset?: 'minimal' | 'latest' | 'analysis';
335
+ profile?: 'minimal' | 'list' | 'full';
336
+ query?: {
337
+ value: string;
338
+ fields?: string[];
339
+ operator?: 'AND' | 'OR';
340
+ };
341
+ sort?: string[];
342
+ }
343
+ /** Content types supported by the API. */
344
+ export type ContentType = 'reports' | 'disasters' | 'countries' | 'jobs' | 'training' | 'sources';
345
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/reliefweb/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACtB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,+BAA+B;IAC/B,MAAM,EAAE,CAAC,CAAC;IACV,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,eAAe,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,YAAY,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACtD,sBAAsB,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAChF,YAAY,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACxD,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACtD,sBAAsB,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAChF,YAAY,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACxD,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjF,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAID,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD,oBAAoB,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,oBAAoB,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,UAAU;IACzB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAID,2DAA2D;AAC3D,MAAM,MAAM,eAAe,GACvB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;CAAE,GACxF;IAAE,QAAQ,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,eAAe,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEhF,mDAAmD;AACnD,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAChC,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC3C,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IACtC,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;KAAE,CAAC;IACtE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,0CAA0C;AAC1C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @fileoverview Domain types for the ReliefWeb API v2 service layer.
3
+ * Covers raw API response shapes, normalized domain objects, and query builder types.
4
+ * @module services/reliefweb/types
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/reliefweb/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
package/package.json ADDED
@@ -0,0 +1,78 @@
1
+ {
2
+ "name": "@cyanheads/reliefweb-mcp-server",
3
+ "version": "0.1.1",
4
+ "description": "MCP server for the ReliefWeb humanitarian data API — search reports, disasters, jobs, training, and country profiles.",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "reliefweb-mcp-server": "dist/index.js"
10
+ },
11
+ "files": [
12
+ "changelog/",
13
+ "dist/",
14
+ "README.md",
15
+ "LICENSE",
16
+ "CLAUDE.md",
17
+ "AGENTS.md",
18
+ "Dockerfile",
19
+ "server.json"
20
+ ],
21
+ "scripts": {
22
+ "build": "tsx scripts/build.ts",
23
+ "rebuild": "tsx scripts/clean.ts && tsx scripts/build.ts",
24
+ "clean": "tsx scripts/clean.ts",
25
+ "devcheck": "tsx scripts/devcheck.ts",
26
+ "audit:refresh": "rm -f bun.lock && bun install && bun audit",
27
+ "tree": "tsx scripts/tree.ts",
28
+ "list-skills": "tsx scripts/list-skills.ts",
29
+ "format": "biome check --write --unsafe .",
30
+ "lint:mcp": "tsx scripts/lint-mcp.ts",
31
+ "lint:packaging": "tsx scripts/lint-packaging.ts",
32
+ "bundle": "npm run build && npx -y @anthropic-ai/mcpb pack . dist/reliefweb-mcp-server.mcpb",
33
+ "changelog:build": "tsx scripts/build-changelog.ts",
34
+ "changelog:check": "tsx scripts/build-changelog.ts --check",
35
+ "test": "vitest run",
36
+ "start": "node dist/index.js",
37
+ "start:stdio": "MCP_TRANSPORT_TYPE=stdio node dist/index.js",
38
+ "start:http": "MCP_TRANSPORT_TYPE=http node dist/index.js"
39
+ },
40
+ "keywords": [
41
+ "mcp",
42
+ "mcp-server",
43
+ "model-context-protocol",
44
+ "reliefweb",
45
+ "humanitarian",
46
+ "disasters",
47
+ "humanitarian-aid",
48
+ "ocha",
49
+ "crisis-data"
50
+ ],
51
+ "repository": {
52
+ "type": "git",
53
+ "url": "https://github.com/cyanheads/reliefweb-mcp-server"
54
+ },
55
+ "license": "Apache-2.0",
56
+ "engines": {
57
+ "bun": ">=1.3.0",
58
+ "node": ">=24.0.0"
59
+ },
60
+ "publishConfig": {
61
+ "access": "public"
62
+ },
63
+ "dependencies": {
64
+ "@cyanheads/mcp-ts-core": "^0.9.7",
65
+ "pino-pretty": "^13.1.3",
66
+ "zod": "^4.4.3"
67
+ },
68
+ "devDependencies": {
69
+ "@biomejs/biome": "^2.4.15",
70
+ "@types/node": "^25.9.1",
71
+ "depcheck": "^1.4.7",
72
+ "ignore": "^7.0.5",
73
+ "tsc-alias": "^1.8.17",
74
+ "tsx": "^4.22.3",
75
+ "typescript": "^6.0.3",
76
+ "vitest": "^4.1.7"
77
+ }
78
+ }
package/server.json ADDED
@@ -0,0 +1,111 @@
1
+ {
2
+ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
+ "name": "cyanheads/reliefweb-mcp-server",
4
+ "description": "ReliefWeb humanitarian data API — search reports, disasters, jobs, training, and country profiles.",
5
+ "repository": {
6
+ "url": "https://github.com/cyanheads/reliefweb-mcp-server",
7
+ "source": "github"
8
+ },
9
+ "version": "0.1.1",
10
+ "packages": [
11
+ {
12
+ "registryType": "npm",
13
+ "registryBaseUrl": "https://registry.npmjs.org",
14
+ "identifier": "@cyanheads/reliefweb-mcp-server",
15
+ "runtimeHint": "node",
16
+ "version": "0.1.1",
17
+ "packageArguments": [
18
+ {
19
+ "type": "positional",
20
+ "value": "run"
21
+ },
22
+ {
23
+ "type": "positional",
24
+ "value": "start:stdio"
25
+ }
26
+ ],
27
+ "environmentVariables": [
28
+ {
29
+ "name": "RELIEFWEB_APP_NAME",
30
+ "description": "Pre-approved appname for the ReliefWeb API v2. Required since November 2025.",
31
+ "format": "string",
32
+ "isRequired": true
33
+ },
34
+ {
35
+ "name": "MCP_LOG_LEVEL",
36
+ "description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').",
37
+ "format": "string",
38
+ "isRequired": false,
39
+ "default": "info"
40
+ }
41
+ ],
42
+ "transport": {
43
+ "type": "stdio"
44
+ }
45
+ },
46
+ {
47
+ "registryType": "npm",
48
+ "registryBaseUrl": "https://registry.npmjs.org",
49
+ "identifier": "@cyanheads/reliefweb-mcp-server",
50
+ "runtimeHint": "node",
51
+ "version": "0.1.1",
52
+ "packageArguments": [
53
+ {
54
+ "type": "positional",
55
+ "value": "run"
56
+ },
57
+ {
58
+ "type": "positional",
59
+ "value": "start:http"
60
+ }
61
+ ],
62
+ "environmentVariables": [
63
+ {
64
+ "name": "RELIEFWEB_APP_NAME",
65
+ "description": "Pre-approved appname for the ReliefWeb API v2. Required since November 2025.",
66
+ "format": "string",
67
+ "isRequired": true
68
+ },
69
+ {
70
+ "name": "MCP_HTTP_HOST",
71
+ "description": "The hostname for the HTTP server.",
72
+ "format": "string",
73
+ "isRequired": false,
74
+ "default": "127.0.0.1"
75
+ },
76
+ {
77
+ "name": "MCP_HTTP_PORT",
78
+ "description": "The port to run the HTTP server on.",
79
+ "format": "string",
80
+ "isRequired": false,
81
+ "default": "3010"
82
+ },
83
+ {
84
+ "name": "MCP_HTTP_ENDPOINT_PATH",
85
+ "description": "The endpoint path for the MCP server.",
86
+ "format": "string",
87
+ "isRequired": false,
88
+ "default": "/mcp"
89
+ },
90
+ {
91
+ "name": "MCP_AUTH_MODE",
92
+ "description": "Authentication mode to use: 'none', 'jwt', or 'oauth'.",
93
+ "format": "string",
94
+ "isRequired": false,
95
+ "default": "none"
96
+ },
97
+ {
98
+ "name": "MCP_LOG_LEVEL",
99
+ "description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').",
100
+ "format": "string",
101
+ "isRequired": false,
102
+ "default": "info"
103
+ }
104
+ ],
105
+ "transport": {
106
+ "type": "streamable-http",
107
+ "url": "http://localhost:3010/mcp"
108
+ }
109
+ }
110
+ ]
111
+ }