@llmindset/hf-mcp 0.2.25 → 0.2.26

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/dist/index.d.ts CHANGED
@@ -17,6 +17,7 @@ export * from './paper-summary.js';
17
17
  export * from './docs-search/docs-semantic-search.js';
18
18
  export * from './docs-search/doc-fetch.js';
19
19
  export * from './readme-utils.js';
20
+ export * from './use-space.js';
20
21
  export * from './types/tool-result.js';
21
22
  export * from './tool-ids.js';
22
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAGlC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,wBAAwB,CAAC;AAGvC,cAAc,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -17,6 +17,7 @@ export * from './paper-summary.js';
17
17
  export * from './docs-search/docs-semantic-search.js';
18
18
  export * from './docs-search/doc-fetch.js';
19
19
  export * from './readme-utils.js';
20
+ export * from './use-space.js';
20
21
  export * from './types/tool-result.js';
21
22
  export * from './tool-ids.js';
22
23
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAGlC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,wBAAwB,CAAC;AAGvC,cAAc,eAAe,CAAC"}
@@ -8,20 +8,21 @@ export declare const HUB_INSPECT_TOOL_ID: "hub_repo_details";
8
8
  export declare const DUPLICATE_SPACE_TOOL_ID: "duplicate_space";
9
9
  export declare const SPACE_INFO_TOOL_ID: "space_info";
10
10
  export declare const SPACE_FILES_TOOL_ID: "space_files";
11
+ export declare const USE_SPACE_TOOL_ID: "use_space";
11
12
  export declare const DOCS_SEMANTIC_SEARCH_TOOL_ID: "hf_doc_search";
12
13
  export declare const DOC_FETCH_TOOL_ID: "hf_doc_fetch";
13
14
  export declare const USER_SUMMARY_PROMPT_ID: "User Summary";
14
15
  export declare const PAPER_SUMMARY_PROMPT_ID: "Paper Summary";
15
16
  export declare const MODEL_DETAIL_PROMPT_ID: string;
16
17
  export declare const DATASET_DETAIL_PROMPT_ID: string;
17
- export declare const ALL_BUILTIN_TOOL_IDS: readonly ["space_search", "model_search", "model_details", "paper_search", "dataset_search", "dataset_details", "hub_repo_details", "duplicate_space", "space_info", "space_files", "hf_doc_search", "hf_doc_fetch"];
18
+ export declare const ALL_BUILTIN_TOOL_IDS: readonly ["space_search", "model_search", "model_details", "paper_search", "dataset_search", "dataset_details", "hub_repo_details", "duplicate_space", "space_info", "space_files", "hf_doc_search", "hf_doc_fetch", "use_space"];
18
19
  export declare const TOOL_ID_GROUPS: {
19
20
  readonly search: readonly ["space_search", "model_search", "dataset_search", "paper_search", "hf_doc_search"];
20
- readonly spaces: readonly ["space_search", "duplicate_space", "space_info", "space_files"];
21
+ readonly spaces: readonly ["space_search", "duplicate_space", "space_info", "space_files", "use_space"];
21
22
  readonly detail: readonly ["model_details", "dataset_details", "hub_repo_details"];
22
23
  readonly docs: readonly ["hf_doc_search", "hf_doc_fetch"];
23
24
  readonly hf_api: readonly ["space_search", "model_search", "dataset_search", "paper_search", "hub_repo_details", "hf_doc_search"];
24
- readonly all: readonly ["space_search", "model_search", "model_details", "paper_search", "dataset_search", "dataset_details", "hub_repo_details", "duplicate_space", "space_info", "space_files", "hf_doc_search", "hf_doc_fetch"];
25
+ readonly all: readonly ["space_search", "model_search", "model_details", "paper_search", "dataset_search", "dataset_details", "hub_repo_details", "duplicate_space", "space_info", "space_files", "hf_doc_search", "hf_doc_fetch", "use_space"];
25
26
  };
26
27
  export type BuiltinToolId = (typeof ALL_BUILTIN_TOOL_IDS)[number];
27
28
  export declare function isValidBuiltinToolId(toolId: string): toolId is BuiltinToolId;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-ids.d.ts","sourceRoot":"","sources":["../src/tool-ids.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,oBAAoB,gBAAmC,CAAC;AACrE,eAAO,MAAM,oBAAoB,gBAAgC,CAAC;AAClE,eAAO,MAAM,oBAAoB,iBAAgC,CAAC;AAClE,eAAO,MAAM,oBAAoB,gBAAgC,CAAC;AAClE,eAAO,MAAM,sBAAsB,kBAAkC,CAAC;AACtE,eAAO,MAAM,sBAAsB,mBAAkC,CAAC;AACtE,eAAO,MAAM,mBAAmB,oBAA+B,CAAC;AAChE,eAAO,MAAM,uBAAuB,mBAAmC,CAAC;AACxE,eAAO,MAAM,kBAAkB,cAA8B,CAAC;AAC9D,eAAO,MAAM,mBAAmB,eAA+B,CAAC;AAChE,eAAO,MAAM,4BAA4B,iBAAmC,CAAC;AAC7E,eAAO,MAAM,iBAAiB,gBAAwB,CAAC;AACvD,eAAO,MAAM,sBAAsB,gBAAkC,CAAC;AACtE,eAAO,MAAM,uBAAuB,iBAAmC,CAAC;AACxE,eAAO,MAAM,sBAAsB,QAAkC,CAAC;AACtE,eAAO,MAAM,wBAAwB,QAAoC,CAAC;AAG1E,eAAO,MAAM,oBAAoB,sNAavB,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;;;CAoBjB,CAAC;AAGX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAGlE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,aAAa,CAE5E"}
1
+ {"version":3,"file":"tool-ids.d.ts","sourceRoot":"","sources":["../src/tool-ids.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,oBAAoB,gBAAmC,CAAC;AACrE,eAAO,MAAM,oBAAoB,gBAAgC,CAAC;AAClE,eAAO,MAAM,oBAAoB,iBAAgC,CAAC;AAClE,eAAO,MAAM,oBAAoB,gBAAgC,CAAC;AAClE,eAAO,MAAM,sBAAsB,kBAAkC,CAAC;AACtE,eAAO,MAAM,sBAAsB,mBAAkC,CAAC;AACtE,eAAO,MAAM,mBAAmB,oBAA+B,CAAC;AAChE,eAAO,MAAM,uBAAuB,mBAAmC,CAAC;AACxE,eAAO,MAAM,kBAAkB,cAA8B,CAAC;AAC9D,eAAO,MAAM,mBAAmB,eAA+B,CAAC;AAChE,eAAO,MAAM,iBAAiB,aAA6B,CAAC;AAC5D,eAAO,MAAM,4BAA4B,iBAAmC,CAAC;AAC7E,eAAO,MAAM,iBAAiB,gBAAwB,CAAC;AACvD,eAAO,MAAM,sBAAsB,gBAAkC,CAAC;AACtE,eAAO,MAAM,uBAAuB,iBAAmC,CAAC;AACxE,eAAO,MAAM,sBAAsB,QAAkC,CAAC;AACtE,eAAO,MAAM,wBAAwB,QAAoC,CAAC;AAG1E,eAAO,MAAM,oBAAoB,mOAcvB,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;;;CAoBjB,CAAC;AAGX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAGlE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,aAAa,CAE5E"}
package/dist/tool-ids.js CHANGED
@@ -1,4 +1,4 @@
1
- import { SEMANTIC_SEARCH_TOOL_CONFIG, MODEL_SEARCH_TOOL_CONFIG, MODEL_DETAIL_TOOL_CONFIG, MODEL_DETAIL_PROMPT_CONFIG, PAPER_SEARCH_TOOL_CONFIG, DATASET_SEARCH_TOOL_CONFIG, DATASET_DETAIL_TOOL_CONFIG, DATASET_DETAIL_PROMPT_CONFIG, HUB_INSPECT_TOOL_CONFIG, DUPLICATE_SPACE_TOOL_CONFIG, SPACE_INFO_TOOL_CONFIG, SPACE_FILES_TOOL_CONFIG, USER_SUMMARY_PROMPT_CONFIG, PAPER_SUMMARY_PROMPT_CONFIG, DOCS_SEMANTIC_SEARCH_CONFIG, DOC_FETCH_CONFIG, } from './index.js';
1
+ import { SEMANTIC_SEARCH_TOOL_CONFIG, MODEL_SEARCH_TOOL_CONFIG, MODEL_DETAIL_TOOL_CONFIG, MODEL_DETAIL_PROMPT_CONFIG, PAPER_SEARCH_TOOL_CONFIG, DATASET_SEARCH_TOOL_CONFIG, DATASET_DETAIL_TOOL_CONFIG, DATASET_DETAIL_PROMPT_CONFIG, HUB_INSPECT_TOOL_CONFIG, DUPLICATE_SPACE_TOOL_CONFIG, SPACE_INFO_TOOL_CONFIG, SPACE_FILES_TOOL_CONFIG, USER_SUMMARY_PROMPT_CONFIG, PAPER_SUMMARY_PROMPT_CONFIG, DOCS_SEMANTIC_SEARCH_CONFIG, DOC_FETCH_CONFIG, USE_SPACE_TOOL_CONFIG, } from './index.js';
2
2
  export const SPACE_SEARCH_TOOL_ID = SEMANTIC_SEARCH_TOOL_CONFIG.name;
3
3
  export const MODEL_SEARCH_TOOL_ID = MODEL_SEARCH_TOOL_CONFIG.name;
4
4
  export const MODEL_DETAIL_TOOL_ID = MODEL_DETAIL_TOOL_CONFIG.name;
@@ -9,6 +9,7 @@ export const HUB_INSPECT_TOOL_ID = HUB_INSPECT_TOOL_CONFIG.name;
9
9
  export const DUPLICATE_SPACE_TOOL_ID = DUPLICATE_SPACE_TOOL_CONFIG.name;
10
10
  export const SPACE_INFO_TOOL_ID = SPACE_INFO_TOOL_CONFIG.name;
11
11
  export const SPACE_FILES_TOOL_ID = SPACE_FILES_TOOL_CONFIG.name;
12
+ export const USE_SPACE_TOOL_ID = USE_SPACE_TOOL_CONFIG.name;
12
13
  export const DOCS_SEMANTIC_SEARCH_TOOL_ID = DOCS_SEMANTIC_SEARCH_CONFIG.name;
13
14
  export const DOC_FETCH_TOOL_ID = DOC_FETCH_CONFIG.name;
14
15
  export const USER_SUMMARY_PROMPT_ID = USER_SUMMARY_PROMPT_CONFIG.name;
@@ -28,6 +29,7 @@ export const ALL_BUILTIN_TOOL_IDS = [
28
29
  SPACE_FILES_TOOL_ID,
29
30
  DOCS_SEMANTIC_SEARCH_TOOL_ID,
30
31
  DOC_FETCH_TOOL_ID,
32
+ USE_SPACE_TOOL_ID,
31
33
  ];
32
34
  export const TOOL_ID_GROUPS = {
33
35
  search: [
@@ -37,7 +39,7 @@ export const TOOL_ID_GROUPS = {
37
39
  PAPER_SEARCH_TOOL_ID,
38
40
  DOCS_SEMANTIC_SEARCH_TOOL_ID,
39
41
  ],
40
- spaces: [SPACE_SEARCH_TOOL_ID, DUPLICATE_SPACE_TOOL_ID, SPACE_INFO_TOOL_ID, SPACE_FILES_TOOL_ID],
42
+ spaces: [SPACE_SEARCH_TOOL_ID, DUPLICATE_SPACE_TOOL_ID, SPACE_INFO_TOOL_ID, SPACE_FILES_TOOL_ID, USE_SPACE_TOOL_ID],
41
43
  detail: [MODEL_DETAIL_TOOL_ID, DATASET_DETAIL_TOOL_ID, HUB_INSPECT_TOOL_ID],
42
44
  docs: [DOCS_SEMANTIC_SEARCH_TOOL_ID, DOC_FETCH_TOOL_ID],
43
45
  hf_api: [
@@ -1 +1 @@
1
- {"version":3,"file":"tool-ids.js","sourceRoot":"","sources":["../src/tool-ids.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,gBAAgB,GAChB,MAAM,YAAY,CAAC;AAGpB,MAAM,CAAC,MAAM,oBAAoB,GAAG,2BAA2B,CAAC,IAAI,CAAC;AACrE,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,IAAI,CAAC;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,IAAI,CAAC;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,IAAI,CAAC;AAClE,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,IAAI,CAAC;AACtE,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,IAAI,CAAC;AACtE,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,IAAI,CAAC;AAChE,MAAM,CAAC,MAAM,uBAAuB,GAAG,2BAA2B,CAAC,IAAI,CAAC;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,IAAI,CAAC;AAC9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,IAAI,CAAC;AAChE,MAAM,CAAC,MAAM,4BAA4B,GAAG,2BAA2B,CAAC,IAAI,CAAC;AAC7E,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC;AACvD,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,IAAI,CAAC;AACtE,MAAM,CAAC,MAAM,uBAAuB,GAAG,2BAA2B,CAAC,IAAI,CAAC;AACxE,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,IAAI,CAAC;AACtE,MAAM,CAAC,MAAM,wBAAwB,GAAG,4BAA4B,CAAC,IAAI,CAAC;AAG1E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IACnC,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,sBAAsB;IACtB,sBAAsB;IACtB,mBAAmB;IACnB,uBAAuB;IACvB,kBAAkB;IAClB,mBAAmB;IACnB,4BAA4B;IAC5B,iBAAiB;CACR,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,MAAM,EAAE;QACP,oBAAoB;QACpB,oBAAoB;QACpB,sBAAsB;QACtB,oBAAoB;QACpB,4BAA4B;KACnB;IACV,MAAM,EAAE,CAAC,oBAAoB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,mBAAmB,CAAU;IACzG,MAAM,EAAE,CAAC,oBAAoB,EAAE,sBAAsB,EAAE,mBAAmB,CAAU;IACpF,IAAI,EAAE,CAAC,4BAA4B,EAAE,iBAAiB,CAAU;IAChE,MAAM,EAAE;QACP,oBAAoB;QACpB,oBAAoB;QACpB,sBAAsB;QACtB,oBAAoB;QACpB,mBAAmB;QACnB,4BAA4B;KACnB;IACV,GAAG,EAAE,CAAC,GAAG,oBAAoB,CAAU;CAC9B,CAAC;AAMX,MAAM,UAAU,oBAAoB,CAAC,MAAc;IAClD,OAAQ,oBAA0C,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"tool-ids.js","sourceRoot":"","sources":["../src/tool-ids.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,gBAAgB,EAChB,qBAAqB,GACrB,MAAM,YAAY,CAAC;AAGpB,MAAM,CAAC,MAAM,oBAAoB,GAAG,2BAA2B,CAAC,IAAI,CAAC;AACrE,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,IAAI,CAAC;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,IAAI,CAAC;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,IAAI,CAAC;AAClE,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,IAAI,CAAC;AACtE,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,IAAI,CAAC;AACtE,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,IAAI,CAAC;AAChE,MAAM,CAAC,MAAM,uBAAuB,GAAG,2BAA2B,CAAC,IAAI,CAAC;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,IAAI,CAAC;AAC9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,IAAI,CAAC;AAChE,MAAM,CAAC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,IAAI,CAAC;AAC5D,MAAM,CAAC,MAAM,4BAA4B,GAAG,2BAA2B,CAAC,IAAI,CAAC;AAC7E,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC;AACvD,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,IAAI,CAAC;AACtE,MAAM,CAAC,MAAM,uBAAuB,GAAG,2BAA2B,CAAC,IAAI,CAAC;AACxE,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,IAAI,CAAC;AACtE,MAAM,CAAC,MAAM,wBAAwB,GAAG,4BAA4B,CAAC,IAAI,CAAC;AAG1E,MAAM,CAAC,MAAM,oBAAoB,GAAG;IACnC,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,sBAAsB;IACtB,sBAAsB;IACtB,mBAAmB;IACnB,uBAAuB;IACvB,kBAAkB;IAClB,mBAAmB;IACnB,4BAA4B;IAC5B,iBAAiB;IACjB,iBAAiB;CACR,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,MAAM,EAAE;QACP,oBAAoB;QACpB,oBAAoB;QACpB,sBAAsB;QACtB,oBAAoB;QACpB,4BAA4B;KACnB;IACV,MAAM,EAAE,CAAC,oBAAoB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,CAAU;IAC5H,MAAM,EAAE,CAAC,oBAAoB,EAAE,sBAAsB,EAAE,mBAAmB,CAAU;IACpF,IAAI,EAAE,CAAC,4BAA4B,EAAE,iBAAiB,CAAU;IAChE,MAAM,EAAE;QACP,oBAAoB;QACpB,oBAAoB;QACpB,sBAAsB;QACtB,oBAAoB;QACpB,mBAAmB;QACnB,4BAA4B;KACnB;IACV,GAAG,EAAE,CAAC,GAAG,oBAAoB,CAAU;CAC9B,CAAC;AAMX,MAAM,UAAU,oBAAoB,CAAC,MAAc;IAClD,OAAQ,oBAA0C,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrE,CAAC"}
@@ -0,0 +1,37 @@
1
+ declare module '@mcp-ui/server' {
2
+ interface HTMLTextContent {
3
+ uri: string;
4
+ mimeType: string;
5
+ text: string;
6
+ }
7
+ interface Base64BlobContent {
8
+ uri: string;
9
+ mimeType: string;
10
+ blob: string;
11
+ }
12
+ interface UIResource {
13
+ type: 'resource';
14
+ resource: HTMLTextContent | Base64BlobContent;
15
+ }
16
+ interface CreateUIResourceOptions {
17
+ uri: string;
18
+ encoding: 'text' | 'blob';
19
+ content: {
20
+ type: 'rawHtml';
21
+ htmlString: string;
22
+ } | {
23
+ type: 'externalUrl';
24
+ iframeUrl: string;
25
+ } | {
26
+ type: 'remoteDom';
27
+ script: string;
28
+ framework?: string;
29
+ };
30
+ uiMetadata?: {
31
+ 'preferred-frame-size'?: [string, string];
32
+ };
33
+ }
34
+ function createUIResource(options: CreateUIResourceOptions): UIResource;
35
+ }
36
+ export {};
37
+ //# sourceMappingURL=mcp-ui-server-shim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-ui-server-shim.d.ts","sourceRoot":"","sources":["../../src/types/mcp-ui-server-shim.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,gBAAgB,CAAC;IAC/B,UAAiB,eAAe;QAC/B,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACb;IAED,UAAiB,iBAAiB;QACjC,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACb;IAED,UAAiB,UAAU;QAC1B,IAAI,EAAE,UAAU,CAAC;QACjB,QAAQ,EAAE,eAAe,GAAG,iBAAiB,CAAC;KAC9C;IAED,UAAiB,uBAAuB;QACvC,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;QAC1B,OAAO,EACJ;YAAE,IAAI,EAAE,SAAS,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,GACvC;YAAE,IAAI,EAAE,aAAa,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,GAC1C;YAAE,IAAI,EAAE,WAAW,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7D,UAAU,CAAC,EAAE;YACZ,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAC1C,CAAC;KACF;IAED,SAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,UAAU,CAAC;CAC/E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mcp-ui-server-shim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-ui-server-shim.js","sourceRoot":"","sources":["../../src/types/mcp-ui-server-shim.ts"],"names":[],"mappings":""}
@@ -0,0 +1,43 @@
1
+ import { z } from 'zod';
2
+ import { HfApiCall } from './hf-api-call.js';
3
+ import type { ToolResult } from './types/tool-result.js';
4
+ import './types/mcp-ui-server-shim.js';
5
+ interface UseSpaceResult {
6
+ [x: string]: unknown;
7
+ content: Array<{
8
+ type: 'text';
9
+ text: string;
10
+ } | {
11
+ type: 'resource';
12
+ resource: any;
13
+ }>;
14
+ metadata: ToolResult;
15
+ }
16
+ export interface UseSpaceParams {
17
+ space_id: string;
18
+ }
19
+ export declare const USE_SPACE_TOOL_CONFIG: {
20
+ readonly name: "use_space";
21
+ readonly description: "Give the User access to a Hugging Face Space with mcp_ui. This tool will return a link accessible to the User that may not be visible to the Assistant";
22
+ readonly schema: z.ZodObject<{
23
+ space_id: z.ZodString;
24
+ }, "strip", z.ZodTypeAny, {
25
+ space_id: string;
26
+ }, {
27
+ space_id: string;
28
+ }>;
29
+ readonly annotations: {
30
+ readonly title: "Use Hugging Face Space";
31
+ readonly destructiveHint: false;
32
+ readonly readOnlyHint: true;
33
+ readonly openWorldHint: false;
34
+ };
35
+ };
36
+ export declare class UseSpaceTool extends HfApiCall<UseSpaceParams, UseSpaceResult> {
37
+ constructor(hfToken?: string, hubUrl?: string);
38
+ private readonly hubUrl?;
39
+ getSpaceStatus(spaceId: string): Promise<UseSpaceResult>;
40
+ }
41
+ export declare const formatUseSpaceResult: (tool: UseSpaceTool, params: UseSpaceParams) => Promise<UseSpaceResult>;
42
+ export {};
43
+ //# sourceMappingURL=use-space.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-space.d.ts","sourceRoot":"","sources":["../src/use-space.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,+BAA+B,CAAC;AAGvC,UAAU,cAAc;IACvB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAErB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;IACrF,QAAQ,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;CAaxB,CAAC;AAEX,qBAAa,YAAa,SAAQ,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;gBAC9D,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAK7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IAE3B,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CA4D9D;AAED,eAAO,MAAM,oBAAoB,GAAU,MAAM,YAAY,EAAE,QAAQ,cAAc,KAAG,OAAO,CAAC,cAAc,CAE7G,CAAC"}
@@ -0,0 +1,79 @@
1
+ import { z } from 'zod';
2
+ import { HfApiCall } from './hf-api-call.js';
3
+ import { spaceInfo } from '@huggingface/hub';
4
+ import './types/mcp-ui-server-shim.js';
5
+ import { createUIResource } from '@mcp-ui/server';
6
+ export const USE_SPACE_TOOL_CONFIG = {
7
+ name: 'use_space',
8
+ description: 'Give the User access to a Hugging Face Space with mcp_ui. This tool will return a link accessible to the User that may not be visible to the Assistant',
9
+ schema: z.object({
10
+ space_id: z.string().min(1).describe("Space ID in 'username/repo' format"),
11
+ }),
12
+ annotations: {
13
+ title: 'Use Hugging Face Space',
14
+ destructiveHint: false,
15
+ readOnlyHint: true,
16
+ openWorldHint: false,
17
+ },
18
+ };
19
+ export class UseSpaceTool extends HfApiCall {
20
+ constructor(hfToken, hubUrl) {
21
+ super('https://huggingface.co/api', hfToken);
22
+ this.hubUrl = hubUrl;
23
+ }
24
+ hubUrl;
25
+ async getSpaceStatus(spaceId) {
26
+ try {
27
+ const additionalFields = ['runtime', 'subdomain'];
28
+ const info = (await spaceInfo({
29
+ name: spaceId,
30
+ additionalFields: Array.from(additionalFields),
31
+ ...(this.hubUrl && { hubUrl: this.hubUrl }),
32
+ }));
33
+ const status = info.runtime?.stage || 'UNKNOWN';
34
+ const subdomain = info.subdomain || 'Not available';
35
+ const spaceName = spaceId;
36
+ if (status === 'RUNNING' && subdomain !== 'Not available') {
37
+ const iframeUrl = `https://${subdomain}.hf.space`;
38
+ const uiResource = createUIResource({
39
+ uri: `ui://hf-space/${spaceId.replace('/', '-')}`,
40
+ content: { type: 'externalUrl', iframeUrl },
41
+ encoding: 'text',
42
+ uiMetadata: {
43
+ 'preferred-frame-size': ['1024px', '960px'],
44
+ },
45
+ });
46
+ const formatted = `UI resource for running space: ${iframeUrl}`;
47
+ return {
48
+ content: [uiResource],
49
+ metadata: {
50
+ formatted,
51
+ totalResults: 1,
52
+ resultsShared: 1,
53
+ },
54
+ };
55
+ }
56
+ else {
57
+ const formatted = `Space ${spaceName} is ${status}`;
58
+ return {
59
+ content: [{ type: 'text', text: formatted }],
60
+ metadata: {
61
+ formatted,
62
+ totalResults: 1,
63
+ resultsShared: 1,
64
+ },
65
+ };
66
+ }
67
+ }
68
+ catch (error) {
69
+ if (error instanceof Error) {
70
+ throw new Error(`Failed to get space information for '${spaceId}': ${error.message}`);
71
+ }
72
+ throw error;
73
+ }
74
+ }
75
+ }
76
+ export const formatUseSpaceResult = async (tool, params) => {
77
+ return tool.getSpaceStatus(params.space_id);
78
+ };
79
+ //# sourceMappingURL=use-space.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-space.js","sourceRoot":"","sources":["../src/use-space.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@llmindset/hf-mcp",
3
- "version": "0.2.25",
3
+ "version": "0.2.26",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -24,6 +24,7 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@huggingface/hub": "^2.1.0",
27
+ "@mcp-ui/server": "^5.10.0",
27
28
  "turndown": "^7.2.0",
28
29
  "zod": "^3.24.4"
29
30
  },
package/src/index.ts CHANGED
@@ -18,6 +18,7 @@ export * from './paper-summary.js';
18
18
  export * from './docs-search/docs-semantic-search.js';
19
19
  export * from './docs-search/doc-fetch.js';
20
20
  export * from './readme-utils.js';
21
+ export * from './use-space.js';
21
22
 
22
23
  // Export shared types
23
24
  export * from './types/tool-result.js';
package/src/tool-ids.ts CHANGED
@@ -20,6 +20,7 @@ import {
20
20
  PAPER_SUMMARY_PROMPT_CONFIG,
21
21
  DOCS_SEMANTIC_SEARCH_CONFIG,
22
22
  DOC_FETCH_CONFIG,
23
+ USE_SPACE_TOOL_CONFIG,
23
24
  } from './index.js';
24
25
 
25
26
  // Extract tool IDs from their configs (single source of truth)
@@ -33,6 +34,7 @@ export const HUB_INSPECT_TOOL_ID = HUB_INSPECT_TOOL_CONFIG.name;
33
34
  export const DUPLICATE_SPACE_TOOL_ID = DUPLICATE_SPACE_TOOL_CONFIG.name;
34
35
  export const SPACE_INFO_TOOL_ID = SPACE_INFO_TOOL_CONFIG.name;
35
36
  export const SPACE_FILES_TOOL_ID = SPACE_FILES_TOOL_CONFIG.name;
37
+ export const USE_SPACE_TOOL_ID = USE_SPACE_TOOL_CONFIG.name;
36
38
  export const DOCS_SEMANTIC_SEARCH_TOOL_ID = DOCS_SEMANTIC_SEARCH_CONFIG.name;
37
39
  export const DOC_FETCH_TOOL_ID = DOC_FETCH_CONFIG.name;
38
40
  export const USER_SUMMARY_PROMPT_ID = USER_SUMMARY_PROMPT_CONFIG.name;
@@ -54,6 +56,7 @@ export const ALL_BUILTIN_TOOL_IDS = [
54
56
  SPACE_FILES_TOOL_ID,
55
57
  DOCS_SEMANTIC_SEARCH_TOOL_ID,
56
58
  DOC_FETCH_TOOL_ID,
59
+ USE_SPACE_TOOL_ID,
57
60
  ] as const;
58
61
  // Grouped tool IDs for bouquet configurations
59
62
  export const TOOL_ID_GROUPS = {
@@ -64,7 +67,7 @@ export const TOOL_ID_GROUPS = {
64
67
  PAPER_SEARCH_TOOL_ID,
65
68
  DOCS_SEMANTIC_SEARCH_TOOL_ID,
66
69
  ] as const,
67
- spaces: [SPACE_SEARCH_TOOL_ID, DUPLICATE_SPACE_TOOL_ID, SPACE_INFO_TOOL_ID, SPACE_FILES_TOOL_ID] as const,
70
+ spaces: [SPACE_SEARCH_TOOL_ID, DUPLICATE_SPACE_TOOL_ID, SPACE_INFO_TOOL_ID, SPACE_FILES_TOOL_ID, USE_SPACE_TOOL_ID] as const,
68
71
  detail: [MODEL_DETAIL_TOOL_ID, DATASET_DETAIL_TOOL_ID, HUB_INSPECT_TOOL_ID] as const,
69
72
  docs: [DOCS_SEMANTIC_SEARCH_TOOL_ID, DOC_FETCH_TOOL_ID] as const,
70
73
  hf_api: [
@@ -0,0 +1,35 @@
1
+ // Ambient module shim for @mcp-ui/server under NodeNext resolution
2
+ // The upstream package's d.ts re-export fails to resolve with NodeNext.
3
+ // This keeps our build unblocked until the package fixes its types.
4
+ declare module '@mcp-ui/server' {
5
+ export interface HTMLTextContent {
6
+ uri: string;
7
+ mimeType: string;
8
+ text: string;
9
+ }
10
+
11
+ export interface Base64BlobContent {
12
+ uri: string;
13
+ mimeType: string;
14
+ blob: string; // base64-encoded
15
+ }
16
+
17
+ export interface UIResource {
18
+ type: 'resource';
19
+ resource: HTMLTextContent | Base64BlobContent;
20
+ }
21
+
22
+ export interface CreateUIResourceOptions {
23
+ uri: string; // must start with 'ui://'
24
+ encoding: 'text' | 'blob';
25
+ content:
26
+ | { type: 'rawHtml'; htmlString: string }
27
+ | { type: 'externalUrl'; iframeUrl: string }
28
+ | { type: 'remoteDom'; script: string; framework?: string };
29
+ uiMetadata?: {
30
+ 'preferred-frame-size'?: [string, string]; // [width, height]
31
+ };
32
+ }
33
+
34
+ export function createUIResource(options: CreateUIResourceOptions): UIResource;
35
+ }
@@ -0,0 +1,106 @@
1
+ import { z } from 'zod';
2
+ import { HfApiCall } from './hf-api-call.js';
3
+ import { spaceInfo, type SpaceEntry } from '@huggingface/hub';
4
+ import type { ToolResult } from './types/tool-result.js';
5
+ import './types/mcp-ui-server-shim.js';
6
+ import { createUIResource } from '@mcp-ui/server';
7
+ // Define the return type that matches MCP server expectations
8
+ interface UseSpaceResult {
9
+ [x: string]: unknown;
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ content: Array<{ type: 'text'; text: string } | { type: 'resource'; resource: any }>;
12
+ metadata: ToolResult;
13
+ }
14
+
15
+ export interface UseSpaceParams {
16
+ space_id: string;
17
+ }
18
+
19
+ export const USE_SPACE_TOOL_CONFIG = {
20
+ name: 'use_space',
21
+ description:
22
+ 'Give the User access to a Hugging Face Space with mcp_ui. This tool will return a link accessible to the User that may not be visible to the Assistant',
23
+ schema: z.object({
24
+ space_id: z.string().min(1).describe("Space ID in 'username/repo' format"),
25
+ }),
26
+ annotations: {
27
+ title: 'Use Hugging Face Space',
28
+ destructiveHint: false,
29
+ readOnlyHint: true,
30
+ openWorldHint: false,
31
+ },
32
+ } as const;
33
+
34
+ export class UseSpaceTool extends HfApiCall<UseSpaceParams, UseSpaceResult> {
35
+ constructor(hfToken?: string, hubUrl?: string) {
36
+ super('https://huggingface.co/api', hfToken);
37
+ this.hubUrl = hubUrl;
38
+ }
39
+
40
+ private readonly hubUrl?: string;
41
+
42
+ async getSpaceStatus(spaceId: string): Promise<UseSpaceResult> {
43
+ try {
44
+ // Fetch space info with runtime and subdomain fields
45
+ const additionalFields = ['runtime', 'subdomain'] as const;
46
+ const info = (await spaceInfo<(typeof additionalFields)[number]>({
47
+ name: spaceId,
48
+ additionalFields: Array.from(additionalFields),
49
+ ...(this.hubUrl && { hubUrl: this.hubUrl }),
50
+ })) as SpaceEntry & {
51
+ runtime?: {
52
+ stage?: string;
53
+ };
54
+ subdomain?: string;
55
+ };
56
+
57
+ // Extract runtime status and subdomain with proper typing
58
+ const status = info.runtime?.stage || 'UNKNOWN';
59
+ const subdomain = info.subdomain || 'Not available';
60
+ const spaceName = spaceId; // Full space ID like 'username/spacename'
61
+
62
+ if (status === 'RUNNING' && subdomain !== 'Not available') {
63
+ // Create UI resource for running space
64
+ const iframeUrl = `https://${subdomain}.hf.space`;
65
+ const uiResource = createUIResource({
66
+ uri: `ui://hf-space/${spaceId.replace('/', '-')}`,
67
+ content: { type: 'externalUrl', iframeUrl },
68
+ encoding: 'text',
69
+ uiMetadata: {
70
+ 'preferred-frame-size': ['1024px', '960px'],
71
+ },
72
+ });
73
+
74
+ const formatted = `UI resource for running space: ${iframeUrl}`;
75
+ return {
76
+ content: [uiResource],
77
+ metadata: {
78
+ formatted,
79
+ totalResults: 1,
80
+ resultsShared: 1,
81
+ },
82
+ };
83
+ } else {
84
+ // Return text response for non-running spaces
85
+ const formatted = `Space ${spaceName} is ${status}`;
86
+ return {
87
+ content: [{ type: 'text', text: formatted }],
88
+ metadata: {
89
+ formatted,
90
+ totalResults: 1,
91
+ resultsShared: 1,
92
+ },
93
+ };
94
+ }
95
+ } catch (error) {
96
+ if (error instanceof Error) {
97
+ throw new Error(`Failed to get space information for '${spaceId}': ${error.message}`);
98
+ }
99
+ throw error;
100
+ }
101
+ }
102
+ }
103
+
104
+ export const formatUseSpaceResult = async (tool: UseSpaceTool, params: UseSpaceParams): Promise<UseSpaceResult> => {
105
+ return tool.getSpaceStatus(params.space_id);
106
+ };