AI Gateway and Registry supporting MCP, A2A and REST | Docs | â GitHub |
| Time | Level | Entity | Message |
|---|
Comma-separated tags
JSON export files only
For cross-environment imports
Configure LLM via environment:
Select a virtual server from the left panel and configure your LLM settings to begin chatting
Loading MCP Registry servers...
requires an API key to connect.
Virtual Servers let you combine Tools, Resources, and Prompts into an MCP Server with its own API key (see API Tokens).
| Icon | S. No. | UUID | Name | Description | Tools | Resources | Prompts | Tags | Owner | Team | Visibility | Actions |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
{% if server.icon %}
|
{{ loop.index }} | {{ server.id }} | {{ server.name }} | {{ server.description }} | {% if server.associatedTools %} {{ server.associatedTools | length }} tool{{ 's' if server.associatedTools | length != 1 else '' }} {% else %} 0 tools {% endif %} | {% if server.associatedResources %} {{ server.associatedResources | length }} resource{{ 's' if server.associatedResources | length != 1 else '' }} {% else %} 0 resources {% endif %} | {% if server.associatedPrompts %} {{ server.associatedPrompts | length }} prompt{{ 's' if server.associatedPrompts | length != 1 else '' }} {% else %} 0 prompts {% endif %} | {% if server.tags %} {% for tag in server.tags %} {{ tag }} {% endfor %} {% else %} None {% endif %} | {% if server.ownerEmail %} {{ server.ownerEmail }} {% else %} N/A {% endif %} |
{% if server.team %}
{{ server.team.replace(' ', ' ')|safe }} {% else %} N/A {% endif %} |
{% if server.visibility == 'private' %} Private {% elif server.visibility == 'team' %} Team {% elif server.visibility == 'public' %} Public {% else %} N/A {% endif %} |
{% if server.isActive %}
{% else %}
{% endif %}
|
This is the global catalog of MCP Tools available. You can also add custom tools from REST APIs. Create a Virtual Server using one of these tools.
Convert existing REST API to an MCP Tool
Import multiple tools from a JSON array. The system automatically fixes common formatting issues like tool name spaces and tag formats.
Maximum: 200 tools per import
[
{
"name": "weather-api",
"displayName": "Weather API Tool",
"url": "https://api.openweathermap.org/data/2.5/weather",
"integration_type": "REST",
"request_type": "GET",
"description": "Get current weather data for any location",
"auth_type": "bearer",
"auth_value": "your-openweather-api-key-here",
"headers": {
"Accept": "application/json",
"User-Agent": "MCP-Gateway/1.0"
},
"input_schema": {
"type": "object",
"properties": {
"q": {"type": "string", "description": "City name"},
"units": {"type": "string", "description": "Temperature units"}
},
"required": ["q"]
},
"jsonpath_filter": "$.main",
"tags": ["weather", "api", "external"]
}
]
Auth Types: basic, bearer, authheaders, oauth, or none
Required Fields: name, url, integration_type, request_type
Optional Fields: displayName, description, auth_type, auth_value, headers, input_schema, jsonpath_filter, tags
Click to upload JSON file
Resources are reusable data assets from MCP servers-like text, code, or media. You can also add custom resources that Tools and Prompts can reference by URI.
| ID | URI | Name | Description | MIME Type | Tags | Owner | Team | Visibility | Status | Actions |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ resource.id }} | {{ resource.uri }} | {{ resource.name }} | {{ resource.description or "N/A" }} | {{ resource.mimeType or "N/A" }} | {% if resource.tags %} {% for tag in resource.tags %} {{ tag }} {% endfor %} {% else %} None {% endif %} | {% if resource.ownerEmail %} {{ resource.ownerEmail }} {% else %} N/A {% endif %} |
{% if resource.team %}
{{ resource.team.replace(' ', ' ')|safe }} {% else %} N/A {% endif %} |
{% if resource.visibility == 'private' %} Private {% elif resource.visibility == 'team' %} Team {% elif resource.visibility == 'public' %} Public {% else %} N/A {% endif %} | {{ "Active" if resource.isActive else "Inactive" }} |
{% if resource.isActive %}
{% else %}
{% endif %}
|
Prompts define reusable message templates with parameters from MCP servers. You can also add custom prompts, useful for driving LLM interactions or Tool input.
| ID | Name | Description | Arguments | Tags | Owner | Team | Visibility | Status | Actions |
|---|---|---|---|---|---|---|---|---|---|
| {{ prompt.id }} | {{ prompt.name }} | {{ prompt.description }} | {% for arg in prompt.arguments %}{{ arg.name }}{% if not loop.last %}, {% endif %}{% endfor %} | {% if prompt.tags %} {% for tag in prompt.tags %} {{ tag }} {% endfor %} {% else %} None {% endif %} | {% if prompt.ownerEmail %} {{ prompt.ownerEmail }} {% else %} N/A {% endif %} |
{% if prompt.team %}
{{ prompt.team.replace(' ', ' ')|safe }} {% else %} N/A {% endif %} |
{% if prompt.visibility == 'private' %} Private {% elif prompt.visibility == 'team' %} Team {% elif prompt.visibility == 'public' %} Public {% else %} N/A {% endif %} | {{ "Active" if prompt.isActive else "Inactive" }} |
{% if prompt.isActive %}
{% else %}
{% endif %}
|
Register external MCP Servers (SSE/HTTP) to retrieve their tools/resources/prompts.
| S. No. | Name | URL | Tags | Status | Last Seen | Team | Visibility | Actions |
|---|---|---|---|---|---|---|---|---|
| {{ loop.index }} | {{ gateway.name }} | {{ gateway.url }} | {% if gateway.tags %} {% for tag in gateway.tags %} {{ tag }} {% endfor %} {% else %} No tags {% endif %} |
{% set enabled = gateway.enabled %} {% set reachable =
gateway.reachable %} {% if enabled and reachable %} {% set
bg_class = "bg-green-100 text-green-800" %} {% elif enabled
and not reachable %} {% set bg_class = "bg-yellow-100
text-yellow-800" %} {% else %} {% set bg_class = "bg-red-100
text-red-800" %} {% endif %}
{% if enabled %} {% if reachable %}
Active
{% else %}
Offline
{% endif %} {% else %}
Inactive
{% endif %}
{% if not enabled %} đĄGateway is Manually Deactivated
{% elif not reachable %} đĄGateway is Not Reachable {%
else %} đĄEverything stable. {% endif %}
|
{{ gateway.lastSeen.strftime('%Y-%m-%d %H:%M:%S') if gateway.lastSeen else 'Never' }} |
{% if gateway.team %}
{{ gateway.team.replace(' ', ' ')|safe }} {% else %} N/A {% endif %} |
{% if gateway.visibility == 'private' %} Private {% elif gateway.visibility == 'team' %} Team {% elif gateway.visibility == 'public' %} Public {% else %} N/A {% endif %} |
{% if gateway.authType == 'oauth' %}
đ Authorize
{% else %}
{% endif %}
{% if gateway.enabled %}
{% else %}
{% endif %}
|
Teams you own, are a member of, and can join
Manage user accounts and permissions
Loading users...
Note: User management requires email authentication
Create and manage personal API tokens with scoped access controls
Loading tokens...
Manage Agent-to-Agent compatible agents that can be integrated as tools
{{ agent.description or "" }}
No A2A agents registered yet.
Manage gRPC services exposed as MCP tools via automatic reflection
{{ service.description or "" }}
Target: {{ service.target }}
Services: {{ service.service_count }} | Methods: {{ service.method_count }}
{% if service.last_reflection %}Last Reflection: {{ service.last_reflection }}
{% endif %}No gRPC services registered yet.
{% endif %}Roots define the base folders accessible for file-based Resources. They enable MCP servers to browse local content.
| ID | URI | Name | Actions |
|---|---|---|---|
| {{ loop.index }} | {{ root.uri }} | {{ root.name }} |
|
Real-time system metrics showing counts across all entity types. Useful for capacity planning and system monitoring.
Metrics provide visibility into Tool, Resource, Prompt, and Server usage across your Gateway-helpful for debugging and optimization.
Choose the configuration format for your MCP client:
name
- must start with letter, only
letters/numbers/dots/underscores/hyphens
url
(http/https/ws/wss only),
description,
tags
(array only)
requestType
("GET", "POST"),
integrationType
("REST", "MCP")
or drag and drop
JSON files only