91 lines
2.9 KiB
Python
91 lines
2.9 KiB
Python
import json
|
|
|
|
print("=== Testing DNS Functionality in Vultr MCP Server ===\n")
|
|
|
|
# Read server.py
|
|
with open('src/vultr_mcp/server.py', 'r') as f:
|
|
content = f.read()
|
|
|
|
# 1. Check DNS tools in tools list
|
|
tools_section_start = content.find('@app.get("/tools")')
|
|
tools_section_end = content.find('return tools', tools_section_start)
|
|
tools_section = content[tools_section_start:tools_section_end]
|
|
|
|
dns_tools_in_list = []
|
|
for line in tools_section.split('\n'):
|
|
if 'name="list_dns_domains"' in line or \
|
|
'name="create_dns_domain"' in line or \
|
|
'name="delete_dns_domain"' in line or \
|
|
'name="get_dns_domain"' in line or \
|
|
'name="list_dns_records"' in line or \
|
|
'name="create_dns_record"' in line or \
|
|
'name="update_dns_record"' in line or \
|
|
'name="delete_dns_record"' in line:
|
|
# Extract tool name
|
|
if 'name=' in line:
|
|
name = line.split('name=')[1].split('"')[1]
|
|
dns_tools_in_list.append(name)
|
|
|
|
print(f"1. DNS Tools in /tools endpoint: {len(dns_tools_in_list)} tools")
|
|
for tool in sorted(dns_tools_in_list):
|
|
print(f" ✓ {tool}")
|
|
|
|
# 2. Check DNS tool handling in call_tool function
|
|
dns_tools_in_handler = []
|
|
lines = content.split('\n')
|
|
for i, line in enumerate(lines):
|
|
if 'elif request.name ==' in line and 'dns' in line.lower():
|
|
tool_name = line.split('"')[1]
|
|
dns_tools_in_handler.append(tool_name)
|
|
|
|
print(f"\n2. DNS Tools in call_tool handler: {len(dns_tools_in_handler)} tools")
|
|
for tool in sorted(dns_tools_in_handler):
|
|
print(f" ✓ {tool}")
|
|
|
|
# 3. Check DNS resources
|
|
dns_resources = []
|
|
for line in lines:
|
|
if 'uri="vultr://dns' in line:
|
|
uri = line.split('uri="')[1].split('"')[0]
|
|
dns_resources.append(uri)
|
|
|
|
print(f"\n3. DNS Resources in /resources endpoint: {len(dns_resources)} resources")
|
|
for resource in sorted(dns_resources):
|
|
print(f" ✓ {resource}")
|
|
|
|
# 4. Check DNS prompts
|
|
dns_prompts = []
|
|
for line in lines:
|
|
if 'name="manage_dns"' in line:
|
|
dns_prompts.append('manage_dns')
|
|
|
|
print(f"\n4. DNS Prompts in /prompts endpoint: {len(dns_prompts)} prompts")
|
|
for prompt in dns_prompts:
|
|
print(f" ✓ {prompt}")
|
|
|
|
# 5. Verify all DNS tools are properly connected
|
|
print("\n5. Verification Summary:")
|
|
all_dns_tools = [
|
|
'list_dns_domains',
|
|
'create_dns_domain',
|
|
'delete_dns_domain',
|
|
'get_dns_domain',
|
|
'list_dns_records',
|
|
'create_dns_record',
|
|
'update_dns_record',
|
|
'delete_dns_record'
|
|
]
|
|
|
|
missing_in_list = [t for t in all_dns_tools if t not in dns_tools_in_list]
|
|
missing_in_handler = [t for t in all_dns_tools if t not in dns_tools_in_handler]
|
|
|
|
if not missing_in_list and not missing_in_handler:
|
|
print(" ✓ All 8 DNS tools are properly implemented!")
|
|
else:
|
|
if missing_in_list:
|
|
print(f" ✗ Missing in tools list: {missing_in_list}")
|
|
if missing_in_handler:
|
|
print(f" ✗ Missing in call_tool handler: {missing_in_handler}")
|
|
|
|
print("\n=== DNS Functionality Test Complete ===")
|