Skip to main content
Tool groups let you expose a curated subset of tools to specific MCP clients. Each group has its own MCP proxy endpoint, so an AI agent pointed at a group only sees the tools you chose. Groups are additive — you include tools by name or by server, then optionally exclude individual tools from server-level inclusions. All group management endpoints require admin role.

GET /api/v0/tool-groups

Lists all tool groups with their inclusion and exclusion configuration. Access: admin only
cURL
curl http://localhost:8080/api/v0/tool-groups \
  -H "Authorization: Bearer YOUR_TOKEN"
Response 200
[
  {
    "name": "read-only",
    "description": "Read-only filesystem tools",
    "included_tools": ["filesystem__read_file", "filesystem__list_directory"],
    "included_servers": [],
    "excluded_tools": []
  },
  {
    "name": "all-weather",
    "description": "Everything from the weather server",
    "included_tools": [],
    "included_servers": ["weather"],
    "excluded_tools": ["weather__get_raw_data"]
  }
]
name
string
required
Unique name of the tool group.
description
string
Human-readable description.
included_tools
string[]
Explicitly included tool names.
included_servers
string[]
Server names whose tools are included wholesale.
excluded_tools
string[]
Tool names excluded from the group, applied after all inclusions. Useful for removing specific tools when an entire server is included.

POST /api/v0/tool-groups

Creates a new tool group. Access: admin only

Request body

name
string
required
Unique name for the group.
description
string
Optional human-readable description.
included_tools
string[]
List of fully qualified tool names to include, e.g. ["filesystem__read_file"].
included_servers
string[]
List of server names. All currently enabled tools from each server are included.
excluded_tools
string[]
Tool names to exclude. Exclusions are applied after all inclusions, so a tool listed here will not appear even if its server is in included_servers.
cURL
curl -X POST http://localhost:8080/api/v0/tool-groups \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "read-only",
    "description": "Read-only filesystem tools",
    "included_tools": [
      "filesystem__read_file",
      "filesystem__list_directory"
    ]
  }'
Response 201
streamable_http_endpoint
string
required
URL of the streamable HTTP MCP proxy for this group. Point your MCP client here.
sse_endpoint
string
required
URL of the SSE MCP proxy for this group (legacy transport).
sse_message_endpoint
string
required
SSE message handler URL (companion to sse_endpoint).
{
  "streamable_http_endpoint": "http://localhost:8080/v0/groups/read-only/mcp",
  "sse_endpoint": "http://localhost:8080/v0/groups/read-only/sse",
  "sse_message_endpoint": "http://localhost:8080/v0/groups/read-only/message"
}

GET /api/v0/tool-groups/:name

Returns the configuration and proxy endpoints for a single group. Access: admin only
name
string
required
Name of the tool group.
cURL
curl http://localhost:8080/api/v0/tool-groups/read-only \
  -H "Authorization: Bearer YOUR_TOKEN"
Response 200 The response combines the group configuration fields (name, description, included_tools, included_servers, excluded_tools) with the endpoint URLs (streamable_http_endpoint, sse_endpoint, sse_message_endpoint).
{
  "name": "read-only",
  "description": "Read-only filesystem tools",
  "included_tools": ["filesystem__read_file", "filesystem__list_directory"],
  "included_servers": [],
  "excluded_tools": [],
  "streamable_http_endpoint": "http://localhost:8080/v0/groups/read-only/mcp",
  "sse_endpoint": "http://localhost:8080/v0/groups/read-only/sse",
  "sse_message_endpoint": "http://localhost:8080/v0/groups/read-only/message"
}

GET /api/v0/tool-groups/:name/effective-tools

Resolves and returns the complete list of tool names that are actually active in the group after all inclusions and exclusions are applied. This is the ground truth for what an MCP client connecting to the group’s proxy endpoint will see. Access: admin only
name
string
required
Name of the tool group.
cURL
curl http://localhost:8080/api/v0/tool-groups/all-weather/effective-tools \
  -H "Authorization: Bearer YOUR_TOKEN"
Response 200
{
  "tools": [
    "weather__get_forecast",
    "weather__get_alerts",
    "weather__get_current"
  ]
}
tools
string[]
required
Resolved list of tool names visible through this group’s MCP proxy.

PUT /api/v0/tool-groups/:name

Replaces the configuration of an existing tool group. All fields in the request body overwrite the current configuration — there is no partial update. Access: admin only
name
string
required
Name of the group to update.
The request body accepts the same fields as POST /api/v0/tool-groups.
cURL
curl -X PUT http://localhost:8080/api/v0/tool-groups/read-only \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "read-only",
    "description": "Updated read-only tools",
    "included_tools": [
      "filesystem__read_file",
      "filesystem__list_directory",
      "filesystem__get_file_info"
    ]
  }'
Response 200
name
string
required
Name of the group that was updated.
old
object
required
Previous configuration of the group.
new
object
required
Updated (now live) configuration of the group. Same shape as old.

DELETE /api/v0/tool-groups/:name

Deletes a tool group. MCP clients that were pointed at the group’s proxy endpoint will receive 404 responses after deletion. Access: admin only
name
string
required
Name of the group to delete.
cURL
curl -X DELETE http://localhost:8080/api/v0/tool-groups/read-only \
  -H "Authorization: Bearer YOUR_TOKEN"
Response 204 — No content.

MCP proxy endpoint for a group

ANY /v0/groups/:name/mcp
This is the streamable HTTP MCP endpoint for the named tool group. Point an MCP client at this URL to give it access to exactly the tools in the group, and no others. The URL is returned automatically when you create or fetch a group.
Configure an MCP client
{
  "mcpServers": {
    "read-only-tools": {
      "url": "http://localhost:8080/v0/groups/read-only/mcp",
      "headers": {
        "Authorization": "Bearer CLIENT_ACCESS_TOKEN"
      }
    }
  }
}
A single MCPJungle instance can serve multiple tool groups simultaneously. Create one group per client or per use-case, each with a different subset of tools, and hand out the corresponding /v0/groups/:name/mcp URL.
An SSE transport alternative is also available at /v0/groups/:name/sse (with the companion message endpoint at /v0/groups/:name/message), but the streamable HTTP endpoint is preferred for new integrations.