Skip to main content

Connector Marketplace API

Discover, install, and manage MCP connectors through the Orchestrator API.

Overview

The Connector Marketplace API enables:

  • Discovery: Browse available connectors with metadata
  • Installation: Install connectors with custom configuration
  • Management: Monitor health and uninstall connectors
  • Multi-tenant: Isolate connector instances per tenant

Base URL: http://localhost:8081 (Orchestrator)


Endpoints

GET /api/v1/connectors

List all available connectors in the marketplace.

Request:

curl http://localhost:8081/api/v1/connectors

Response (200 OK):

{
"connectors": [
{
"id": "postgresql",
"name": "PostgreSQL Database",
"type": "postgres",
"version": "0.1.0",
"description": "Connect to PostgreSQL databases with connection pooling",
"category": "Database",
"icon": "🐘",
"tags": ["database", "sql", "postgres"],
"capabilities": ["query", "execute", "transactions"],
"config_schema": {
"type": "object",
"required": ["host", "database"],
"properties": {
"host": {
"type": "string",
"description": "PostgreSQL host"
},
"port": {
"type": "number",
"default": 5432,
"description": "PostgreSQL port"
},
"database": {
"type": "string",
"description": "Database name"
}
},
"credentials": {
"username": {
"type": "string",
"description": "Database username"
},
"password": {
"type": "string",
"description": "Database password"
}
}
},
"installed": true,
"healthy": true,
"last_check": "2025-01-02T10:00:00Z"
},
{
"id": "redis-cache",
"name": "Redis Cache",
"type": "redis",
"version": "0.2.0",
"description": "High-performance key-value caching with sub-10ms latency",
"category": "Cache",
"icon": "⚡",
"tags": ["cache", "redis", "kv-store", "performance"],
"capabilities": ["query", "execute", "cache", "kv-store"],
"installed": false
},
{
"id": "amadeus-travel",
"name": "Amadeus Travel API",
"type": "amadeus",
"version": "0.2.0",
"description": "Access flight search, hotel search, and airport information from Amadeus Travel API",
"category": "Travel",
"icon": "✈️",
"tags": ["travel", "flights", "hotels", "api"],
"capabilities": ["query", "flights", "hotels", "airports"],
"installed": false
},
{
"id": "http-rest",
"name": "HTTP REST API",
"type": "http",
"version": "0.2.0",
"description": "Generic REST API connector with multiple authentication methods",
"category": "API",
"icon": "🔌",
"tags": ["http", "rest", "api", "generic"],
"capabilities": ["query", "execute", "rest-api"],
"installed": false
}
],
"total": 4
}

GET /api/v1/connectors/{id}

Get detailed information about a specific connector.

Request:

curl http://localhost:8081/api/v1/connectors/postgresql

Path Parameters:

ParameterTypeDescription
idstringConnector ID

Response (200 OK):

{
"id": "postgresql",
"name": "PostgreSQL Database",
"type": "postgres",
"version": "0.1.0",
"description": "Connect to PostgreSQL databases with connection pooling",
"category": "Database",
"icon": "🐘",
"tags": ["database", "sql", "postgres"],
"capabilities": ["query", "execute", "transactions"],
"config_schema": {
"type": "object",
"required": ["host", "database"],
"properties": {
"host": {
"type": "string",
"description": "PostgreSQL host"
},
"port": {
"type": "number",
"default": 5432,
"description": "PostgreSQL port"
},
"database": {
"type": "string",
"description": "Database name"
},
"ssl_mode": {
"type": "string",
"enum": ["disable", "require", "verify-ca", "verify-full"],
"default": "disable",
"description": "SSL mode"
}
},
"credentials": {
"username": {
"type": "string",
"description": "Database username"
},
"password": {
"type": "string",
"description": "Database password"
}
}
},
"installed": true,
"healthy": true,
"last_check": "2025-01-02T10:00:00Z"
}

Response (404 Not Found):

Connector not found

POST /api/v1/connectors/{id}/install

Install a connector with custom configuration.

Request:

curl -X POST http://localhost:8081/api/v1/connectors/postgresql/install \
-H "Content-Type: application/json" \
-d '{
"name": "analytics-db",
"tenant_id": "my-tenant",
"options": {
"host": "analytics.database.com",
"port": 5432,
"database": "analytics",
"ssl_mode": "require"
},
"credentials": {
"username": "analytics_user",
"password": "secure_password_here"
}
}'

Request Body:

FieldTypeRequiredDescription
namestringYesInstance name for this installation
tenant_idstringNoTenant to associate with
optionsobjectYesConnector-specific options
credentialsobjectNoConnector credentials

Connector-specific Options:

PostgreSQL:

OptionTypeDefaultDescription
hoststringlocalhostDatabase host
portnumber5432Database port
databasestring-Database name
ssl_modestringdisableSSL mode

Redis:

OptionTypeDefaultDescription
hoststringlocalhostRedis host
portnumber6379Redis port
dbnumber0Database number

HTTP REST:

OptionTypeDefaultDescription
base_urlstring-Base URL of the API
auth_typestringnoneAuth type (none, bearer, basic, api-key)
timeoutnumber30Request timeout in seconds

Amadeus:

OptionTypeDefaultDescription
environmentstringtestAPI environment (test, production)

Response (200 OK):

{
"success": true,
"message": "Connector installed successfully",
"connector_id": "postgresql",
"name": "analytics-db"
}

Response (400 Bad Request):

{
"error": "Invalid request body"
}

Response (404 Not Found):

Connector not found

DELETE /api/v1/connectors/{id}/uninstall

Uninstall a connector instance.

Request:

curl -X DELETE http://localhost:8081/api/v1/connectors/postgresql/uninstall

Path Parameters:

ParameterTypeDescription
idstringConnector ID to uninstall

Response (200 OK):

{
"success": true,
"message": "Connector uninstalled successfully"
}

Response (500 Internal Server Error):

{
"error": "Failed to uninstall connector: connector not found"
}

GET /api/v1/connectors/{id}/health

Check the health status of an installed connector.

Request:

curl http://localhost:8081/api/v1/connectors/postgresql/health

Path Parameters:

ParameterTypeDescription
idstringConnector ID

Response (200 OK):

{
"connector_id": "postgresql",
"healthy": true,
"status": "connected",
"latency_ms": 5,
"timestamp": "2025-01-02T10:00:00Z",
"details": {
"version": "PostgreSQL 15.4",
"connection_pool": {
"active": 2,
"idle": 8,
"max": 10
}
}
}

Response (Unhealthy):

{
"connector_id": "postgresql",
"healthy": false,
"status": "connection_failed",
"error": "connection refused",
"timestamp": "2025-01-02T10:00:00Z"
}

Available Connectors

Community Connectors

IDNameCategoryDescription
postgresqlPostgreSQLDatabaseSQL database with connection pooling
mysqlMySQLDatabaseMySQL/MariaDB database connector
mongodbMongoDBDatabaseDocument database connector
redis-cacheRedis CacheCacheHigh-performance key-value store
http-restHTTP REST APIAPIGeneric REST API connector

Enterprise Connectors

IDNameCategoryDescription
amadeus-travelAmadeus TravelTravelFlight, hotel, and airport search
salesforceSalesforceCRMSalesforce CRM integration
slackSlackCommunicationSlack messaging integration
snowflakeSnowflakeData WarehouseSnowflake data warehouse

Configuration Examples

PostgreSQL with SSL

{
"name": "prod-db",
"options": {
"host": "prod.database.com",
"port": 5432,
"database": "production",
"ssl_mode": "verify-full"
},
"credentials": {
"username": "app_user",
"password": "secure_password"
}
}

Redis with Authentication

{
"name": "session-cache",
"options": {
"host": "redis.internal.com",
"port": 6379,
"db": 0
},
"credentials": {
"password": "redis_auth_password"
}
}

HTTP API with Bearer Token

{
"name": "internal-api",
"options": {
"base_url": "https://api.internal.com/v1",
"auth_type": "bearer",
"timeout": 30
},
"credentials": {
"token": "your_bearer_token_here"
}
}

Error Responses

HTTP StatusDescription
400Invalid request body or configuration
404Connector not found
500Installation/uninstallation failed

Next Steps