216 lines
6.9 KiB
Python
216 lines
6.9 KiB
Python
import re
|
|
|
|
# Read the file
|
|
with open('src/vultr_mcp/server.py', 'r') as f:
|
|
lines = f.readlines()
|
|
|
|
# Find the line with 'return tools'
|
|
insert_line = -1
|
|
for i, line in enumerate(lines):
|
|
if 'return tools' in line:
|
|
insert_line = i
|
|
break
|
|
|
|
if insert_line == -1:
|
|
print("Error: Could not find 'return tools'")
|
|
exit(1)
|
|
|
|
# Find the list_os tool (should be a few lines before return tools)
|
|
list_os_line = -1
|
|
for i in range(insert_line-1, max(0, insert_line-10), -1):
|
|
if 'list_os' in lines[i]:
|
|
list_os_line = i
|
|
break
|
|
|
|
if list_os_line == -1:
|
|
print("Error: Could not find 'list_os' tool")
|
|
exit(1)
|
|
|
|
print(f"Found list_os at line {list_os_line+1}")
|
|
print(f"Found return tools at line {insert_line+1}")
|
|
|
|
# Find the end of the list_os tool definition
|
|
# Look for the closing parenthesis and comma
|
|
end_of_list_os = -1
|
|
for i in range(list_os_line, min(len(lines), list_os_line + 10)):
|
|
if '),' in lines[i] or ')' in lines[i] and i < insert_line:
|
|
end_of_list_os = i
|
|
break
|
|
|
|
if end_of_list_os == -1:
|
|
print("Error: Could not find end of list_os tool")
|
|
exit(1)
|
|
|
|
print(f"End of list_os tool at line {end_of_list_os+1}")
|
|
|
|
# DNS tools to insert
|
|
dns_tools = ''' ),
|
|
# DNS Management Tools
|
|
Tool(
|
|
name="list_dns_domains",
|
|
description="List all DNS domains",
|
|
inputSchema={"type": "object", "properties": {}}
|
|
),
|
|
Tool(
|
|
name="create_dns_domain",
|
|
description="Create a new DNS domain",
|
|
inputSchema={
|
|
"type": "object",
|
|
"properties": {
|
|
"domain": {
|
|
"type": "string",
|
|
"description": "Domain name (e.g., 'example.com')"
|
|
},
|
|
"ip": {
|
|
"type": "string",
|
|
"description": "IP address for the domain"
|
|
}
|
|
},
|
|
"required": ["domain", "ip"]
|
|
}
|
|
),
|
|
Tool(
|
|
name="delete_dns_domain",
|
|
description="Delete a DNS domain",
|
|
inputSchema={
|
|
"type": "object",
|
|
"properties": {
|
|
"domain": {
|
|
"type": "string",
|
|
"description": "Domain name"
|
|
}
|
|
},
|
|
"required": ["domain"]
|
|
}
|
|
),
|
|
Tool(
|
|
name="get_dns_domain",
|
|
description="Get DNS domain details",
|
|
inputSchema={
|
|
"type": "object",
|
|
"properties": {
|
|
"domain": {
|
|
"type": "string",
|
|
"description": "Domain name"
|
|
}
|
|
},
|
|
"required": ["domain"]
|
|
}
|
|
),
|
|
Tool(
|
|
name="list_dns_records",
|
|
description="List DNS records for a domain",
|
|
inputSchema={
|
|
"type": "object",
|
|
"properties": {
|
|
"domain": {
|
|
"type": "string",
|
|
"description": "Domain name"
|
|
}
|
|
},
|
|
"required": ["domain"]
|
|
}
|
|
),
|
|
Tool(
|
|
name="create_dns_record",
|
|
description="Create a new DNS record",
|
|
inputSchema={
|
|
"type": "object",
|
|
"properties": {
|
|
"domain": {
|
|
"type": "string",
|
|
"description": "Domain name"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"description": "Record type (A, AAAA, CNAME, MX, TXT, etc.)"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Record name (e.g., 'www', '@', 'mail')"
|
|
},
|
|
"data": {
|
|
"type": "string",
|
|
"description": "Record data (IP address, hostname, etc.)"
|
|
},
|
|
"ttl": {
|
|
"type": "integer",
|
|
"description": "Time to live in seconds",
|
|
"default": 300
|
|
},
|
|
"priority": {
|
|
"type": "integer",
|
|
"description": "Priority for MX records",
|
|
"default": 0
|
|
}
|
|
},
|
|
"required": ["domain", "type", "name", "data"]
|
|
}
|
|
),
|
|
Tool(
|
|
name="update_dns_record",
|
|
description="Update a DNS record",
|
|
inputSchema={
|
|
"type": "object",
|
|
"properties": {
|
|
"domain": {
|
|
"type": "string",
|
|
"description": "Domain name"
|
|
},
|
|
"record_id": {
|
|
"type": "string",
|
|
"description": "Record ID"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"description": "Record type (A, AAAA, CNAME, MX, TXT, etc.)"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Record name"
|
|
},
|
|
"data": {
|
|
"type": "string",
|
|
"description": "Record data"
|
|
},
|
|
"ttl": {
|
|
"type": "integer",
|
|
"description": "Time to live in seconds"
|
|
},
|
|
"priority": {
|
|
"type": "integer",
|
|
"description": "Priority for MX records"
|
|
}
|
|
},
|
|
"required": ["domain", "record_id"]
|
|
}
|
|
),
|
|
Tool(
|
|
name="delete_dns_record",
|
|
description="Delete a DNS record",
|
|
inputSchema={
|
|
"type": "object",
|
|
"properties": {
|
|
"domain": {
|
|
"type": "string",
|
|
"description": "Domain name"
|
|
},
|
|
"record_id": {
|
|
"type": "string",
|
|
"description": "Record ID"
|
|
}
|
|
},
|
|
"required": ["domain", "record_id"]
|
|
}
|
|
)'''
|
|
|
|
# Insert the DNS tools after the list_os tool
|
|
new_lines = lines[:end_of_list_os+1] + [dns_tools + '\n'] + lines[end_of_list_os+1:]
|
|
|
|
# Write the updated file
|
|
with open('src/vultr_mcp/server.py', 'w') as f:
|
|
f.writelines(new_lines)
|
|
|
|
print("DNS tools have been successfully inserted into the tools list!")
|
|
print(f"Total lines in file: {len(new_lines)}")
|