SAM3
by gf-johnco.huggingface.gf-john/sam3
SAM3 Video Inference on ZeroGPU
- Remote endpoint
- 5 tools
Uptime
Checked · every day
91.23%from 4 days of checks
Up without downtime on 3 of 4 days with data; down 452 minutes in all, on 31 October.
- No downtime
- Degraded
- Down over 5 minutes
- No data
- Not checked yet
Response time
Median 1082 ms, slowest 5% 1364 ms for the handshake and the tool list, over 30 days.
How far each check got
- Reached the address 100%
- Completed the handshake 50.0%
- Listed its tools 50.0%
5 tools at the last answer.
Every day
| Day | Result | Checks | Median |
|---|---|---|---|
| 3 Nov (today) | No downtime | 1 | 1364 ms |
| 2 Nov | No downtime | 1of 1 | 1099 ms |
| 1 Nov | No downtime | 1of 1 | 1072 ms |
| 31 Oct | Down 452 minutes | 5 | 1066 ms |
A failure counts as down time only when a second check five minutes later fails too. How we check
Connect to the publisher's own endpoint
Paste into Settings › Connectors › Add custom connector:
https://gf-john-sam3.hf.space/gradio_api/mcp/sse Run in a terminal:
claude mcp add --transport sse sam3 https://gf-john-sam3.hf.space/gradio_api/mcp/sse Add to ~/.cursor/mcp.json:
Add to ~/.config/devin/mcp_config.json:
Add to mcp.json (Program › Install › Edit mcp.json):
Add to ~/.gemini/settings.json:
Add to config.json in oterm's data folder (~/Library/Application Support/oterm on macOS, ~/.local/share/oterm on Linux, %APPDATA%\oterm on Windows):
Add to ~/.config/eca/config.json (global) or .eca/config.json in the project:
{
"mcpServers": {
"sam3": {
"url": "https://gf-john-sam3.hf.space/gradio_api/mcp/sse"
}
}
} Add to .vscode/mcp.json:
{
"servers": {
"sam3": {
"type": "sse",
"url": "https://gf-john-sam3.hf.space/gradio_api/mcp/sse"
}
}
} Add to ~/.config/zed/settings.json:
{
"context_servers": {
"sam3": {
"url": "https://gf-john-sam3.hf.space/gradio_api/mcp/sse"
}
}
} This server's endpoint speaks only SSE, which this client's documentation does not list among its transports; use another client for it.
Add to cline_mcp_settings.json (MCP Servers › Configure › Configure MCP Servers):
Add to anythingllm_mcp_servers.json in the AnythingLLM storage plugins directory:
Add to Augment Settings Panel – MCP section – Import from JSON (VS Code extension):
{
"mcpServers": {
"sam3": {
"type": "sse",
"url": "https://gf-john-sam3.hf.space/gradio_api/mcp/sse"
}
}
} Add to ~/.continue/config.yaml:
mcpServers:
- name: "sam3"
type: sse
url: "https://gf-john-sam3.hf.space/gradio_api/mcp/sse" Add to ~/.config/goose/config.yaml:
extensions:
"sam3":
type: streamable_http
name: "sam3"
enabled: true
uri: "https://gf-john-sam3.hf.space/gradio_api/mcp/sse"
headers: {}
env_keys: []
envs: {}
timeout: 300 This server's endpoint speaks only SSE, which this client's documentation does not list among its transports; use another client for it.
Run in a terminal:
codex mcp add sam3 --url https://gf-john-sam3.hf.space/gradio_api/mcp/sse This server's endpoint speaks only SSE, which this client's documentation does not list among its transports; use another client for it.
Add to ~/.llm/config.json:
Add to resources/assets/config/mcp.json in the installed app:
Add to ~/.boltai/mcp.json:
Add to ~/.bob/settings/mcp.json (global) or .bob/mcp.json (project):
Add to ~/.kiro/settings/mcp.json (user) or .kiro/settings/mcp.json (workspace):
Add to ~/.kiro/settings/mcp.json (user) or .kiro/settings/mcp.json (workspace):
{
"mcpServers": {
"sam3": {
"url": "https://gf-john-sam3.hf.space/gradio_api/mcp/sse"
}
}
} This server's endpoint speaks only SSE, which this client's documentation does not list among its transports; use another client for it.
Add to ~/.config/agenvoy/mcp.json:
{
"servers": {
"sam3": {
"url": "https://gf-john-sam3.hf.space/gradio_api/mcp/sse"
}
}
} This server's endpoint speaks only SSE, which this client's documentation does not list among its transports; use another client for it.
Add to ~/.config/amp/settings.json (user) or .amp/settings.json (workspace):
{
"amp.mcpServers": {
"sam3": {
"url": "https://gf-john-sam3.hf.space/gradio_api/mcp/sse"
}
}
} For agents: the install prompt
Every step above as one Markdown text, for an assistant installing it for you.
# Install the MCP server SAM3 (`co.huggingface.gf-john/sam3`)
Its page: https://plug.directory/servers/co.huggingface.gf-john/sam3
It runs on the publisher's servers; the client connects to its URL.
Use the section for the person's client.
## Claude Desktop
Paste into Settings › Connectors › Add custom connector:
```text
https://gf-john-sam3.hf.space/gradio_api/mcp/sse
```
## Claude Code
Run in a terminal:
```sh
claude mcp add --transport sse sam3 https://gf-john-sam3.hf.space/gradio_api/mcp/sse
```
## Cursor, Devin Desktop, LM Studio, Gemini CLI, oterm, ECA
Merge into the place for the person's client:
- Cursor: ~/.cursor/mcp.json
- Devin Desktop: ~/.config/devin/mcp_config.json
- LM Studio: mcp.json (Program › Install › Edit mcp.json)
- Gemini CLI: ~/.gemini/settings.json
- oterm: config.json in oterm's data folder (~/Library/Application Support/oterm on macOS, ~/.local/share/oterm on Linux, %APPDATA%\oterm on Windows)
- ECA: ~/.config/eca/config.json (global) or .eca/config.json in the project
```json
{
"mcpServers": {
"sam3": {
"url": "https://gf-john-sam3.hf.space/gradio_api/mcp/sse"
}
}
}
```
## VS Code
Merge into .vscode/mcp.json:
```json
{
"servers": {
"sam3": {
"type": "sse",
"url": "https://gf-john-sam3.hf.space/gradio_api/mcp/sse"
}
}
}
```
## Zed
This server's endpoint speaks only SSE, which this client's documentation does not list among its transports; use another client for it.
## Cline, AnythingLLM, Augment Code
Merge into the place for the person's client:
- Cline: cline_mcp_settings.json (MCP Servers › Configure › Configure MCP Servers)
- AnythingLLM: anythingllm_mcp_servers.json in the AnythingLLM storage plugins directory
- Augment Code: Augment Settings Panel – MCP section – Import from JSON (VS Code extension)
```json
{
"mcpServers": {
"sam3": {
"type": "sse",
"url": "https://gf-john-sam3.hf.space/gradio_api/mcp/sse"
}
}
}
```
## Continue
Merge into ~/.continue/config.yaml:
```yaml
mcpServers:
- name: "sam3"
type: sse
url: "https://gf-john-sam3.hf.space/gradio_api/mcp/sse"
```
## Goose
This server's endpoint speaks only SSE, which this client's documentation does not list among its transports; use another client for it.
## Codex
This server's endpoint speaks only SSE, which this client's documentation does not list among its transports; use another client for it.
## mcp-client-cli, TUUI, BoltAI, Bob Shell, Kiro, Kiro CLI
This server's endpoint speaks only SSE, which this client's documentation does not list among its transports; use another client for it.
## Agenvoy
This server's endpoint speaks only SSE, which this client's documentation does not list among its transports; use another client for it.
## Amp
Merge into ~/.config/amp/settings.json (user) or .amp/settings.json (workspace):
```json
{
"amp.mcpServers": {
"sam3": {
"url": "https://gf-john-sam3.hf.space/gradio_api/mcp/sse"
}
}
}
```
Then restart the client, or reload its MCP servers, and ask it to list the server's tools to confirm it started.
Tools 5
sam3_image_text_inferenceSegment every instance of a concept in a single image with SAM3 using a natural-language text prompt (concept segmentation). The prompt is a concept to find (e.g. "player in white", "red car"); each matching instance becomes one detection. Returns a JSON list of detection objects, each with: "object_id" (integer index of the instance within this image); "x", "y", "w", "h" (floats); "conf" (float 0-1 detection score); and "mask_b64" (string). The bounding box ("x","y","w","h") is NORMALIZED 0-1: (x, y) is the top-left corner and (w, h) is the box size, each divided by the image width/height -- i.e. the albumentations "coco" layout [x_min, y_min, width, height] but normalized to 0-1 rather than absolute pixels, and NOT the "pascal_voc" [x_min, y_min, x_max, y_max] layout. Bounding-box formats are documented at https://albumentations.ai/docs/3-basic-usage/bounding-boxes-augmentations/#bounding-box-formats . "mask_b64" is a base64-encoded 1-bit PNG of the binary segmentation mask at the insam3_image_visual_inferenceSegment objects in a single image with SAM3 using visual prompts (bounding boxes and/or points); a drop-in match for SAM2's process_image. Provide at least one of bboxes or points. Each bounding box produces its own mask; all points together describe one object and produce a single mask. The return value is a JSON list of base64-encoded 1-bit-PNG mask strings, ordered as: one mask per bounding box (in the order the boxes were given), then, if points were provided, one final mask for the points prompt. Each string decodes to a binary segmentation mask at the input image resolution; decode it with PIL, e.g. numpy.array(Image.open(io.BytesIO(base64.b64decode(mask_b64)))) to get a 0/255 mask. Box pixel coordinates use (x0, y0) = top-left and (x1, y1) = bottom-right corners of the ORIGINAL input image (albumentations "pascal_voc" [x_min, y_min, x_max, y_max], absolute pixels); point coordinates (x, y) are absolute pixels in the same image. Coordinate formats are documented at https://albumesam3_video_annotationTrack and segment objects across a video with SAM3 using a natural-language text prompt, and return an annotated video with the segmentation masks overlaid. The prompt is a concept to find (e.g. "player in white", "red car"); every matching instance is tracked across all frames and rendered as a colored mask overlay (color keyed by object). The video can optionally be downsampled before tracking with sample_fps or every_x; the returned video then contains only the sampled frames, muxed at the sampled frame rate so it keeps the original real-time duration. This is the annotated-video counterpart of video_inference: it returns a filesystem path to an mp4 with the mask overlays burned in, rather than JSON detections. Use video_inference instead if you need the structured per-frame bounding boxes and base64 masks.sam3_video_inferenceTrack and segment objects across a video with SAM3 using a natural-language text prompt, returning per-object-per-frame detections (or an annotated video). The prompt is a concept to find (e.g. "player in white", "red car"); every matching instance is tracked across all frames with a stable track_id. The video can optionally be downsampled before tracking with sample_fps or every_x; the "frame" field of every detection is a 0-based position in the SAMPLED frame sequence, NOT an original video frame number, so with every_x=5 the detection "frame": 2 corresponds to original frame 10. This tool has two output shapes selected by annotation_mode. When annotation_mode is false (default) it returns a JSON list of detection objects, one per tracked object per frame. Each detection has: "frame" (integer sampled-frame index as defined above); "track_id" (integer, stable across frames for one object); "x", "y", "w", "h" (floats); "conf" (float, always 1 for video); and "mask_b64" (string). The bosam3_video_visual_inferenceSAM3 video segmentation with visual prompts: track objects through a video given their segmentation masks on a reference frame; a drop-in match for SAM2's process_video. Seed the objects to track by supplying their masks on the reference frame (ref_frame_idx); SAM3 then propagates each object forward -- and, when ref_frame_idx is nonzero, also backward -- through every frame. Unlike video_inference (which finds objects from a text prompt), this tool tracks exactly the objects whose masks you provide, e.g. masks obtained from image_visual_inference or image_text_inference on the reference frame. The video can optionally be downsampled before tracking with sample_fps or every_x; all frame indices (the "frame" field of every detection AND the ref_frame_idx input) are 0-based positions in the SAMPLED frame sequence, NOT original video frame numbers, so with every_x=5 the detection "frame": 2 corresponds to original frame 10. Returns a JSON list of per-frame detections, one entry per tracke
From Hugging Face Spaces. Report a problem