Skip to main content
Glama

Vultr MCP

by rsp2k
junit-fast.xmlโ€ข31.1 kB
<?xml version="1.0" encoding="utf-8"?><testsuites name="pytest tests"><testsuite name="pytest" errors="0" failures="10" skipped="1" tests="80" time="10.356" timestamp="2025-09-13T04:25:26.807326-06:00" hostname="rpm-bullet"><testcase classname="tests.test_cache.TestCacheManager" name="test_init_default_parameters" time="0.001" /><testcase classname="tests.test_cache.TestCacheManager" name="test_init_custom_parameters" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_generate_key_basic" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_generate_key_with_params" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_generate_key_deterministic" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_get_cache_domain_endpoint" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_get_cache_record_endpoint" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_get_cache_general_endpoint" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_get_cache_precedence" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_get_success" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_get_miss" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_get_non_get_method" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_get_with_exception" time="0.001" /><testcase classname="tests.test_cache.TestCacheManager" name="test_set_success" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_set_non_get_method" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_set_none_value" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_set_with_exception" time="0.001"><failure message="AssertionError: Expected 'warning' to have been called once. Called 0 times.">../../.local/share/uv/python/cpython-3.12.11-linux-x86_64-gnu/lib/python3.12/unittest/mock.py:928: in assert_called_once raise AssertionError(msg) E AssertionError: Expected 'warning' to have been called once. Called 0 times. During handling of the above exception, another exception occurred: tests/test_cache.py:244: in test_set_with_exception mock_logger.warning.assert_called_once() E AssertionError: Expected 'warning' to have been called once. Called 0 times.</failure><system-out>--------------------------------- Captured Out --------------------------------- </system-out></testcase><testcase classname="tests.test_cache.TestCacheManager" name="test_invalidate_all" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_invalidate_domain_pattern" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_invalidate_record_pattern" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_invalidate_other_pattern" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_get_stats_empty" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_get_stats_with_data" time="0.000" /><testcase classname="tests.test_cache.TestCacheManager" name="test_hit_rate_calculation_edge_cases" time="0.000" /><testcase classname="tests.test_cache.TestTTLBehavior" name="test_cache_expiration" time="1.200" /><testcase classname="tests.test_cache.TestTTLBehavior" name="test_different_ttl_per_cache_type" time="0.000" /><testcase classname="tests.test_cache.TestTTLBehavior" name="test_cache_size_limits" time="0.000" /><testcase classname="tests.test_cache.TestCachedRequestDecorator" name="test_decorator_basic_usage" time="0.001" /><testcase classname="tests.test_cache.TestCachedRequestDecorator" name="test_decorator_different_endpoints" time="0.001" /><testcase classname="tests.test_cache.TestCachedRequestDecorator" name="test_decorator_with_params" time="0.001"><failure message="assert &quot;response-{'page': 1}-1&quot; == &quot;response-{'page': 2}-2&quot;&#10; &#10; - response-{'page': 2}-2&#10; ? ^ ^&#10; + response-{'page': 1}-1&#10; ? ^ ^">tests/test_cache.py:477: in test_decorator_with_params assert result2 == "response-{'page': 2}-2" E assert "response-{'page': 1}-1" == "response-{'page': 2}-2" E E - response-{'page': 2}-2 E ? ^ ^ E + response-{'page': 1}-1 E ? ^ ^</failure><system-out>--------------------------------- Captured Out --------------------------------- 2025-09-13 04:25:28 [debug ] Cache set [mcp_vultr.cache] cache_type=TTLCache endpoint=/api/domains key=c2cfb83a 2025-09-13 04:25:28 [debug ] Cache hit [mcp_vultr.cache] cache_type=TTLCache endpoint=/api/domains key=c2cfb83a 2025-09-13 04:25:28 [debug ] Cache hit [mcp_vultr.cache] cache_type=TTLCache endpoint=/api/domains key=c2cfb83a </system-out></testcase><testcase classname="tests.test_cache.TestCachedRequestDecorator" name="test_decorator_non_get_methods" time="0.000" /><testcase classname="tests.test_cache.TestCachedRequestDecorator" name="test_decorator_with_kwargs_method" time="0.000" /><testcase classname="tests.test_cache.TestCachedRequestDecorator" name="test_decorator_default_cache_manager" time="0.000" /><testcase classname="tests.test_cache.TestGlobalCacheFunctions" name="test_get_cache_manager" time="0.000" /><testcase classname="tests.test_cache.TestGlobalCacheFunctions" name="test_clear_cache_function" time="0.000" /><testcase classname="tests.test_cache.TestGlobalCacheFunctions" name="test_clear_cache_with_pattern" time="0.000" /><testcase classname="tests.test_cache.TestGlobalCacheFunctions" name="test_get_cache_stats_function" time="0.000" /><testcase classname="tests.test_cache.TestCacheEvictionAndMemoryManagement" name="test_lru_eviction" time="0.000" /><testcase classname="tests.test_cache.TestCacheEvictionAndMemoryManagement" name="test_cache_size_distribution" time="0.000" /><testcase classname="tests.test_cache.TestCacheEvictionAndMemoryManagement" name="test_concurrent_access_safety" time="0.000" /><testcase classname="tests.test_cache.TestCacheIntegrationScenarios" name="test_api_client_cache_integration" time="1.202"><failure message="assert 2 == 3">tests/test_cache.py:692: in test_api_client_cache_integration assert api_call_count == 3 E assert 2 == 3</failure><system-out>--------------------------------- Captured Out --------------------------------- 2025-09-13 04:25:28 [debug ] Cache set [mcp_vultr.cache] cache_type=TTLCache endpoint=/api/domains key=c2cfb83a 2025-09-13 04:25:28 [debug ] Cache hit [mcp_vultr.cache] cache_type=TTLCache endpoint=/api/domains key=c2cfb83a 2025-09-13 04:25:28 [debug ] Cache set [mcp_vultr.cache] cache_type=TTLCache endpoint=/api/records key=22ddfb40 2025-09-13 04:25:29 [debug ] Cache hit [mcp_vultr.cache] cache_type=TTLCache endpoint=/api/domains key=c2cfb83a </system-out></testcase><testcase classname="tests.test_cache.TestCacheIntegrationScenarios" name="test_cache_performance_under_load" time="0.011" /><testcase classname="tests.test_cache.TestCacheIntegrationScenarios" name="test_memory_efficiency" time="0.003" /><testcase classname="tests.test_cache.TestCacheIntegrationScenarios" name="test_cache_invalidation_patterns" time="0.000" /><testcase classname="tests.test_cli.TestCLIBasics" name="test_cli_help" time="0.003" /><testcase classname="tests.test_cli.TestCLIBasics" name="test_cli_version" time="0.000" /><testcase classname="tests.test_cli.TestCLIBasics" name="test_cli_without_api_key" time="0.002" /><testcase classname="tests.test_cli.TestServerCommand" name="test_server_command_without_api_key" time="0.001" /><testcase classname="tests.test_cli.TestServerCommand" name="test_server_command_with_api_key" time="0.174"><skipped type="pytest.xfail" message="FastMCP server has import issues that need fixing" /></testcase><testcase classname="tests.test_cli.TestDomainsCommands" name="test_list_domains" time="0.003" /><testcase classname="tests.test_cli.TestDomainsCommands" name="test_list_domains_empty" time="0.001" /><testcase classname="tests.test_cli.TestDomainsCommands" name="test_domain_info" time="0.002" /><testcase classname="tests.test_cli.TestDomainsCommands" name="test_create_domain" time="0.002" /><testcase classname="tests.test_cli.TestRecordsCommands" name="test_list_records" time="0.002" /><testcase classname="tests.test_cli.TestRecordsCommands" name="test_list_records_filtered" time="0.002" /><testcase classname="tests.test_cli.TestRecordsCommands" name="test_list_records_empty" time="0.001" /><testcase classname="tests.test_cli.TestRecordsCommands" name="test_add_record" time="0.002" /><testcase classname="tests.test_cli.TestRecordsCommands" name="test_add_record_with_ttl_and_priority" time="0.002" /><testcase classname="tests.test_cli.TestRecordsCommands" name="test_delete_record" time="0.002" /><testcase classname="tests.test_cli.TestRecordsCommands" name="test_delete_record_failure" time="0.001" /><testcase classname="tests.test_cli.TestSetupCommands" name="test_setup_website" time="0.002" /><testcase classname="tests.test_cli.TestSetupCommands" name="test_setup_website_no_www" time="0.002" /><testcase classname="tests.test_cli.TestSetupCommands" name="test_setup_website_with_ttl" time="0.002" /><testcase classname="tests.test_cli.TestSetupCommands" name="test_setup_email" time="0.002" /><testcase classname="tests.test_cli.TestSetupCommands" name="test_setup_email_custom_priority" time="0.002" /><testcase classname="tests.test_cli.TestCLIErrorHandling" name="test_api_exception_handling" time="0.001" /><testcase classname="tests.test_cli.TestCLIErrorHandling" name="test_missing_arguments" time="0.001" /><testcase classname="tests.test_cli.TestCLIErrorHandling" name="test_invalid_command" time="0.000" /><testcase classname="tests.test_cli_error_scenarios.TestCLIAuthenticationErrors" name="test_cli_missing_api_key_environment_variable" time="0.001" /><testcase classname="tests.test_cli_error_scenarios.TestCLIAuthenticationErrors" name="test_cli_empty_api_key_environment_variable" time="0.001"><failure message="AssertionError: assert ('api key' in 'error: vultr_api_key is required\nset it as an environment variable or use --api-key option\n' or 'empty' in 'error: vultr_api_key is required\nset it as an environment variable or use --api-key option\n')&#10; + where 'error: vultr_api_key is required\nset it as an environment variable or use --api-key option\n' = &lt;built-in method lower of str object at 0x7f952fb18f60&gt;()&#10; + where &lt;built-in method lower of str object at 0x7f952fb18f60&gt; = 'Error: VULTR_API_KEY is required\nSet it as an environment variable or use --api-key option\n'.lower&#10; + where 'Error: VULTR_API_KEY is required\nSet it as an environment variable or use --api-key option\n' = &lt;Result SystemExit(1)&gt;.output&#10; + and 'error: vultr_api_key is required\nset it as an environment variable or use --api-key option\n' = &lt;built-in method lower of str object at 0x7f952fb18c00&gt;()&#10; + where &lt;built-in method lower of str object at 0x7f952fb18c00&gt; = 'Error: VULTR_API_KEY is required\nSet it as an environment variable or use --api-key option\n'.lower&#10; + where 'Error: VULTR_API_KEY is required\nSet it as an environment variable or use --api-key option\n' = &lt;Result SystemExit(1)&gt;.output">tests/test_cli_error_scenarios.py:44: in test_cli_empty_api_key_environment_variable assert "api key" in result.output.lower() or "empty" in result.output.lower() E AssertionError: assert ('api key' in 'error: vultr_api_key is required\nset it as an environment variable or use --api-key option\n' or 'empty' in 'error: vultr_api_key is required\nset it as an environment variable or use --api-key option\n') E + where 'error: vultr_api_key is required\nset it as an environment variable or use --api-key option\n' = &lt;built-in method lower of str object at 0x7f952fb18f60&gt;() E + where &lt;built-in method lower of str object at 0x7f952fb18f60&gt; = 'Error: VULTR_API_KEY is required\nSet it as an environment variable or use --api-key option\n'.lower E + where 'Error: VULTR_API_KEY is required\nSet it as an environment variable or use --api-key option\n' = &lt;Result SystemExit(1)&gt;.output E + and 'error: vultr_api_key is required\nset it as an environment variable or use --api-key option\n' = &lt;built-in method lower of str object at 0x7f952fb18c00&gt;() E + where &lt;built-in method lower of str object at 0x7f952fb18c00&gt; = 'Error: VULTR_API_KEY is required\nSet it as an environment variable or use --api-key option\n'.lower E + where 'Error: VULTR_API_KEY is required\nSet it as an environment variable or use --api-key option\n' = &lt;Result SystemExit(1)&gt;.output</failure><system-out>--------------------------------- Captured Out --------------------------------- </system-out></testcase><testcase classname="tests.test_cli_error_scenarios.TestCLIAuthenticationErrors" name="test_cli_invalid_api_key_format" time="7.354" /><testcase classname="tests.test_cli_error_scenarios.TestDomainCommandErrors" name="test_domains_delete_missing_confirmation" time="0.001" /><testcase classname="tests.test_cli_error_scenarios.TestRecordCommandErrors" name="test_records_create_invalid_record_type" time="0.003"><failure message="assert ('invalid' in &quot;usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'create'.\n&quot; or 'type' in &quot;usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'create'.\n&quot;)&#10; + where &quot;usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'create'.\n&quot; = &lt;built-in method lower of str object at 0x7f952fcdfaf0&gt;()&#10; + where &lt;built-in method lower of str object at 0x7f952fcdfaf0&gt; = &quot;Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'create'.\n&quot;.lower&#10; + where &quot;Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'create'.\n&quot; = &lt;Result SystemExit(2)&gt;.output&#10; + and &quot;usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'create'.\n&quot; = &lt;built-in method lower of str object at 0x7f952fcdfb90&gt;()&#10; + where &lt;built-in method lower of str object at 0x7f952fcdfb90&gt; = &quot;Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'create'.\n&quot;.lower&#10; + where &quot;Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'create'.\n&quot; = &lt;Result SystemExit(2)&gt;.output">tests/test_cli_error_scenarios.py:184: in test_records_create_invalid_record_type assert "invalid" in result.output.lower() or "type" in result.output.lower() E assert ('invalid' in "usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'create'.\n" or 'type' in "usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'create'.\n") E + where "usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'create'.\n" = &lt;built-in method lower of str object at 0x7f952fcdfaf0&gt;() E + where &lt;built-in method lower of str object at 0x7f952fcdfaf0&gt; = "Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'create'.\n".lower E + where "Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'create'.\n" = &lt;Result SystemExit(2)&gt;.output E + and "usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'create'.\n" = &lt;built-in method lower of str object at 0x7f952fcdfb90&gt;() E + where &lt;built-in method lower of str object at 0x7f952fcdfb90&gt; = "Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'create'.\n".lower E + where "Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'create'.\n" = &lt;Result SystemExit(2)&gt;.output</failure><system-out>--------------------------------- Captured Out --------------------------------- </system-out></testcase><testcase classname="tests.test_cli_error_scenarios.TestRecordCommandErrors" name="test_records_create_invalid_ip_address" time="0.002"><failure message="assert ('ip' in &quot;usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'create'.\n&quot; or 'invalid' in &quot;usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'create'.\n&quot;)&#10; + where &quot;usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'create'.\n&quot; = &lt;built-in method lower of str object at 0x7f952fc402b0&gt;()&#10; + where &lt;built-in method lower of str object at 0x7f952fc402b0&gt; = &quot;Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'create'.\n&quot;.lower&#10; + where &quot;Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'create'.\n&quot; = &lt;Result SystemExit(2)&gt;.output&#10; + and &quot;usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'create'.\n&quot; = &lt;built-in method lower of str object at 0x7f952fc412f0&gt;()&#10; + where &lt;built-in method lower of str object at 0x7f952fc412f0&gt; = &quot;Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'create'.\n&quot;.lower&#10; + where &quot;Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'create'.\n&quot; = &lt;Result SystemExit(2)&gt;.output">tests/test_cli_error_scenarios.py:198: in test_records_create_invalid_ip_address assert "ip" in result.output.lower() or "invalid" in result.output.lower() E assert ('ip' in "usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'create'.\n" or 'invalid' in "usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'create'.\n") E + where "usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'create'.\n" = &lt;built-in method lower of str object at 0x7f952fc402b0&gt;() E + where &lt;built-in method lower of str object at 0x7f952fc402b0&gt; = "Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'create'.\n".lower E + where "Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'create'.\n" = &lt;Result SystemExit(2)&gt;.output E + and "usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'create'.\n" = &lt;built-in method lower of str object at 0x7f952fc412f0&gt;() E + where &lt;built-in method lower of str object at 0x7f952fc412f0&gt; = "Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'create'.\n".lower E + where "Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'create'.\n" = &lt;Result SystemExit(2)&gt;.output</failure><system-out>--------------------------------- Captured Out --------------------------------- </system-out></testcase><testcase classname="tests.test_cli_error_scenarios.TestRecordCommandErrors" name="test_records_create_missing_required_arguments" time="0.001" /><testcase classname="tests.test_cli_error_scenarios.TestRecordCommandErrors" name="test_records_update_record_not_found" time="0.001"><failure message="assert 'not found' in &quot;usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'update'.\n&quot;&#10; + where &quot;usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'update'.\n&quot; = &lt;built-in method lower of str object at 0x7f952fcde5b0&gt;()&#10; + where &lt;built-in method lower of str object at 0x7f952fcde5b0&gt; = &quot;Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'update'.\n&quot;.lower&#10; + where &quot;Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'update'.\n&quot; = &lt;Result SystemExit(2)&gt;.output">tests/test_cli_error_scenarios.py:225: in test_records_update_record_not_found assert "not found" in result.output.lower() E assert 'not found' in "usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'update'.\n" E + where "usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'update'.\n" = &lt;built-in method lower of str object at 0x7f952fcde5b0&gt;() E + where &lt;built-in method lower of str object at 0x7f952fcde5b0&gt; = "Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'update'.\n".lower E + where "Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'update'.\n" = &lt;Result SystemExit(2)&gt;.output</failure><system-out>--------------------------------- Captured Out --------------------------------- </system-out></testcase><testcase classname="tests.test_cli_error_scenarios.TestRecordCommandErrors" name="test_records_delete_missing_record_id" time="0.001" /><testcase classname="tests.test_cli_error_scenarios.TestRecordCommandErrors" name="test_records_update_no_changes_specified" time="0.001"><failure message="assert ('change' in &quot;usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'update'.\n&quot; or 'specify' in &quot;usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'update'.\n&quot;)&#10; + where &quot;usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'update'.\n&quot; = &lt;built-in method lower of str object at 0x7f952fce4f30&gt;()&#10; + where &lt;built-in method lower of str object at 0x7f952fce4f30&gt; = &quot;Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'update'.\n&quot;.lower&#10; + where &quot;Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'update'.\n&quot; = &lt;Result SystemExit(2)&gt;.output&#10; + and &quot;usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'update'.\n&quot; = &lt;built-in method lower of str object at 0x7f952fce4df0&gt;()&#10; + where &lt;built-in method lower of str object at 0x7f952fce4df0&gt; = &quot;Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'update'.\n&quot;.lower&#10; + where &quot;Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'update'.\n&quot; = &lt;Result SystemExit(2)&gt;.output">tests/test_cli_error_scenarios.py:250: in test_records_update_no_changes_specified assert "change" in result.output.lower() or "specify" in result.output.lower() E assert ('change' in "usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'update'.\n" or 'specify' in "usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'update'.\n") E + where "usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'update'.\n" = &lt;built-in method lower of str object at 0x7f952fce4f30&gt;() E + where &lt;built-in method lower of str object at 0x7f952fce4f30&gt; = "Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'update'.\n".lower E + where "Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'update'.\n" = &lt;Result SystemExit(2)&gt;.output E + and "usage: cli records [options] command [args]...\ntry 'cli records --help' for help.\n\nerror: no such command 'update'.\n" = &lt;built-in method lower of str object at 0x7f952fce4df0&gt;() E + where &lt;built-in method lower of str object at 0x7f952fce4df0&gt; = "Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'update'.\n".lower E + where "Usage: cli records [OPTIONS] COMMAND [ARGS]...\nTry 'cli records --help' for help.\n\nError: No such command 'update'.\n" = &lt;Result SystemExit(2)&gt;.output</failure><system-out>--------------------------------- Captured Out --------------------------------- </system-out></testcase><testcase classname="tests.test_cli_error_scenarios.TestSetupCommandErrors" name="test_setup_website_invalid_ip_format" time="0.001"><failure message="assert ('ip' in &quot;usage: cli [options] command [args]...\ntry 'cli --help' for help.\n\nerror: no such command 'setup'.\n&quot; or 'invalid' in &quot;usage: cli [options] command [args]...\ntry 'cli --help' for help.\n\nerror: no such command 'setup'.\n&quot;)&#10; + where &quot;usage: cli [options] command [args]...\ntry 'cli --help' for help.\n\nerror: no such command 'setup'.\n&quot; = &lt;built-in method lower of str object at 0x7f952fb18c00&gt;()&#10; + where &lt;built-in method lower of str object at 0x7f952fb18c00&gt; = &quot;Usage: cli [OPTIONS] COMMAND [ARGS]...\nTry 'cli --help' for help.\n\nError: No such command 'setup'.\n&quot;.lower&#10; + where &quot;Usage: cli [OPTIONS] COMMAND [ARGS]...\nTry 'cli --help' for help.\n\nError: No such command 'setup'.\n&quot; = &lt;Result SystemExit(2)&gt;.output&#10; + and &quot;usage: cli [options] command [args]...\ntry 'cli --help' for help.\n\nerror: no such command 'setup'.\n&quot; = &lt;built-in method lower of str object at 0x7f952fc02ca0&gt;()&#10; + where &lt;built-in method lower of str object at 0x7f952fc02ca0&gt; = &quot;Usage: cli [OPTIONS] COMMAND [ARGS]...\nTry 'cli --help' for help.\n\nError: No such command 'setup'.\n&quot;.lower&#10; + where &quot;Usage: cli [OPTIONS] COMMAND [ARGS]...\nTry 'cli --help' for help.\n\nError: No such command 'setup'.\n&quot; = &lt;Result SystemExit(2)&gt;.output">tests/test_cli_error_scenarios.py:274: in test_setup_website_invalid_ip_format assert "ip" in result.output.lower() or "invalid" in result.output.lower() E assert ('ip' in "usage: cli [options] command [args]...\ntry 'cli --help' for help.\n\nerror: no such command 'setup'.\n" or 'invalid' in "usage: cli [options] command [args]...\ntry 'cli --help' for help.\n\nerror: no such command 'setup'.\n") E + where "usage: cli [options] command [args]...\ntry 'cli --help' for help.\n\nerror: no such command 'setup'.\n" = &lt;built-in method lower of str object at 0x7f952fb18c00&gt;() E + where &lt;built-in method lower of str object at 0x7f952fb18c00&gt; = "Usage: cli [OPTIONS] COMMAND [ARGS]...\nTry 'cli --help' for help.\n\nError: No such command 'setup'.\n".lower E + where "Usage: cli [OPTIONS] COMMAND [ARGS]...\nTry 'cli --help' for help.\n\nError: No such command 'setup'.\n" = &lt;Result SystemExit(2)&gt;.output E + and "usage: cli [options] command [args]...\ntry 'cli --help' for help.\n\nerror: no such command 'setup'.\n" = &lt;built-in method lower of str object at 0x7f952fc02ca0&gt;() E + where &lt;built-in method lower of str object at 0x7f952fc02ca0&gt; = "Usage: cli [OPTIONS] COMMAND [ARGS]...\nTry 'cli --help' for help.\n\nError: No such command 'setup'.\n".lower E + where "Usage: cli [OPTIONS] COMMAND [ARGS]...\nTry 'cli --help' for help.\n\nError: No such command 'setup'.\n" = &lt;Result SystemExit(2)&gt;.output</failure><system-out>--------------------------------- Captured Out --------------------------------- </system-out></testcase><testcase classname="tests.test_cli_error_scenarios.TestSetupCommandErrors" name="test_setup_website_partial_failures" time="0.001"><failure message="assert 'created' in &quot;usage: cli [options] command [args]...\ntry 'cli --help' for help.\n\nerror: no such command 'setup'.\n&quot;&#10; + where &quot;usage: cli [options] command [args]...\ntry 'cli --help' for help.\n\nerror: no such command 'setup'.\n&quot; = &lt;built-in method lower of str object at 0x7f952fc023a0&gt;()&#10; + where &lt;built-in method lower of str object at 0x7f952fc023a0&gt; = &quot;Usage: cli [OPTIONS] COMMAND [ARGS]...\nTry 'cli --help' for help.\n\nError: No such command 'setup'.\n&quot;.lower&#10; + where &quot;Usage: cli [OPTIONS] COMMAND [ARGS]...\nTry 'cli --help' for help.\n\nError: No such command 'setup'.\n&quot; = &lt;Result SystemExit(2)&gt;.output">tests/test_cli_error_scenarios.py:295: in test_setup_website_partial_failures assert "created" in result.output.lower() E assert 'created' in "usage: cli [options] command [args]...\ntry 'cli --help' for help.\n\nerror: no such command 'setup'.\n" E + where "usage: cli [options] command [args]...\ntry 'cli --help' for help.\n\nerror: no such command 'setup'.\n" = &lt;built-in method lower of str object at 0x7f952fc023a0&gt;() E + where &lt;built-in method lower of str object at 0x7f952fc023a0&gt; = "Usage: cli [OPTIONS] COMMAND [ARGS]...\nTry 'cli --help' for help.\n\nError: No such command 'setup'.\n".lower E + where "Usage: cli [OPTIONS] COMMAND [ARGS]...\nTry 'cli --help' for help.\n\nError: No such command 'setup'.\n" = &lt;Result SystemExit(2)&gt;.output</failure><system-out>--------------------------------- Captured Out --------------------------------- </system-out></testcase></testsuite></testsuites>

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rsp2k/mcp-vultr'

If you have feedback or need assistance with the MCP directory API, please join our Discord server