Skip to content

Commit 0855d61

Browse files
added auth renewal
1 parent 3e9e6ea commit 0855d61

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

src/mcp_snowflake_server/server.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import uuid
66
import yaml
77
import importlib.metadata
8+
import time
89

910
from mcp.server.models import InitializationOptions
1011
import mcp.types as types
@@ -29,23 +30,27 @@ def data_to_yaml(data: Any) -> str:
2930

3031

3132
class SnowflakeDB:
33+
AUTH_EXPIRATION_TIME = 1800
34+
3235
def __init__(self, connection_config: dict):
3336
self.connection_config = connection_config
3437
self.session = None
3538
self.insights: list[str] = []
39+
self.auth_time = 0
3640

3741
def _init_database(self):
3842
"""Initialize connection to the Snowflake database"""
3943
try:
4044
self.session = Session.builder.configs(self.connection_config).create()
4145
for component in ["database", "schema", "warehouse"]:
4246
self.session.sql(f"USE {component.upper()} {self.connection_config[component].upper()}")
47+
self.auth_time = time.time()
4348
except Exception as e:
4449
raise ValueError(f"Failed to connect to Snowflake database: {e}")
4550

4651
def execute_query(self, query: str) -> list[dict[str, Any]]:
4752
"""Execute a SQL query and return results as a list of dictionaries"""
48-
if not self.session:
53+
if not self.session or time.time() - self.auth_time > self.AUTH_EXPIRATION_TIME:
4954
self._init_database()
5055

5156
logger.debug(f"Executing query: {query}")

0 commit comments

Comments
 (0)