Update MCP server
curl --request PATCH \
--url https://api.zudu.ai/api/mcp-servers/{mcpServerId} \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--header 'X-API-SECRET: <api-key>' \
--data '
{
"name": "Updated Server Name",
"url": "https://new-server-url.example.com",
"description": "Updated description",
"approval_policy": "auto_approve_read_only",
"transport": "WebSocket",
"request_headers": {
"Authorization": "Bearer new-token",
"User-Agent": "MCP-Client/2.0"
}
}
'import requests
url = "https://api.zudu.ai/api/mcp-servers/{mcpServerId}"
payload = {
"name": "Updated Server Name",
"url": "https://new-server-url.example.com",
"description": "Updated description",
"approval_policy": "auto_approve_read_only",
"transport": "WebSocket",
"request_headers": {
"Authorization": "Bearer new-token",
"User-Agent": "MCP-Client/2.0"
}
}
headers = {
"X-API-KEY": "<api-key>",
"X-API-SECRET": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'X-API-KEY': '<api-key>',
'X-API-SECRET': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Updated Server Name',
url: 'https://new-server-url.example.com',
description: 'Updated description',
approval_policy: 'auto_approve_read_only',
transport: 'WebSocket',
request_headers: {Authorization: 'Bearer new-token', 'User-Agent': 'MCP-Client/2.0'}
})
};
fetch('https://api.zudu.ai/api/mcp-servers/{mcpServerId}', 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.zudu.ai/api/mcp-servers/{mcpServerId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Updated Server Name',
'url' => 'https://new-server-url.example.com',
'description' => 'Updated description',
'approval_policy' => 'auto_approve_read_only',
'transport' => 'WebSocket',
'request_headers' => [
'Authorization' => 'Bearer new-token',
'User-Agent' => 'MCP-Client/2.0'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>",
"X-API-SECRET: <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.zudu.ai/api/mcp-servers/{mcpServerId}"
payload := strings.NewReader("{\n \"name\": \"Updated Server Name\",\n \"url\": \"https://new-server-url.example.com\",\n \"description\": \"Updated description\",\n \"approval_policy\": \"auto_approve_read_only\",\n \"transport\": \"WebSocket\",\n \"request_headers\": {\n \"Authorization\": \"Bearer new-token\",\n \"User-Agent\": \"MCP-Client/2.0\"\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("X-API-SECRET", "<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.patch("https://api.zudu.ai/api/mcp-servers/{mcpServerId}")
.header("X-API-KEY", "<api-key>")
.header("X-API-SECRET", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Updated Server Name\",\n \"url\": \"https://new-server-url.example.com\",\n \"description\": \"Updated description\",\n \"approval_policy\": \"auto_approve_read_only\",\n \"transport\": \"WebSocket\",\n \"request_headers\": {\n \"Authorization\": \"Bearer new-token\",\n \"User-Agent\": \"MCP-Client/2.0\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zudu.ai/api/mcp-servers/{mcpServerId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-API-KEY"] = '<api-key>'
request["X-API-SECRET"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Updated Server Name\",\n \"url\": \"https://new-server-url.example.com\",\n \"description\": \"Updated description\",\n \"approval_policy\": \"auto_approve_read_only\",\n \"transport\": \"WebSocket\",\n \"request_headers\": {\n \"Authorization\": \"Bearer new-token\",\n \"User-Agent\": \"MCP-Client/2.0\"\n }\n}"
response = http.request(request)
puts response.read_body{
"message": "MCP server updated successfully",
"status": "success",
"error": null,
"data": {
"id": "mcp_8c180796-e6d7-4343-88b5-5df0846fef69",
"organization_id": "org_2zC2v0GqxbrfKq1rKazb3gFcPEq",
"url": "https://new-server-url.example.com",
"name": "Updated Server Name",
"approval_policy": "auto_approve_read_only",
"transport": "WebSocket",
"description": "Updated description",
"request_headers": {
"Authorization": "Bearer new-token",
"User-Agent": "MCP-Client/2.0"
},
"updated_at": 1751401500000
}
}{
"message": "Validation failed",
"status": "error",
"error": "MCP server name is required",
"data": null
}{
"message": "MCP server not found",
"status": "error",
"error": "MCP server with ID 'mcp_invalid_id' does not exist in organization",
"data": null
}{
"message": "MCP server name already exists",
"status": "error",
"error": "MCP server with name 'Test Server' already exists in organization",
"data": null
}{
"message": "Internal server error",
"status": "error",
"error": "Server error",
"data": null
}MCP Servers
Update MCP server
Updates an MCP server (current behavior).
PATCH
/
api
/
mcp-servers
/
{mcpServerId}
Update MCP server
curl --request PATCH \
--url https://api.zudu.ai/api/mcp-servers/{mcpServerId} \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--header 'X-API-SECRET: <api-key>' \
--data '
{
"name": "Updated Server Name",
"url": "https://new-server-url.example.com",
"description": "Updated description",
"approval_policy": "auto_approve_read_only",
"transport": "WebSocket",
"request_headers": {
"Authorization": "Bearer new-token",
"User-Agent": "MCP-Client/2.0"
}
}
'import requests
url = "https://api.zudu.ai/api/mcp-servers/{mcpServerId}"
payload = {
"name": "Updated Server Name",
"url": "https://new-server-url.example.com",
"description": "Updated description",
"approval_policy": "auto_approve_read_only",
"transport": "WebSocket",
"request_headers": {
"Authorization": "Bearer new-token",
"User-Agent": "MCP-Client/2.0"
}
}
headers = {
"X-API-KEY": "<api-key>",
"X-API-SECRET": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
'X-API-KEY': '<api-key>',
'X-API-SECRET': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Updated Server Name',
url: 'https://new-server-url.example.com',
description: 'Updated description',
approval_policy: 'auto_approve_read_only',
transport: 'WebSocket',
request_headers: {Authorization: 'Bearer new-token', 'User-Agent': 'MCP-Client/2.0'}
})
};
fetch('https://api.zudu.ai/api/mcp-servers/{mcpServerId}', 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.zudu.ai/api/mcp-servers/{mcpServerId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Updated Server Name',
'url' => 'https://new-server-url.example.com',
'description' => 'Updated description',
'approval_policy' => 'auto_approve_read_only',
'transport' => 'WebSocket',
'request_headers' => [
'Authorization' => 'Bearer new-token',
'User-Agent' => 'MCP-Client/2.0'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>",
"X-API-SECRET: <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.zudu.ai/api/mcp-servers/{mcpServerId}"
payload := strings.NewReader("{\n \"name\": \"Updated Server Name\",\n \"url\": \"https://new-server-url.example.com\",\n \"description\": \"Updated description\",\n \"approval_policy\": \"auto_approve_read_only\",\n \"transport\": \"WebSocket\",\n \"request_headers\": {\n \"Authorization\": \"Bearer new-token\",\n \"User-Agent\": \"MCP-Client/2.0\"\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("X-API-SECRET", "<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.patch("https://api.zudu.ai/api/mcp-servers/{mcpServerId}")
.header("X-API-KEY", "<api-key>")
.header("X-API-SECRET", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Updated Server Name\",\n \"url\": \"https://new-server-url.example.com\",\n \"description\": \"Updated description\",\n \"approval_policy\": \"auto_approve_read_only\",\n \"transport\": \"WebSocket\",\n \"request_headers\": {\n \"Authorization\": \"Bearer new-token\",\n \"User-Agent\": \"MCP-Client/2.0\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zudu.ai/api/mcp-servers/{mcpServerId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-API-KEY"] = '<api-key>'
request["X-API-SECRET"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Updated Server Name\",\n \"url\": \"https://new-server-url.example.com\",\n \"description\": \"Updated description\",\n \"approval_policy\": \"auto_approve_read_only\",\n \"transport\": \"WebSocket\",\n \"request_headers\": {\n \"Authorization\": \"Bearer new-token\",\n \"User-Agent\": \"MCP-Client/2.0\"\n }\n}"
response = http.request(request)
puts response.read_body{
"message": "MCP server updated successfully",
"status": "success",
"error": null,
"data": {
"id": "mcp_8c180796-e6d7-4343-88b5-5df0846fef69",
"organization_id": "org_2zC2v0GqxbrfKq1rKazb3gFcPEq",
"url": "https://new-server-url.example.com",
"name": "Updated Server Name",
"approval_policy": "auto_approve_read_only",
"transport": "WebSocket",
"description": "Updated description",
"request_headers": {
"Authorization": "Bearer new-token",
"User-Agent": "MCP-Client/2.0"
},
"updated_at": 1751401500000
}
}{
"message": "Validation failed",
"status": "error",
"error": "MCP server name is required",
"data": null
}{
"message": "MCP server not found",
"status": "error",
"error": "MCP server with ID 'mcp_invalid_id' does not exist in organization",
"data": null
}{
"message": "MCP server name already exists",
"status": "error",
"error": "MCP server with name 'Test Server' already exists in organization",
"data": null
}{
"message": "Internal server error",
"status": "error",
"error": "Server error",
"data": null
}Notes
- Supports partial updates of MCP server configuration
Authorizations
API Key for MCP server and external service authentication
API Secret for MCP server and external service authentication
Path Parameters
MCP server ID
Example:
"mcp_8c180796-e6d7-4343-88b5-5df0846fef69"
Body
application/json
⌘I