threenative-asset-mcp 0.4.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.
Files changed (150) hide show
  1. package/README.md +441 -0
  2. package/dist/ambientcg/client.d.ts +61 -0
  3. package/dist/ambientcg/client.d.ts.map +1 -0
  4. package/dist/ambientcg/client.js +234 -0
  5. package/dist/ambientcg/client.js.map +1 -0
  6. package/dist/audio/catalog.d.ts +36 -0
  7. package/dist/audio/catalog.d.ts.map +1 -0
  8. package/dist/audio/catalog.js +169 -0
  9. package/dist/audio/catalog.js.map +1 -0
  10. package/dist/audio/client.d.ts +46 -0
  11. package/dist/audio/client.d.ts.map +1 -0
  12. package/dist/audio/client.js +196 -0
  13. package/dist/audio/client.js.map +1 -0
  14. package/dist/bundle/client.d.ts +89 -0
  15. package/dist/bundle/client.d.ts.map +1 -0
  16. package/dist/bundle/client.js +324 -0
  17. package/dist/bundle/client.js.map +1 -0
  18. package/dist/config.d.ts +20 -0
  19. package/dist/config.d.ts.map +1 -0
  20. package/dist/config.js +130 -0
  21. package/dist/config.js.map +1 -0
  22. package/dist/download/direct-asset-downloader.d.ts +41 -0
  23. package/dist/download/direct-asset-downloader.d.ts.map +1 -0
  24. package/dist/download/direct-asset-downloader.js +232 -0
  25. package/dist/download/direct-asset-downloader.js.map +1 -0
  26. package/dist/fab/api-download.d.ts +30 -0
  27. package/dist/fab/api-download.d.ts.map +1 -0
  28. package/dist/fab/api-download.js +200 -0
  29. package/dist/fab/api-download.js.map +1 -0
  30. package/dist/fab/browser-transport.d.ts +79 -0
  31. package/dist/fab/browser-transport.d.ts.map +1 -0
  32. package/dist/fab/browser-transport.js +492 -0
  33. package/dist/fab/browser-transport.js.map +1 -0
  34. package/dist/fab/cache.d.ts +22 -0
  35. package/dist/fab/cache.d.ts.map +1 -0
  36. package/dist/fab/cache.js +55 -0
  37. package/dist/fab/cache.js.map +1 -0
  38. package/dist/fab/client.d.ts +61 -0
  39. package/dist/fab/client.d.ts.map +1 -0
  40. package/dist/fab/client.js +868 -0
  41. package/dist/fab/client.js.map +1 -0
  42. package/dist/fab/direct-transport.d.ts +68 -0
  43. package/dist/fab/direct-transport.d.ts.map +1 -0
  44. package/dist/fab/direct-transport.js +184 -0
  45. package/dist/fab/direct-transport.js.map +1 -0
  46. package/dist/fab/download-store.d.ts +21 -0
  47. package/dist/fab/download-store.d.ts.map +1 -0
  48. package/dist/fab/download-store.js +93 -0
  49. package/dist/fab/download-store.js.map +1 -0
  50. package/dist/fab/errors.d.ts +20 -0
  51. package/dist/fab/errors.d.ts.map +1 -0
  52. package/dist/fab/errors.js +65 -0
  53. package/dist/fab/errors.js.map +1 -0
  54. package/dist/fab/impersonate-fetch.d.ts +48 -0
  55. package/dist/fab/impersonate-fetch.d.ts.map +1 -0
  56. package/dist/fab/impersonate-fetch.js +228 -0
  57. package/dist/fab/impersonate-fetch.js.map +1 -0
  58. package/dist/fab/normalize.d.ts +3 -0
  59. package/dist/fab/normalize.d.ts.map +1 -0
  60. package/dist/fab/normalize.js +285 -0
  61. package/dist/fab/normalize.js.map +1 -0
  62. package/dist/fab/schemas.d.ts +10 -0
  63. package/dist/fab/schemas.d.ts.map +1 -0
  64. package/dist/fab/schemas.js +105 -0
  65. package/dist/fab/schemas.js.map +1 -0
  66. package/dist/index.d.ts +3 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +58 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/itch/catalog.d.ts +13 -0
  71. package/dist/itch/catalog.d.ts.map +1 -0
  72. package/dist/itch/catalog.js +50 -0
  73. package/dist/itch/catalog.js.map +1 -0
  74. package/dist/itch/client.d.ts +46 -0
  75. package/dist/itch/client.d.ts.map +1 -0
  76. package/dist/itch/client.js +175 -0
  77. package/dist/itch/client.js.map +1 -0
  78. package/dist/polyhaven/client.d.ts +55 -0
  79. package/dist/polyhaven/client.d.ts.map +1 -0
  80. package/dist/polyhaven/client.js +210 -0
  81. package/dist/polyhaven/client.js.map +1 -0
  82. package/dist/server.d.ts +25 -0
  83. package/dist/server.d.ts.map +1 -0
  84. package/dist/server.js +448 -0
  85. package/dist/server.js.map +1 -0
  86. package/dist/sketchfab/client.d.ts +70 -0
  87. package/dist/sketchfab/client.d.ts.map +1 -0
  88. package/dist/sketchfab/client.js +255 -0
  89. package/dist/sketchfab/client.js.map +1 -0
  90. package/dist/smithsonian/client.d.ts +32 -0
  91. package/dist/smithsonian/client.d.ts.map +1 -0
  92. package/dist/smithsonian/client.js +142 -0
  93. package/dist/smithsonian/client.js.map +1 -0
  94. package/dist/tools/ambientcg.d.ts +296 -0
  95. package/dist/tools/ambientcg.d.ts.map +1 -0
  96. package/dist/tools/ambientcg.js +183 -0
  97. package/dist/tools/ambientcg.js.map +1 -0
  98. package/dist/tools/audio.d.ts +211 -0
  99. package/dist/tools/audio.d.ts.map +1 -0
  100. package/dist/tools/audio.js +156 -0
  101. package/dist/tools/audio.js.map +1 -0
  102. package/dist/tools/bundle.d.ts +237 -0
  103. package/dist/tools/bundle.d.ts.map +1 -0
  104. package/dist/tools/bundle.js +206 -0
  105. package/dist/tools/bundle.js.map +1 -0
  106. package/dist/tools/direct-download.d.ts +53 -0
  107. package/dist/tools/direct-download.d.ts.map +1 -0
  108. package/dist/tools/direct-download.js +68 -0
  109. package/dist/tools/direct-download.js.map +1 -0
  110. package/dist/tools/download-free-asset.d.ts +66 -0
  111. package/dist/tools/download-free-asset.d.ts.map +1 -0
  112. package/dist/tools/download-free-asset.js +60 -0
  113. package/dist/tools/download-free-asset.js.map +1 -0
  114. package/dist/tools/get-asset.d.ts +161 -0
  115. package/dist/tools/get-asset.d.ts.map +1 -0
  116. package/dist/tools/get-asset.js +131 -0
  117. package/dist/tools/get-asset.js.map +1 -0
  118. package/dist/tools/itch.d.ts +120 -0
  119. package/dist/tools/itch.d.ts.map +1 -0
  120. package/dist/tools/itch.js +120 -0
  121. package/dist/tools/itch.js.map +1 -0
  122. package/dist/tools/list-filters.d.ts +127 -0
  123. package/dist/tools/list-filters.d.ts.map +1 -0
  124. package/dist/tools/list-filters.js +68 -0
  125. package/dist/tools/list-filters.js.map +1 -0
  126. package/dist/tools/list-limited-time-free.d.ts +57 -0
  127. package/dist/tools/list-limited-time-free.d.ts.map +1 -0
  128. package/dist/tools/list-limited-time-free.js +47 -0
  129. package/dist/tools/list-limited-time-free.js.map +1 -0
  130. package/dist/tools/polyhaven.d.ts +266 -0
  131. package/dist/tools/polyhaven.d.ts.map +1 -0
  132. package/dist/tools/polyhaven.js +233 -0
  133. package/dist/tools/polyhaven.js.map +1 -0
  134. package/dist/tools/search-assets.d.ts +176 -0
  135. package/dist/tools/search-assets.d.ts.map +1 -0
  136. package/dist/tools/search-assets.js +172 -0
  137. package/dist/tools/search-assets.js.map +1 -0
  138. package/dist/tools/sketchfab.d.ts +325 -0
  139. package/dist/tools/sketchfab.d.ts.map +1 -0
  140. package/dist/tools/sketchfab.js +203 -0
  141. package/dist/tools/sketchfab.js.map +1 -0
  142. package/dist/tools/smithsonian.d.ts +189 -0
  143. package/dist/tools/smithsonian.d.ts.map +1 -0
  144. package/dist/tools/smithsonian.js +189 -0
  145. package/dist/tools/smithsonian.js.map +1 -0
  146. package/dist/tools/source-directory.d.ts +226 -0
  147. package/dist/tools/source-directory.d.ts.map +1 -0
  148. package/dist/tools/source-directory.js +583 -0
  149. package/dist/tools/source-directory.js.map +1 -0
  150. package/package.json +69 -0
package/dist/server.js ADDED
@@ -0,0 +1,448 @@
1
+ import { McpServer } from "@modelcontextprotocol/server";
2
+ import { AmbientCgClient } from "./ambientcg/client.js";
3
+ import { AudioCatalogClient } from "./audio/client.js";
4
+ import { BundleAssetClient } from "./bundle/client.js";
5
+ import { DirectAssetDownloader } from "./download/direct-asset-downloader.js";
6
+ import { FabClient } from "./fab/client.js";
7
+ import { ItchAssetClient } from "./itch/client.js";
8
+ import { PolyHavenClient } from "./polyhaven/client.js";
9
+ import { SketchfabClient } from "./sketchfab/client.js";
10
+ import { SmithsonianClient } from "./smithsonian/client.js";
11
+ import { AssetOutputSchema, createGetAssetHandler, GetAssetInputSchema, } from "./tools/get-asset.js";
12
+ import { createSearchAssetsHandler, SearchOutputSchema, SearchToolInputSchema, } from "./tools/search-assets.js";
13
+ import { createListFiltersHandler, ListFiltersInputSchema, ListFiltersOutputSchema, } from "./tools/list-filters.js";
14
+ import { createListLimitedTimeFreeHandler, ListLimitedTimeFreeInputSchema, ListLimitedTimeFreeOutputSchema, } from "./tools/list-limited-time-free.js";
15
+ import { createDownloadFreeAssetHandler, DownloadFreeAssetInputSchema, DownloadFreeAssetOutputSchema, } from "./tools/download-free-asset.js";
16
+ import { createPolyHavenGetAssetHandler, createPolyHavenListCategoriesHandler, createPolyHavenListFilesHandler, createPolyHavenSearchHandler, PolyHavenGetAssetInputSchema, PolyHavenGetAssetOutputSchema, PolyHavenListCategoriesInputSchema, PolyHavenListCategoriesOutputSchema, PolyHavenListFilesInputSchema, PolyHavenListFilesOutputSchema, PolyHavenSearchInputSchema, PolyHavenSearchOutputSchema, } from "./tools/polyhaven.js";
17
+ import { AmbientCgGetAssetInputSchema, AmbientCgGetAssetOutputSchema, AmbientCgListCategoriesInputSchema, AmbientCgListCategoriesOutputSchema, AmbientCgListFilesInputSchema, AmbientCgListFilesOutputSchema, AmbientCgSearchInputSchema, AmbientCgSearchOutputSchema, createAmbientCgGetAssetHandler, createAmbientCgListCategoriesHandler, createAmbientCgListFilesHandler, createAmbientCgSearchHandler, } from "./tools/ambientcg.js";
18
+ import { createSketchfabGetDownloadsHandler, createSketchfabGetModelHandler, createSketchfabListCategoriesHandler, createSketchfabSearchHandler, SketchfabGetDownloadsInputSchema, SketchfabGetDownloadsOutputSchema, SketchfabGetModelInputSchema, SketchfabGetModelOutputSchema, SketchfabListCategoriesInputSchema, SketchfabListCategoriesOutputSchema, SketchfabSearchInputSchema, SketchfabSearchOutputSchema, } from "./tools/sketchfab.js";
19
+ import { createSmithsonianGetAssetHandler, createSmithsonianListFilesHandler, createSmithsonianSearchHandler, SmithsonianGetAssetInputSchema, SmithsonianGetAssetOutputSchema, SmithsonianListFilesInputSchema, SmithsonianListFilesOutputSchema, SmithsonianSearchInputSchema, SmithsonianSearchOutputSchema, } from "./tools/smithsonian.js";
20
+ import { AudioDownloadInputSchema, AudioDownloadOutputSchema, AudioListSourcesInputSchema, AudioListSourcesOutputSchema, AudioSearchInputSchema, AudioSearchOutputSchema, createAudioDownloadHandler, createAudioListSourcesHandler, createAudioSearchHandler, } from "./tools/audio.js";
21
+ import { AssetListSourcesInputSchema, AssetSearchSourcesInputSchema, AssetSourceListOutputSchema, createAssetListSourcesHandler, createAssetSearchSourcesHandler, } from "./tools/source-directory.js";
22
+ import { createDirectAssetDownloadHandler, DirectAssetDownloadInputSchema, DirectAssetDownloadOutputSchema, } from "./tools/direct-download.js";
23
+ import { createItchDownloadHandler, createItchListDownloadsHandler, ItchDownloadInputSchema, ItchDownloadOutputSchema, ItchListDownloadsInputSchema, ItchListDownloadsOutputSchema, } from "./tools/itch.js";
24
+ import { BundleDownloadAnimationInputSchema, BundleDownloadAnimationOutputSchema, BundleDownloadEntryInputSchema, BundleDownloadEntryOutputSchema, BundleListAnimationsInputSchema, BundleListAnimationsOutputSchema, BundleListEntriesInputSchema, BundleListEntriesOutputSchema, createBundleDownloadAnimationHandler, createBundleDownloadEntryHandler, createBundleListAnimationsHandler, createBundleListEntriesHandler, } from "./tools/bundle.js";
25
+ export function createAssetServer(clients = {
26
+ fab: new FabClient(),
27
+ polyhaven: new PolyHavenClient(),
28
+ ambientcg: new AmbientCgClient(),
29
+ smithsonian: new SmithsonianClient(),
30
+ sketchfab: new SketchfabClient(),
31
+ audio: new AudioCatalogClient(),
32
+ directDownloader: new DirectAssetDownloader(),
33
+ itch: new ItchAssetClient(),
34
+ bundle: new BundleAssetClient({ itch: new ItchAssetClient() }),
35
+ }) {
36
+ const { fab, polyhaven, ambientcg, smithsonian, sketchfab, audio, directDownloader, itch, bundle, } = clients;
37
+ const server = new McpServer({
38
+ name: "threenative-asset-mcp",
39
+ version: "0.4.0",
40
+ });
41
+ server.registerTool("fab_search_assets", {
42
+ title: "Search Fab assets",
43
+ description: "Search public Fab marketplace listings. Free assets are returned by default.",
44
+ inputSchema: SearchToolInputSchema,
45
+ outputSchema: SearchOutputSchema,
46
+ annotations: {
47
+ readOnlyHint: true,
48
+ destructiveHint: false,
49
+ idempotentHint: true,
50
+ openWorldHint: true,
51
+ },
52
+ }, createSearchAssetsHandler(fab));
53
+ server.registerTool("fab_get_asset", {
54
+ title: "Get a Fab asset",
55
+ description: "Get normalized public details and per-license prices for one Fab listing.",
56
+ inputSchema: GetAssetInputSchema,
57
+ outputSchema: AssetOutputSchema,
58
+ annotations: {
59
+ readOnlyHint: true,
60
+ destructiveHint: false,
61
+ idempotentHint: true,
62
+ openWorldHint: true,
63
+ },
64
+ }, createGetAssetHandler(fab));
65
+ server.registerTool("fab_list_filters", {
66
+ title: "List Fab search filters",
67
+ description: "List usable public Fab filter labels and slugs. A warning identifies versioned fallback or stale values.",
68
+ inputSchema: ListFiltersInputSchema,
69
+ outputSchema: ListFiltersOutputSchema,
70
+ annotations: {
71
+ readOnlyHint: true,
72
+ destructiveHint: false,
73
+ idempotentHint: true,
74
+ openWorldHint: true,
75
+ },
76
+ }, createListFiltersHandler(fab));
77
+ server.registerTool("fab_list_limited_time_free", {
78
+ title: "List limited-time-free Fab promotions",
79
+ description: "List Fab's dedicated curated limited-time-free promotions separately from general free search.",
80
+ inputSchema: ListLimitedTimeFreeInputSchema,
81
+ outputSchema: ListLimitedTimeFreeOutputSchema,
82
+ annotations: {
83
+ readOnlyHint: true,
84
+ destructiveHint: false,
85
+ idempotentHint: true,
86
+ openWorldHint: true,
87
+ },
88
+ }, createListLimitedTimeFreeHandler(fab));
89
+ server.registerTool("fab_download_free_asset", {
90
+ title: "Download a free Fab asset file",
91
+ description: "Download one directly available free Fab file into the configured local download directory. This never purchases or adds an asset to a library.",
92
+ inputSchema: DownloadFreeAssetInputSchema,
93
+ outputSchema: DownloadFreeAssetOutputSchema,
94
+ annotations: {
95
+ readOnlyHint: false,
96
+ destructiveHint: false,
97
+ idempotentHint: true,
98
+ openWorldHint: true,
99
+ },
100
+ }, createDownloadFreeAssetHandler(fab));
101
+ server.registerTool("polyhaven_search_assets", {
102
+ title: "Search Poly Haven assets",
103
+ description: "Search CC0 HDRIs, textures, and models from Poly Haven. Results include explicit Poly Haven attribution.",
104
+ inputSchema: PolyHavenSearchInputSchema,
105
+ outputSchema: PolyHavenSearchOutputSchema,
106
+ annotations: {
107
+ readOnlyHint: true,
108
+ destructiveHint: false,
109
+ idempotentHint: true,
110
+ openWorldHint: true,
111
+ },
112
+ }, createPolyHavenSearchHandler(polyhaven));
113
+ server.registerTool("polyhaven_get_asset", {
114
+ title: "Get a Poly Haven asset",
115
+ description: "Get normalized metadata, authorship, dimensions, and CC0 license information for one Poly Haven asset.",
116
+ inputSchema: PolyHavenGetAssetInputSchema,
117
+ outputSchema: PolyHavenGetAssetOutputSchema,
118
+ annotations: {
119
+ readOnlyHint: true,
120
+ destructiveHint: false,
121
+ idempotentHint: true,
122
+ openWorldHint: true,
123
+ },
124
+ }, createPolyHavenGetAssetHandler(polyhaven));
125
+ server.registerTool("polyhaven_list_categories", {
126
+ title: "List Poly Haven categories",
127
+ description: "List Poly Haven category labels and asset counts for HDRIs, textures, or models.",
128
+ inputSchema: PolyHavenListCategoriesInputSchema,
129
+ outputSchema: PolyHavenListCategoriesOutputSchema,
130
+ annotations: {
131
+ readOnlyHint: true,
132
+ destructiveHint: false,
133
+ idempotentHint: true,
134
+ openWorldHint: true,
135
+ },
136
+ }, createPolyHavenListCategoriesHandler(polyhaven));
137
+ server.registerTool("polyhaven_list_files", {
138
+ title: "List Poly Haven asset files",
139
+ description: "List official download URLs, byte sizes, MD5 hashes, and file dependencies for a Poly Haven asset, with format and resolution filters.",
140
+ inputSchema: PolyHavenListFilesInputSchema,
141
+ outputSchema: PolyHavenListFilesOutputSchema,
142
+ annotations: {
143
+ readOnlyHint: true,
144
+ destructiveHint: false,
145
+ idempotentHint: true,
146
+ openWorldHint: true,
147
+ },
148
+ }, createPolyHavenListFilesHandler(polyhaven));
149
+ server.registerTool("ambientcg_search_assets", {
150
+ title: "Search ambientCG assets",
151
+ description: "Search CC0 materials, HDRIs, models, decals, atlases, brushes, terrains, and other ambientCG assets.",
152
+ inputSchema: AmbientCgSearchInputSchema,
153
+ outputSchema: AmbientCgSearchOutputSchema,
154
+ annotations: {
155
+ readOnlyHint: true,
156
+ destructiveHint: false,
157
+ idempotentHint: true,
158
+ openWorldHint: true,
159
+ },
160
+ }, createAmbientCgSearchHandler(ambientcg));
161
+ server.registerTool("ambientcg_get_asset", {
162
+ title: "Get an ambientCG asset",
163
+ description: "Get normalized metadata and CC0 licensing for one ambientCG asset.",
164
+ inputSchema: AmbientCgGetAssetInputSchema,
165
+ outputSchema: AmbientCgGetAssetOutputSchema,
166
+ annotations: {
167
+ readOnlyHint: true,
168
+ destructiveHint: false,
169
+ idempotentHint: true,
170
+ openWorldHint: true,
171
+ },
172
+ }, createAmbientCgGetAssetHandler(ambientcg));
173
+ server.registerTool("ambientcg_list_categories", {
174
+ title: "List ambientCG categories",
175
+ description: "List ambientCG category metadata and asset counts.",
176
+ inputSchema: AmbientCgListCategoriesInputSchema,
177
+ outputSchema: AmbientCgListCategoriesOutputSchema,
178
+ annotations: {
179
+ readOnlyHint: true,
180
+ destructiveHint: false,
181
+ idempotentHint: true,
182
+ openWorldHint: true,
183
+ },
184
+ }, createAmbientCgListCategoriesHandler(ambientcg));
185
+ server.registerTool("ambientcg_list_files", {
186
+ title: "List ambientCG files",
187
+ description: "List official CC0 asset archives with variant attributes, extensions, URLs, and byte sizes.",
188
+ inputSchema: AmbientCgListFilesInputSchema,
189
+ outputSchema: AmbientCgListFilesOutputSchema,
190
+ annotations: {
191
+ readOnlyHint: true,
192
+ destructiveHint: false,
193
+ idempotentHint: true,
194
+ openWorldHint: true,
195
+ },
196
+ }, createAmbientCgListFilesHandler(ambientcg));
197
+ server.registerTool("smithsonian_search_assets", {
198
+ title: "Search Smithsonian 3D assets",
199
+ description: "Search Smithsonian Open Access 3D models and file variants by text, type, quality, and owning unit.",
200
+ inputSchema: SmithsonianSearchInputSchema,
201
+ outputSchema: SmithsonianSearchOutputSchema,
202
+ annotations: {
203
+ readOnlyHint: true,
204
+ destructiveHint: false,
205
+ idempotentHint: true,
206
+ openWorldHint: true,
207
+ },
208
+ }, createSmithsonianSearchHandler(smithsonian));
209
+ server.registerTool("smithsonian_get_asset", {
210
+ title: "Get a Smithsonian 3D asset",
211
+ description: "Get a normalized summary of one Smithsonian Open Access 3D model.",
212
+ inputSchema: SmithsonianGetAssetInputSchema,
213
+ outputSchema: SmithsonianGetAssetOutputSchema,
214
+ annotations: {
215
+ readOnlyHint: true,
216
+ destructiveHint: false,
217
+ idempotentHint: true,
218
+ openWorldHint: true,
219
+ },
220
+ }, createSmithsonianGetAssetHandler(smithsonian));
221
+ server.registerTool("smithsonian_list_files", {
222
+ title: "List Smithsonian 3D files",
223
+ description: "List direct Smithsonian Open Access files with format, quality, compression, and orientation metadata.",
224
+ inputSchema: SmithsonianListFilesInputSchema,
225
+ outputSchema: SmithsonianListFilesOutputSchema,
226
+ annotations: {
227
+ readOnlyHint: true,
228
+ destructiveHint: false,
229
+ idempotentHint: true,
230
+ openWorldHint: true,
231
+ },
232
+ }, createSmithsonianListFilesHandler(smithsonian));
233
+ server.registerTool("sketchfab_search_models", {
234
+ title: "Search Sketchfab models",
235
+ description: "Search public Sketchfab models and return per-model license, author, geometry, and archive metadata.",
236
+ inputSchema: SketchfabSearchInputSchema,
237
+ outputSchema: SketchfabSearchOutputSchema,
238
+ annotations: {
239
+ readOnlyHint: true,
240
+ destructiveHint: false,
241
+ idempotentHint: true,
242
+ openWorldHint: true,
243
+ },
244
+ }, createSketchfabSearchHandler(sketchfab));
245
+ server.registerTool("sketchfab_get_model", {
246
+ title: "Get a Sketchfab model",
247
+ description: "Get public metadata and explicit Creative Commons requirements for one Sketchfab model.",
248
+ inputSchema: SketchfabGetModelInputSchema,
249
+ outputSchema: SketchfabGetModelOutputSchema,
250
+ annotations: {
251
+ readOnlyHint: true,
252
+ destructiveHint: false,
253
+ idempotentHint: true,
254
+ openWorldHint: true,
255
+ },
256
+ }, createSketchfabGetModelHandler(sketchfab));
257
+ server.registerTool("sketchfab_list_categories", {
258
+ title: "List Sketchfab categories",
259
+ description: "List public Sketchfab model category names and slugs.",
260
+ inputSchema: SketchfabListCategoriesInputSchema,
261
+ outputSchema: SketchfabListCategoriesOutputSchema,
262
+ annotations: {
263
+ readOnlyHint: true,
264
+ destructiveHint: false,
265
+ idempotentHint: true,
266
+ openWorldHint: true,
267
+ },
268
+ }, createSketchfabListCategoriesHandler(sketchfab));
269
+ server.registerTool("sketchfab_get_downloads", {
270
+ title: "Get Sketchfab download URLs",
271
+ description: "Get temporary download URLs for a downloadable Sketchfab model using the user's SKETCHFAB_API_TOKEN. This does not store credentials or download files.",
272
+ inputSchema: SketchfabGetDownloadsInputSchema,
273
+ outputSchema: SketchfabGetDownloadsOutputSchema,
274
+ annotations: {
275
+ readOnlyHint: true,
276
+ destructiveHint: false,
277
+ idempotentHint: false,
278
+ openWorldHint: true,
279
+ },
280
+ }, createSketchfabGetDownloadsHandler(sketchfab));
281
+ server.registerTool("audio_list_sources", {
282
+ title: "List game-audio sources",
283
+ description: "List supported audio libraries, best uses, licensing caveats, browse pages, and whether this MCP has a curated direct-download contract.",
284
+ inputSchema: AudioListSourcesInputSchema,
285
+ outputSchema: AudioListSourcesOutputSchema,
286
+ annotations: {
287
+ readOnlyHint: true,
288
+ destructiveHint: false,
289
+ idempotentHint: true,
290
+ openWorldHint: false,
291
+ },
292
+ }, createAudioListSourcesHandler(audio));
293
+ server.registerTool("audio_search_assets", {
294
+ title: "Search downloadable game-audio packs",
295
+ description: "Search the curated catalog of official audio packs with stable direct URLs and explicit license metadata. Use audio_list_sources for broader provider-page discovery.",
296
+ inputSchema: AudioSearchInputSchema,
297
+ outputSchema: AudioSearchOutputSchema,
298
+ annotations: {
299
+ readOnlyHint: true,
300
+ destructiveHint: false,
301
+ idempotentHint: true,
302
+ openWorldHint: false,
303
+ },
304
+ }, createAudioSearchHandler(audio));
305
+ server.registerTool("audio_download_asset", {
306
+ title: "Download a curated game-audio pack",
307
+ description: "Download one catalog asset by ID into the dedicated audio directory after explicit license acknowledgement. URLs and redirects are restricted to curated official hosts; existing files are never overwritten.",
308
+ inputSchema: AudioDownloadInputSchema,
309
+ outputSchema: AudioDownloadOutputSchema,
310
+ annotations: {
311
+ readOnlyHint: false,
312
+ destructiveHint: false,
313
+ idempotentHint: true,
314
+ openWorldHint: true,
315
+ },
316
+ }, createAudioDownloadHandler(audio));
317
+ server.registerTool("itch_list_downloads", {
318
+ title: "List curated itch.io pack downloads",
319
+ description: "Resolve a fresh no-account itch.io download page and list its upload IDs, names, sizes, license, and safe suggested filenames. Signed page tokens are never returned.",
320
+ inputSchema: ItchListDownloadsInputSchema,
321
+ outputSchema: ItchListDownloadsOutputSchema,
322
+ annotations: {
323
+ readOnlyHint: true,
324
+ destructiveHint: false,
325
+ idempotentHint: false,
326
+ openWorldHint: true,
327
+ },
328
+ }, createItchListDownloadsHandler(itch));
329
+ server.registerTool("itch_download_asset", {
330
+ title: "Download a curated itch.io asset pack",
331
+ description: "Resolve a fresh signed itch.io file URL for a listed upload and stream it into guarded local storage after explicit license acknowledgement. Signed URLs are not exposed in the MCP result.",
332
+ inputSchema: ItchDownloadInputSchema,
333
+ outputSchema: ItchDownloadOutputSchema,
334
+ annotations: {
335
+ readOnlyHint: false,
336
+ destructiveHint: false,
337
+ idempotentHint: true,
338
+ openWorldHint: true,
339
+ },
340
+ }, createItchDownloadHandler(itch));
341
+ server.registerTool("asset_list_bundle_entries", {
342
+ title: "List files inside a remote asset bundle",
343
+ description: "Inspect a curated itch.io ZIP through HTTP byte ranges without downloading the whole archive. Returns individual entry paths and compressed/uncompressed sizes; signed URLs are never exposed.",
344
+ inputSchema: BundleListEntriesInputSchema,
345
+ outputSchema: BundleListEntriesOutputSchema,
346
+ annotations: {
347
+ readOnlyHint: true,
348
+ destructiveHint: false,
349
+ idempotentHint: false,
350
+ openWorldHint: true,
351
+ },
352
+ }, createBundleListEntriesHandler(bundle));
353
+ server.registerTool("asset_download_bundle_entry", {
354
+ title: "Download one file from a remote asset bundle",
355
+ description: "Extract one selected ZIP entry through HTTP byte ranges, cache it locally, and avoid downloading unrelated bundle contents. Requires explicit license acknowledgement.",
356
+ inputSchema: BundleDownloadEntryInputSchema,
357
+ outputSchema: BundleDownloadEntryOutputSchema,
358
+ annotations: {
359
+ readOnlyHint: false,
360
+ destructiveHint: false,
361
+ idempotentHint: true,
362
+ openWorldHint: true,
363
+ },
364
+ }, createBundleDownloadEntryHandler(bundle));
365
+ server.registerTool("asset_list_bundle_animations", {
366
+ title: "List animation clips inside a bundled GLB",
367
+ description: "Range-extract and cache only the aggregate GLB from a curated bundle, then return its named animation clips. The standard non-root-motion GLB is selected automatically when entryPath is omitted.",
368
+ inputSchema: BundleListAnimationsInputSchema,
369
+ outputSchema: BundleListAnimationsOutputSchema,
370
+ annotations: {
371
+ readOnlyHint: true,
372
+ destructiveHint: false,
373
+ idempotentHint: true,
374
+ openWorldHint: true,
375
+ },
376
+ }, createBundleListAnimationsHandler(bundle));
377
+ server.registerTool("asset_download_bundle_animation", {
378
+ title: "Download one animation from a bundled GLB",
379
+ description: "Export one named animation as a small standalone GLB after range-fetching only the aggregate source entry. Unrelated clips, meshes, materials, and textures are removed; cached source entries are reused.",
380
+ inputSchema: BundleDownloadAnimationInputSchema,
381
+ outputSchema: BundleDownloadAnimationOutputSchema,
382
+ annotations: {
383
+ readOnlyHint: false,
384
+ destructiveHint: false,
385
+ idempotentHint: true,
386
+ openWorldHint: true,
387
+ },
388
+ }, createBundleDownloadAnimationHandler(bundle));
389
+ server.registerTool("asset_list_sources", {
390
+ title: "List recommended asset sources",
391
+ description: "List agent-ready sources by default: every result has an MCP download path requiring no manual browser, login, checkout, or paywall. Set agentReadyOnly=false to inspect the broader research directory, including package-manager, Git, authenticated, and provider-page sources.",
392
+ inputSchema: AssetListSourcesInputSchema,
393
+ outputSchema: AssetSourceListOutputSchema,
394
+ annotations: {
395
+ readOnlyHint: true,
396
+ destructiveHint: false,
397
+ idempotentHint: true,
398
+ openWorldHint: false,
399
+ },
400
+ }, createAssetListSourcesHandler());
401
+ server.registerTool("asset_search_sources", {
402
+ title: "Search recommended asset sources",
403
+ description: "Search agent-ready asset sources by category, license, access mode, or text query. Manual/provider-page sources are excluded unless agentReadyOnly=false.",
404
+ inputSchema: AssetSearchSourcesInputSchema,
405
+ outputSchema: AssetSourceListOutputSchema,
406
+ annotations: {
407
+ readOnlyHint: true,
408
+ destructiveHint: false,
409
+ idempotentHint: true,
410
+ openWorldHint: false,
411
+ },
412
+ }, createAssetSearchSourcesHandler());
413
+ server.registerTool("asset_download_file", {
414
+ title: "Download a direct provider asset file",
415
+ description: "Download a file URL returned by Poly Haven, ambientCG, or Smithsonian MCP tools, or a curated Game-icons.net/Kenney direct ZIP, into guarded local storage after license acknowledgement. Provider hosts and URL shapes are allowlisted, redirects are revalidated, files are streamed with a byte cap, and existing files are never overwritten.",
416
+ inputSchema: DirectAssetDownloadInputSchema,
417
+ outputSchema: DirectAssetDownloadOutputSchema,
418
+ annotations: {
419
+ readOnlyHint: false,
420
+ destructiveHint: false,
421
+ idempotentHint: true,
422
+ openWorldHint: true,
423
+ },
424
+ }, createDirectAssetDownloadHandler(directDownloader));
425
+ const closeServer = server.close.bind(server);
426
+ server.close = async () => {
427
+ await Promise.allSettled([closeServer(), fab.close()]);
428
+ };
429
+ server.server.onclose = () => {
430
+ void fab.close();
431
+ };
432
+ return server;
433
+ }
434
+ /** @deprecated Use createAssetServer to register every asset provider. */
435
+ export function createFabServer(client = new FabClient()) {
436
+ return createAssetServer({
437
+ fab: client,
438
+ polyhaven: new PolyHavenClient(),
439
+ ambientcg: new AmbientCgClient(),
440
+ smithsonian: new SmithsonianClient(),
441
+ sketchfab: new SketchfabClient(),
442
+ audio: new AudioCatalogClient(),
443
+ directDownloader: new DirectAssetDownloader(),
444
+ itch: new ItchAssetClient(),
445
+ bundle: new BundleAssetClient({ itch: new ItchAssetClient() }),
446
+ });
447
+ }
448
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ export interface SketchfabArchive {
2
+ format: string;
3
+ sizeBytes?: number;
4
+ textureCount?: number;
5
+ textureMaxResolution?: number;
6
+ faceCount?: number;
7
+ vertexCount?: number;
8
+ url?: string;
9
+ expiresInSeconds?: number;
10
+ }
11
+ export interface SketchfabModel {
12
+ id: string;
13
+ name: string;
14
+ description?: string;
15
+ viewerUrl: string;
16
+ embedUrl?: string;
17
+ thumbnailUrl?: string;
18
+ author?: {
19
+ id?: string;
20
+ username: string;
21
+ displayName?: string;
22
+ profileUrl?: string;
23
+ };
24
+ tags: string[];
25
+ categories: string[];
26
+ license?: {
27
+ label: string;
28
+ slug?: string;
29
+ url?: string;
30
+ requirements?: string;
31
+ };
32
+ downloadable: boolean;
33
+ ageRestricted?: boolean;
34
+ animated: boolean;
35
+ faceCount?: number;
36
+ vertexCount?: number;
37
+ viewCount?: number;
38
+ likeCount?: number;
39
+ downloadCount?: number;
40
+ publishedAt?: string;
41
+ updatedAt?: string;
42
+ archives: SketchfabArchive[];
43
+ }
44
+ export interface SketchfabSearchResult {
45
+ models: SketchfabModel[];
46
+ nextCursor?: string;
47
+ }
48
+ export declare class SketchfabClientError extends Error {
49
+ readonly code: "SKETCHFAB_INVALID_INPUT" | "SKETCHFAB_NOT_FOUND" | "SKETCHFAB_AUTH_REQUIRED" | "SKETCHFAB_ACCESS_DENIED" | "SKETCHFAB_RATE_LIMITED" | "SKETCHFAB_UPSTREAM_UNAVAILABLE" | "SKETCHFAB_UPSTREAM_CHANGED";
50
+ readonly retryable: boolean;
51
+ constructor(code: "SKETCHFAB_INVALID_INPUT" | "SKETCHFAB_NOT_FOUND" | "SKETCHFAB_AUTH_REQUIRED" | "SKETCHFAB_ACCESS_DENIED" | "SKETCHFAB_RATE_LIMITED" | "SKETCHFAB_UPSTREAM_UNAVAILABLE" | "SKETCHFAB_UPSTREAM_CHANGED", message: string, retryable?: boolean);
52
+ }
53
+ type FetchLike = typeof fetch;
54
+ export declare class SketchfabClient {
55
+ private readonly fetchImpl;
56
+ private readonly token?;
57
+ constructor(fetchImpl?: FetchLike, options?: {
58
+ token?: string | null;
59
+ });
60
+ private request;
61
+ search(params: URLSearchParams): Promise<SketchfabSearchResult>;
62
+ getModel(id: string): Promise<SketchfabModel>;
63
+ getDownloads(id: string): Promise<SketchfabArchive[]>;
64
+ listCategories(): Promise<Array<{
65
+ name: string;
66
+ slug: string;
67
+ }>>;
68
+ }
69
+ export {};
70
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/sketchfab/client.ts"],"names":[],"mappings":"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"}