curl --request POST \
--url https://api.portkey.ai/v1/mcp-integrations \
--header 'Content-Type: application/json' \
--header 'x-portkey-api-key: <api-key>' \
--data '
{
"name": "My MCP Server",
"url": "https://mcp.example.com/mcp",
"auth_type": "none",
"transport": "http"
}
'import requests
url = "https://api.portkey.ai/v1/mcp-integrations"
payload = {
"name": "My MCP Server",
"url": "https://mcp.example.com/mcp",
"auth_type": "none",
"transport": "http"
}
headers = {
"x-portkey-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-portkey-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'My MCP Server',
url: 'https://mcp.example.com/mcp',
auth_type: 'none',
transport: 'http'
})
};
fetch('https://api.portkey.ai/v1/mcp-integrations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.portkey.ai/v1/mcp-integrations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'My MCP Server',
'url' => 'https://mcp.example.com/mcp',
'auth_type' => 'none',
'transport' => 'http'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-portkey-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.portkey.ai/v1/mcp-integrations"
payload := strings.NewReader("{\n \"name\": \"My MCP Server\",\n \"url\": \"https://mcp.example.com/mcp\",\n \"auth_type\": \"none\",\n \"transport\": \"http\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-portkey-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.portkey.ai/v1/mcp-integrations")
.header("x-portkey-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"My MCP Server\",\n \"url\": \"https://mcp.example.com/mcp\",\n \"auth_type\": \"none\",\n \"transport\": \"http\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.portkey.ai/v1/mcp-integrations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-portkey-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"My MCP Server\",\n \"url\": \"https://mcp.example.com/mcp\",\n \"auth_type\": \"none\",\n \"transport\": \"http\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "<string>"
}Create MCP Integration
Create a new MCP Integration. Requires either organisation_id (with admin API key) or workspace_id in body.
curl --request POST \
--url https://api.portkey.ai/v1/mcp-integrations \
--header 'Content-Type: application/json' \
--header 'x-portkey-api-key: <api-key>' \
--data '
{
"name": "My MCP Server",
"url": "https://mcp.example.com/mcp",
"auth_type": "none",
"transport": "http"
}
'import requests
url = "https://api.portkey.ai/v1/mcp-integrations"
payload = {
"name": "My MCP Server",
"url": "https://mcp.example.com/mcp",
"auth_type": "none",
"transport": "http"
}
headers = {
"x-portkey-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-portkey-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'My MCP Server',
url: 'https://mcp.example.com/mcp',
auth_type: 'none',
transport: 'http'
})
};
fetch('https://api.portkey.ai/v1/mcp-integrations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.portkey.ai/v1/mcp-integrations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'My MCP Server',
'url' => 'https://mcp.example.com/mcp',
'auth_type' => 'none',
'transport' => 'http'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-portkey-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.portkey.ai/v1/mcp-integrations"
payload := strings.NewReader("{\n \"name\": \"My MCP Server\",\n \"url\": \"https://mcp.example.com/mcp\",\n \"auth_type\": \"none\",\n \"transport\": \"http\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-portkey-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.portkey.ai/v1/mcp-integrations")
.header("x-portkey-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"My MCP Server\",\n \"url\": \"https://mcp.example.com/mcp\",\n \"auth_type\": \"none\",\n \"transport\": \"http\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.portkey.ai/v1/mcp-integrations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-portkey-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"My MCP Server\",\n \"url\": \"https://mcp.example.com/mcp\",\n \"auth_type\": \"none\",\n \"transport\": \"http\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "<string>"
}Portkey is now PRISMA AIRS AI Gateway. See it in action.
Authorizations
Body
Only include optional fields (slug, description, configurations) when you have values for them. The example and code samples show required fields plus workspace_id and organisation_id when scoping.
Display name of the MCP integration
MCP server URL
oauth_auto, headers, none http, sse Organisation ID (optional; required when using org admin API key without workspace_id)
Workspace ID (optional; to create at workspace level)
Optional slug; must be unique within organisation
^[a-zA-Z0-9_-]+$Auth/config key-value pairs (e.g. headers, client credentials)
Show child attributes
Show child attributes
Dynamically resolve secrets from secret references at runtime. Valid target_field values are "configurations." (e.g. "configurations.oauth_metadata"). Each target_field must be unique.
Show child attributes
Show child attributes
Was this page helpful?

