From 6d671ea0ffacd38486944fbb11969f93f1207f23 Mon Sep 17 00:00:00 2001 From: 7shi <7shi@live.jp> Date: Sun, 1 Dec 2024 22:36:06 +0900 Subject: [PATCH 1/2] Add timeout settings to all requests in Obsidian Local REST API --- src/mcp_knowledge_base/obsidian.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/mcp_knowledge_base/obsidian.py b/src/mcp_knowledge_base/obsidian.py index 1264008..0c66272 100644 --- a/src/mcp_knowledge_base/obsidian.py +++ b/src/mcp_knowledge_base/obsidian.py @@ -16,6 +16,7 @@ class Obsidian(): self.host = host self.port = port self.verify_ssl = verify_ssl + self.timeout = (5, 15) def get_base_url(self) -> str: return f'{self.protocol}://{self.host}:{self.port}' @@ -41,7 +42,7 @@ class Obsidian(): url = f"{self.get_base_url()}/vault/" def call_fn(): - response = requests.get(url, headers=self._get_headers(), verify=self.verify_ssl) + response = requests.get(url, headers=self._get_headers(), verify=self.verify_ssl, timeout=self.timeout) response.raise_for_status() return response.json()['files'] @@ -53,7 +54,7 @@ class Obsidian(): url = f"{self.get_base_url()}/vault/{dirpath}/" def call_fn(): - response = requests.get(url, headers=self._get_headers(), verify=self.verify_ssl) + response = requests.get(url, headers=self._get_headers(), verify=self.verify_ssl, timeout=self.timeout) response.raise_for_status() return response.json()['files'] @@ -64,7 +65,7 @@ class Obsidian(): url = f"{self.get_base_url()}/vault/{filepath}" def call_fn(): - response = requests.get(url, headers=self._get_headers(), verify=self.verify_ssl) + response = requests.get(url, headers=self._get_headers(), verify=self.verify_ssl, timeout=self.timeout) response.raise_for_status() return response.text @@ -79,7 +80,7 @@ class Obsidian(): } def call_fn(): - response = requests.post(url, headers=self._get_headers(), params=params, verify=self.verify_ssl) + response = requests.post(url, headers=self._get_headers(), params=params, verify=self.verify_ssl, timeout=self.timeout) response.raise_for_status() return response.json() @@ -93,7 +94,8 @@ class Obsidian(): url, headers=self._get_headers() | {'Content-Type': 'text/markdown'}, data=content, - verify=self.verify_ssl + verify=self.verify_ssl, + timeout=self.timeout ) response.raise_for_status() return None @@ -111,7 +113,7 @@ class Obsidian(): } def call_fn(): - response = requests.patch(url, headers=headers, data=content, verify=self.verify_ssl) + response = requests.patch(url, headers=headers, data=content, verify=self.verify_ssl, timeout=self.timeout) response.raise_for_status() return None @@ -125,7 +127,7 @@ class Obsidian(): } def call_fn(): - response = requests.post(url, headers=headers, json=query, verify=self.verify_ssl) + response = requests.post(url, headers=headers, json=query, verify=self.verify_ssl, timeout=self.timeout) response.raise_for_status() return response.json() From 07e3697f2768d1d4118ef1b29648ef3613b22fe4 Mon Sep 17 00:00:00 2001 From: 7shi <7shi@live.jp> Date: Mon, 2 Dec 2024 02:59:21 +0900 Subject: [PATCH 2/2] Adjust timeout to align with MCP client timeouts --- src/mcp_knowledge_base/obsidian.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mcp_knowledge_base/obsidian.py b/src/mcp_knowledge_base/obsidian.py index 0c66272..fa8698e 100644 --- a/src/mcp_knowledge_base/obsidian.py +++ b/src/mcp_knowledge_base/obsidian.py @@ -16,7 +16,7 @@ class Obsidian(): self.host = host self.port = port self.verify_ssl = verify_ssl - self.timeout = (5, 15) + self.timeout = (3, 6) def get_base_url(self) -> str: return f'{self.protocol}://{self.host}:{self.port}'