Skip to content
Back to skills

1753 Registry Api 30503156

ASecurity

This document provides a comprehensive overview of all API endpoints available in the MCP Gateway Registry service.

  • 9 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added June 1, 2026
devopspythongobashgitapidocumentation

Works with

  • terminal
  • api
  • mcp

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned June 1, 2026

npx -y skills add tools-only/X-Skills --skill 1753-registry_api_30503156 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 1753 Registry Api 30503156?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 1753 Registry Api 30503156
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-1753-registry-api-30503156/badge)](https://www.skillsdirectory.com/skills/tools-only-1753-registry-api-30503156)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
# MCP Gateway Registry API Documentation

This document provides a comprehensive overview of all API endpoints available in the MCP Gateway Registry service.

## Table of Contents

- [Authentication](#authentication)
  - [Login Form](#login-form)
  - [Login Submission](#login-submission)
  - [Logout](#logout)
- [Server Management](#server-management)
  - [Register a New Service](#register-a-new-service)
  - [Toggle Service Status](#toggle-service-status)
  - [Edit Service Details](#edit-service-details)
- [API Endpoints](#api-endpoints)
  - [Get Server Details](#get-server-details)
  - [Get Service Tools](#get-service-tools)
  - [Refresh Service](#refresh-service)
- [WebSocket Endpoints](#websocket-endpoints)
  - [Health Status Updates](#health-status-updates)

## Authentication

> **IMPORTANT**: Most endpoints in this API require authentication. You must first call the `/login` endpoint to obtain a session cookie, which must be included in all subsequent requests to authenticated endpoints. The examples below use `-b cookies.txt` to include the session cookie in the requests.

### Login Form

Displays the login form for the MCP Gateway Registry.

**URL:** `/login`  
**Method:** `GET`  
**Response:** HTML login form

**Example:**

```bash
curl -X GET http://localhost:7860/login
```

### Login Submission

Authenticates a user and creates a session. **This endpoint must be called first** to obtain the session cookie required for all other authenticated endpoints.

**URL:** `/login`  
**Method:** `POST`  
**Content-Type:** `application/x-www-form-urlencoded`  
**Parameters:**
- `username` (required): Admin username
- `password` (required): Admin password

**Response:**
- Success: Redirects to `/` with a session cookie
- Failure: Redirects to `/login?error=Invalid+username+or+password`

**Example:**

```bash
# Save the session cookie to cookies.txt for use in subsequent requests
curl -X POST http://localhost:7860/login \
  -d "username=admin&password=password" \
  -c cookies.txt
```

### Logout

Logs out the current user by invalidating their session.

**URL:** `/logout`  
**Method:** `POST`  
**Authentication:** Required (session cookie)  
**Response:** Redirects to `/login`

**Example:**

```bash
curl -X POST http://localhost:7860/logout \
  -b cookies.txt
```

## Server Management

> **Note**: All endpoints in this section require authentication via the session cookie obtained from the `/login` endpoint.

### Register a New Service

Registers a new MCP service with the gateway.

**URL:** `/register`  
**Method:** `POST`  
**Content-Type:** `application/x-www-form-urlencoded`  
**Authentication:** Required (session cookie)  
**Parameters:**
- `name` (required): Display name of the service
- `description` (required): Description of the service
- `path` (required): URL path for the service
- `proxy_pass_url` (required): URL to proxy requests to
- `tags` (optional): Comma-separated list of tags
- `num_tools` (optional): Number of tools provided by the service
- `num_stars` (optional): Star rating for the service
- `is_python` (optional): Whether the service is Python-based
- `license` (optional): License information
- `metadata` (optional): JSON object with custom metadata for organization, compliance, and integration tracking. Fully searchable via semantic search.

**Metadata Examples:**
```json
{
  "team": "data-platform",
  "owner": "alice@example.com",
  "compliance_level": "PCI-DSS",
  "cost_center": "engineering",
  "deployment_region": "us-east-1"
}
```

**Response:**
- Success: JSON response with status code 201
- Failure: JSON response with error details

**Example:**

```bash
# Uses the session cookie from the login request
curl -X POST http://localhost:7860/register \
  -b cookies.txt \
  -d "name=Weather Service&description=Provides weather forecasts&path=/weather&proxy_pass_url=http://localhost:8000&tags=weather,forecast&num_tools=3&num_stars=4&is_python=true&license=MIT"
```

### Toggle Service Status

Enables or disables a registered service.

**URL:** `/toggle/{service_path}`  
**Method:** `POST`  
**Content-Type:** `application/x-www-form-urlencoded`  
**Authentication:** Required (session cookie)  
**URL Parameters:**
- `service_path`: Path of the service to toggle
**Form Parameters:**
- `enabled`: "on" to enable, omit to disable

**Response:** JSON with updated service status

**Example:**

```bash
# Enable a service (requires session cookie)
curl -X POST http://localhost:7860/toggle/weather \
  -b cookies.txt \
  -d "enabled=on"

# Disable a service (requires session cookie)
curl -X POST http://localhost:7860/toggle/weather \
  -b cookies.txt
```

### Edit Service Details

Updates the details of an existing service.

**URL:** `/edit/{service_path}`  
**Method:** `POST`  
**Content-Type:** `application/x-www-form-urlencoded`  
**Authentication:** Required (session cookie)  
**URL Parameters:**
- `service_path`: Path of the service to edit
**Form Parameters:**
- `name` (required): Display name of the service
- `proxy_pass_url` (required): URL to proxy requests to
- `description` (optional): Description of the service
- `tags` (optional): Comma-separated list of tags
- `num_tools` (optional): Number of tools provided by the service
- `num_stars` (optional): Star rating for the service
- `is_python` (optional): Whether the service is Python-based
- `license` (optional): License information

**Response:** Redirects to the main page on success

**Example:**

```bash
# Requires session cookie from login
curl -X POST http://localhost:7860/edit/weather \
  -b cookies.txt \
  -d "name=Weather API&description=Updated weather service&proxy_pass_url=http://localhost:8001&tags=weather,api&num_tools=5&num_stars=5&is_python=true&license=MIT"
```

## API Endpoints

> **Note**: All endpoints in this section require authentication via the session cookie obtained from the `/login` endpoint.

### Get Server Details

Retrieves detailed information about a registered service.

**URL:** `/api/server_details/{service_path}`  
**Method:** `GET`  
**Authentication:** Required (session cookie)  
**URL Parameters:**
- `service_path`: Path of the service to get details for, or "all" to get details for all services

**Response:** JSON with server details

**Example:**

```bash
# Get details for a specific service (requires session cookie)
curl -X GET http://localhost:7860/api/server_details/weather \
  -b cookies.txt

# Get details for all services (requires session cookie)
curl -X GET http://localhost:7860/api/server_details/all \
  -b cookies.txt
```

### Get Service Tools

Retrieves the list of tools provided by a service.

**URL:** `/api/tools/{service_path}`  
**Method:** `GET`  
**Authentication:** Required (session cookie)  
**URL Parameters:**
- `service_path`: Path of the service to get tools for, or "all" to get tools from all services

**Response:** JSON with tool details

**Example:**

```bash
# Get tools for a specific service (requires session cookie)
curl -X GET http://localhost:7860/api/tools/weather \
  -b cookies.txt

# Get tools from all services (requires session cookie)
curl -X GET http://localhost:7860/api/tools/all \
  -b cookies.txt
```

### Refresh Service

Manually triggers a health check and tool discovery for a service.

**URL:** `/api/refresh/{service_path}`  
**Method:** `POST`  
**Authentication:** Required (session cookie)  
**URL Parameters:**
- `service_path`: Path of the service to refresh

**Response:** JSON with updated service status

**Example:**

```bash
# Requires session cookie from login
curl -X POST http://localhost:7860/api/refresh/weather \
  -b cookies.txt
```

## WebSocket Endpoints

### Health Status Updates

Provides real-time updates on the health status of all registered services.

**URL:** `/ws/health_status`  
**Protocol:** WebSocket  
**Authentication:** Not required (public endpoint)  
**Response:** JSON messages with health status updates

**Example using websocat:**

First, install websocat:

```bash
sudo wget -qO /usr/local/bin/websocat https://github.com/vi/websocat/releases/latest/download/websocat.x86_64-unknown-linux-musl
sudo chmod +x /usr/local/bin/websocat
```

Then connect to the WebSocket endpoint:

```bash
websocat ws://localhost:7860/ws/health_status
```

This will display the JSON messages with health status updates in real-time in your terminal.

**Example using Python:**

```python
# Python example using websockets library
import asyncio
import json
import websockets

async def health_status_monitor():
    uri = "ws://localhost:7860/ws/health_status"
    async with websockets.connect(uri) as websocket:
        print("WebSocket connection established")
        
        while True:
            try:
                # Receive health status updates
                message = await websocket.recv()
                data = json.loads(message)
                
                print("Health status update received:")
                for path, info in data.items():
                    print(f"Service {path}: {info['status']}")
                    print(f"Last checked: {info['last_checked_iso']}")
                    print(f"Number of tools: {info['num_tools']}")
                    print("---")
            except websockets.exceptions.ConnectionClosed:
                print("Connection closed")
                break

# Run the async function
asyncio.run(health_status_monitor())
```

## Authentication Flow

1. **First Step**: Call the `/login` endpoint with valid credentials to obtain a session cookie:
   ```bash
   curl -X POST http://localhost:7860/login \
     -d "username=admin&password=password" \
     -c cookies.txt
   ```

2. **Subsequent Requests**: Include the session cookie in all authenticated API calls:
   ```bash
   curl -X GET http://localhost:7860/api/server_details/all \
     -b cookies.txt
   ```

3. **Session Expiration**: The session cookie is valid for 8 hours. After expiration, you'll need to login again.

## API Summary

* `GET /login`: Display login form.
* `POST /login`: Authenticate user and obtain session cookie (required for all authenticated endpoints).
* `POST /logout`: Log out user and invalidate session cookie.
* `GET /`: Main dashboard (web UI, requires authentication).
* `GET /edit/{service_path}`: Edit service form (web UI, requires authentication).
* `POST /register`: Register a new service (requires authentication).
* `POST /toggle/{service_path}`: Enable/disable a service (requires authentication).
* `POST /edit/{service_path}`: Update service details (requires authentication).
* `GET /api/server_details/{service_path}`: Get full details for a service (requires authentication).
* `GET /api/tools/{service_path}`: Get the discovered tool list for a service (requires authentication).
* `POST /api/refresh/{service_path}`: Manually trigger a health check/tool update (requires authentication).
* `WebSocket /ws/health_status`: Real-time connection for receiving server health status updates.

Files in this skill

  • README.md890 B
  • skill.md10.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.