Skip to content

Commit ff2eb95

Browse files
author
Compyle Bot
committed
Auto-commit: Agent tool execution
1 parent 0509a31 commit ff2eb95

File tree

1 file changed

+27
-23
lines changed

1 file changed

+27
-23
lines changed

src/tools/overview.py

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
"""Repository overview tool for CodeAlive MCP server."""
22

33
from typing import Optional
4+
from urllib.parse import urljoin
45
from xml.etree import ElementTree as ET
56

6-
from mcp.server.fastmcp import Context
7+
import httpx
8+
from fastmcp import Context
79

8-
from core.config import get_api_key_from_context
9-
from core.logging import log_api_request, log_api_response, logger
10-
from utils.errors import (
10+
from core import CodeAliveContext, get_api_key_from_context, log_api_request, log_api_response
11+
from utils import (
1112
handle_api_error,
1213
normalize_data_source_names,
1314
format_data_source_names,
1415
)
15-
import httpx
1616

1717

1818
async def get_repo_overview(
@@ -66,32 +66,38 @@ async def get_repo_overview(
6666
# </repository>
6767
# </repository_overviews>
6868
"""
69+
context: CodeAliveContext = ctx.request_context.lifespan_context
70+
6971
try:
70-
# Get context and API key
71-
context = ctx.request_context.lifespan_context
7272
api_key = get_api_key_from_context(ctx)
7373

74-
# Normalize and format data_sources if provided
75-
data_sources = normalize_data_source_names(data_sources)
74+
# Normalize data_sources (handles Claude Desktop serialization issues)
75+
data_source_names = normalize_data_source_names(data_sources)
7676

77-
# Build request URL and params
78-
url = f"{context.base_url}/api/overview"
77+
# Build request params
7978
params = {}
80-
81-
if data_sources:
82-
formatted_names = format_data_source_names(data_sources)
79+
if data_source_names and len(data_source_names) > 0:
80+
formatted_names = format_data_source_names(data_source_names)
8381
params = formatted_names
8482

85-
# Log and execute GET request
86-
log_api_request(logger, "GET", url, params)
87-
83+
# Prepare headers
8884
headers = {"Authorization": f"Bearer {api_key}"}
89-
response = await context.client.get(url, headers=headers, params=params)
85+
86+
# Log the request
87+
endpoint = "/api/overview"
88+
full_url = urljoin(context.base_url, endpoint)
89+
request_id = log_api_request("GET", full_url, headers, params=params)
90+
91+
# Make API request
92+
response = await context.client.get(endpoint, headers=headers, params=params)
93+
94+
# Log the response
95+
log_api_response(response, request_id)
96+
9097
response.raise_for_status()
9198

9299
# Parse JSON response
93100
overview_data = response.json()
94-
log_api_response(logger, response.status_code, overview_data)
95101

96102
# Transform to XML format
97103
root = ET.Element("repository_overviews")
@@ -108,7 +114,5 @@ async def get_repo_overview(
108114

109115
return xml_string
110116

111-
except httpx.HTTPError as e:
112-
return handle_api_error(ctx, e, "get repository overview")
113-
except Exception as e:
114-
return handle_api_error(ctx, e, "get repository overview")
117+
except (httpx.HTTPStatusError, Exception) as e:
118+
return await handle_api_error(ctx, e, "get repository overview")

0 commit comments

Comments
 (0)