Skip to main content
Glama

Agent Knowledge MCP

test_config_workflows.pyโ€ข6.51 kB
#!/usr/bin/env python3 """ Test configuration management workflow scenarios """ import json def test_workflow_scenarios(): """Test different configuration management scenarios""" print("๐Ÿงช Testing Configuration Management Workflows...") print("\n๐Ÿ“‹ Scenario 1: Server Upgrade with User Settings") print(" Description: User has customized settings, server upgrade brings new features") # Simulate user's current config user_config = { "security": { "allowed_base_directory": "/Users/myname/documents/knowledge" }, "elasticsearch": { "host": "localhost", "port": 9200, "username": "myuser", "password": "mypass" }, "server": { "version": "1.0.20" } } # Simulate new config after upgrade new_config = { "security": { "allowed_base_directory": "/default/knowledge_base" }, "elasticsearch": { "host": "localhost", "port": 9200, "content_field": "content" # New feature added in upgrade! }, "server": { "version": "1.0.21", "auto_backup": True # New setting added in upgrade! }, "logging": { # New section added in upgrade! "level": "INFO" } } print(f" User had custom: directory={user_config['security']['allowed_base_directory']}") print(f" elasticsearch credentials, port={user_config['elasticsearch']['port']}") print(f" Upgrade brings: content_field, auto_backup, logging section") # Apply intelligent merge (simulate what server_upgrade will do) def merge_recursive(current, backup): result = current.copy() for key, backup_value in backup.items(): if key in current: current_value = current[key] if isinstance(current_value, dict) and isinstance(backup_value, dict): result[key] = merge_recursive(current_value, backup_value) else: result[key] = backup_value return result merged = merge_recursive(new_config, user_config) print(f" After server_upgrade merge:") print(f" โœ… User's directory: {merged['security']['allowed_base_directory']}") print(f" โœ… User's ES credentials preserved: username={merged['elasticsearch'].get('username', 'N/A')}") print(f" โœ… New content_field: {merged['elasticsearch'].get('content_field', 'N/A')}") print(f" โœ… New auto_backup: {merged['server'].get('auto_backup', 'N/A')}") print(f" โœ… New logging section: {merged.get('logging', {}).get('level', 'N/A')}") print("\n๐Ÿ“‹ Scenario 2: Reset Config (Manual Reset)") print(" Description: User wants to start fresh with all defaults") # Simulate user's heavily customized config custom_config = { "security": { "allowed_base_directory": "/complex/custom/path", "custom_setting": "user_value" # Will be lost }, "elasticsearch": { "host": "production-server", "port": 9300, "username": "prod_user", "password": "complex_pass", "custom_index": "my_docs" # Will be lost } } # Simulate default config default_config = { "security": { "allowed_base_directory": "/default/knowledge_base" }, "elasticsearch": { "host": "localhost", "port": 9200 }, "server": { "version": "1.0.21" } } print(f" User had: complex production setup") print(f" reset_config will: completely overwrite with defaults, create backup") print(f" Result: Clean slate with default settings") print(f" Backup: Previous settings saved as config.backup.TIMESTAMP.json") print("\n๐Ÿ“‹ Scenario 3: Deprecated Settings Handling") print(" Description: Server upgrade removes old features") old_config_with_deprecated = { "security": { "allowed_base_directory": "/user/path", "old_auth_method": "deprecated_auth" # Removed in new version }, "elasticsearch": { "host": "custom-host", "legacy_index_mode": "old_mode", # Removed in new version "deprecated_setting": "old_value" # Removed in new version }, "removed_section": { # Entire section removed in new version "old_feature": "value" } } new_config_without_deprecated = { "security": { "allowed_base_directory": "/default/path" }, "elasticsearch": { "host": "localhost", "content_field": "content" # New feature }, "server": { "version": "1.0.21" } } merged_cleaned = merge_recursive(new_config_without_deprecated, old_config_with_deprecated) print(f" Before: User had deprecated settings") print(f" After merge: deprecated settings ignored, user settings preserved") print(f" โœ… User's host preserved: {merged_cleaned['elasticsearch']['host']}") print(f" โœ… User's directory preserved: {merged_cleaned['security']['allowed_base_directory']}") print(f" โœ… New content_field added: {merged_cleaned['elasticsearch'].get('content_field')}") print(f" โœ… Deprecated settings ignored (not in result)") print(f" โœ… Removed sections ignored (not in result)") deprecated_checks = [ "old_auth_method" not in merged_cleaned["security"], "legacy_index_mode" not in merged_cleaned["elasticsearch"], "deprecated_setting" not in merged_cleaned["elasticsearch"], "removed_section" not in merged_cleaned ] if all(deprecated_checks): print(" โœ… All deprecated settings properly ignored!") else: print(" โŒ Some deprecated settings were not ignored!") print("\n๐ŸŽฏ Summary:") print(" โ€ข server_upgrade: Automatic backup + intelligent merge (preserves user, adds new, ignores deprecated)") print(" โ€ข reset_config: Manual reset to defaults (overwrites everything, creates backup)") print(" โ€ข Both handle configuration changes safely") print(" โ€ข Intelligent merge = Best of both worlds!") if __name__ == "__main__": test_workflow_scenarios()

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/itshare4u/AgentKnowledgeMCP'

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