File size: 8,910 Bytes
57a6a0a
40809f9
d4aea08
 
 
57a6a0a
 
 
d4aea08
57a6a0a
1bfce08
57a6a0a
 
2add32c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46b04f4
2add32c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dcd6c26
2add32c
 
46b04f4
2add32c
 
46b04f4
2add32c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50805f0
2add32c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46b04f4
2add32c
 
 
 
 
 
 
 
 
 
 
 
dcd6c26
2add32c
 
 
dcd6c26
2add32c
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
---
title: Nymbo Tools MCP
emoji: ⚙️
colorFrom: green
colorTo: gray
sdk: gradio
sdk_version: 5.43.1
app_file: app.py
pinned: true
license: apache-2.0
short_description: All-in-one hub of general purpose tools useful for any agent
---

Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference

## Nymbo-Tools MCP Server

All-in-one hub of general-purpose tools useful for any agent. Run it as a Gradio web app, or connect to it remotely as a Model Context Protocol (MCP) server to call its tools programmatically.

Live Space: https://huggingface.co/spaces/Nymbo/Tools

### What’s inside

- Web Fetch: Turn any webpage into clean Markdown with optional link-only scraping, CSS selector stripping, length limits, and pagination via cursor offset.
- Web Search: DuckDuckGo-backed search across text, news, images, videos, and books with readable, paginated output.
- Code Interpreter: Execute small Python snippets and capture stdout.
- Memory Manager: Lightweight JSON-based memory store with save/list/search/delete and tag filters.
- Generate Speech: Kokoro‑82M TTS with 54 voices and adjustable speed (CPU or CUDA if available).
- Generate Image: Text-to-image via Hugging Face serverless inference (choose model, steps, CFG, size, seed).
- Generate Video: Text-to-video via Hugging Face serverless inference (model, steps, guidance, size, fps, duration, seed).
- Deep Research: Multi-query web research pipeline (DDG search + parallel fetch + LLM report synthesis) with downloadable report.
- File System: Safe, sandboxed filesystem operations under a tool root.
- Shell Command: Run shell commands inside the same safe root as File System.

## Quick start

Run the following commands in sequence to run the server locally:

```shell
git clone https://huggingface.co/spaces/Nymbo/Tools
cd Tools
python -m venv env
source env/bin/activate
pip install -r requirements.txt
python app.py
```

Defaults:
- The Gradio UI typically serves on http://127.0.0.1:7860
- The MCP endpoint is available at http://127.0.0.1:7860/gradio_api/mcp/

## Using it as an MCP server

Remote MCP (hosted):
- Base URL: https://mcp.nymbo.net/gradio_api/mcp/
- SSE endpoint (for clients that need it): https://mcp.nymbo.net/gradio_api/mcp/sse

Local MCP (when you run app.py):
- Base URL: http://127.0.0.1:7860/gradio_api/mcp/
- SSE endpoint: http://127.0.0.1:7860/gradio_api/mcp/sse

Example client config (JSON):

```json
{
	"mcpServers": {
		"nymbo-tools": {
			"url": "https://mcp.nymbo.net/gradio_api/mcp/"
		}
	}
}
```

## Environment variables (optional but recommended)

- HF_READ_TOKEN: Enables Image Generation, Video Generation, and Deep Research (Hugging Face serverless inference). These tools stay visible to MCP clients but calls require a valid token to succeed.
- HF_TOKEN: Alternative token fallback used by some providers (also enables Deep Research/Video).
- NYMBO_TOOLS_ROOT: Overrides the File System/Shell working root. Defaults to Nymbo-Tools/Filesystem.
- UNSAFE_ALLOW_ABS_PATHS=1: Allow absolute paths in File System and Shell Command (off by default for safety).

Notes:
- Without a HF API key, you can still use Web Fetch, Web Search, Code Interpreter, Memory Manager, File System, Shell Command, and Generate Speech.
- Generate Speech requires the kokoro package and its dependencies; it works on CPU and uses CUDA if available. Doesn't require an API key because it's computed on the server itself.

## Persistence and privacy

- Memory Manager stores entries in `memories.json` at the Nymbo-Tools folder root when running locally.
- File System defaults to the `Filesystem/` directory under Nymbo-Tools.
- In the public demo Space, storage is ephemeral and visible to anyone using the Space; avoid personal or sensitive data.

## Tool reference (signatures and behavior)

Below are the MCP tool parameters summarized by inputs, outputs, and notable behaviors.

### Web_Fetch (Webpages, converted to Markdown)
Inputs:
- url (str): Absolute URL to fetch (must return HTML).
- max_chars (int, default 3000): 0 = full page; otherwise truncates with a next_cursor notice.
- strip_selectors (str): Comma-separated CSS selectors to remove (e.g., .header, .footer, nav).
- url_scraper (bool): If true, return only a list of links from the page.
- offset (int): Character offset for pagination; pass the previous next_cursor to continue.

Output: Markdown string. If truncated, includes a next_cursor to continue.

### Web_Search (DuckDuckGo backend)
Inputs:
- query (str): DuckDuckGo query (supports site:, quotes, OR).
- max_results (int 1–20, default 5)
- page (int, default 1) or offset (int) for precise continuation
- search_type (str): "text" | "news" | "images" | "videos" | "books"

Output: Readable text with pagination hints and next_offset.

### Code_Interpreter (Python)
Inputs:
- code (str): Python source; stdout is captured.

Output: Captured stdout or the exception text.

### Memory_Manager (Simple JSON store)
Inputs:
- action: "save" | "list" | "search" | "delete"
- text (save only), tags (save only)
- query (search only): supports tag:name terms and AND/OR
- limit (list/search): default 20
- memory_id (delete): full UUID or unique prefix
- include_tags (bool): include tags when listing/searching

Output: Confirmation string, listing, search matches, or structured error text.

### Generate_Speech (Kokoro-82M)
Inputs:
- text (str)
- speed (float 0.5–2.0, default 1.25)
- voice (str): One of 54 voices (e.g., af_heart, am_liam, bf_alice, zf_xiaoyi…)

Output: (sample_rate:int, waveform:np.ndarray) – rendered as downloadable WAV in the UI.

### Generate_Image (HF inference)
Requires: HF_READ_TOKEN

Inputs:
- prompt (str)
- model_id (str): e.g., black-forest-labs/FLUX.1-Krea-dev
- negative_prompt (str)
- steps (1–100), cfg_scale (1–20), sampler (UI label), seed (-1=random), width/height

Output: PIL.Image. In UI, displayed and downloadable. Errors guide you to provide a token or fix model id.

### Generate_Video (HF inference)
Requires: HF_READ_TOKEN or HF_TOKEN

Inputs:
- prompt (str)
- model_id (str): default akhaliq/sora-2
- negative_prompt (str)
- steps (1–100), cfg_scale, seed, width/height, fps, duration (s)

Output: Temporary MP4 file path; UI shows a playable/downloadable video.

### Deep_Research (HF inference)
Requires: HF_READ_TOKEN or HF_TOKEN

Inputs:
- summary (str): One or more sentences describing the research task.
- query1..query5 (str) with max1..max5 (1–50). Total requested results across queries are capped at 50.

Behavior:
- Parallel DDG searches → fetch pages in budget → filter candidate sources with an LLM → synthesize a long, well-structured Markdown report and list of sources.

Output: (report_md, fetched_links_text, report_file_path)

### File_System (safe root)
Root:
- Defaults to `Nymbo-Tools/Filesystem` (or NYMBO_TOOLS_ROOT). Absolute paths disabled unless UNSAFE_ALLOW_ABS_PATHS=1.

Actions:
- list, read, write, append, mkdir, move, copy, delete, info, help

Key fields:
- path, content (write/append), dest_path (move/copy), recursive, show_hidden, max_entries, offset, max_chars, create_dirs, overwrite

Output:
- Human-readable listings or JSON-like error strings with code/message/hint.

### Shell_Command (same safe root)
Inputs:
- command (str): Single-string shell command (pipelines supported by the host shell).
- workdir (str): Relative to the root.
- timeout (s)

Output:
- Combined header + STDOUT/STDERR. Absolute paths disabled by default. Shell is detected automatically (PowerShell on Windows when available; bash/sh on POSIX).

## Running on Hugging Face Spaces

1) Duplicate the Space at https://huggingface.co/spaces/Nymbo/Tools.
2) In Space Settings → Secrets, add HF_READ_TOKEN (and/or HF_TOKEN) for model access.
3) Both the UI and MCP clients will list every tool. Image/Video/Deep Research still need a valid token when invoked.

## Troubleshooting

- Image/Video/Deep Research calls fail immediately:
	- Provide HF_READ_TOKEN (and optionally HF_TOKEN). Restart the app/Space.
- 401/403 when calling generation tools:
	- Token missing/insufficient permissions. Ensure your token can read the chosen model.
- Kokoro not found:
	- Install kokoro>=0.9.4. CPU works; CUDA used if available. Torch may be skipped on Apple Silicon by design.
- Windows PowerShell activation policy blocks venv activation:
	- Run PowerShell as Admin and set a suitable execution policy for the current user (e.g., RemoteSigned), or manually run `python app.py` after installing dependencies.
- File System or Shell path errors:
	- Paths are relative to the tool root. Set NYMBO_TOOLS_ROOT to customize. Set UNSAFE_ALLOW_ABS_PATHS=1 only if you fully trust the environment.

## License

Apache-2.0 (see Space metadata). If you duplicate the Space or use these tools, ensure your usage complies with the licenses and terms of the underlying models and providers.