(cls, project_name: str | None, *, force: bool = False)
| 778 | |
| 779 | @classmethod |
| 780 | def get_project_instance(cls, project_name: str | None, *, force: bool = False) -> "MCPConfig": |
| 781 | project_key = str(project_name or "").strip() |
| 782 | if not project_key: |
| 783 | return cls.get_instance() |
| 784 | |
| 785 | from helpers import projects |
| 786 | project_key = projects.validate_project_name(project_key) |
| 787 | |
| 788 | global_config = settings.get_settings().get( |
| 789 | "mcp_servers", DEFAULT_MCP_SERVERS_CONFIG |
| 790 | ) |
| 791 | project_config = projects.load_project_mcp_servers(project_key) |
| 792 | servers_data, cache_key = cls.merge_config_strings(global_config, project_config) |
| 793 | |
| 794 | with cls.__lock: |
| 795 | cached = cls.__project_instances.get(project_key) |
| 796 | if cached and cached[0] == cache_key and not force: |
| 797 | return cached[1] |
| 798 | |
| 799 | instance = cls(servers_list=servers_data, config_scope=f"project:{project_key}") |
| 800 | with cls.__lock: |
| 801 | cls.__project_instances[project_key] = (cache_key, instance) |
| 802 | return instance |
| 803 | |
| 804 | @classmethod |
| 805 | def refresh_project(cls, project_name: str) -> "MCPConfig": |
no test coverage detected