Compare commits

...

6 Commits

Author SHA1 Message Date
github-actions[bot] a389f2940e bump: version 0.15.1 → 0.15.2 2025-10-17 23:17:32 +00:00
Chris Coutinho 5e829fc7e7 refactor: Unify logging & remove factory deployment 2025-10-18 01:15:06 +02:00
Chris Coutinho 9c909b6e42 Merge pull request #217 from cbcoutinho/renovate/pin-dependencies
chore(deps): pin docker.io/library/nginx docker tag to 61e0128
2025-10-17 09:21:50 +02:00
renovate-bot-cbcoutinho[bot] 9b29eabfaa chore(deps): pin docker.io/library/nginx docker tag to 61e0128 2025-10-17 04:07:05 +00:00
github-actions[bot] 7549c988f4 bump: version 0.15.0 → 0.15.1 2025-10-17 02:49:37 +00:00
Chris Coutinho 0145be4bbd Merge pull request #216 from cbcoutinho/feature/trigger
Fix timeouts (in CI)
2025-10-17 04:49:17 +02:00
6 changed files with 38 additions and 28 deletions
+13
View File
@@ -1,3 +1,16 @@
## v0.15.2 (2025-10-17)
### Refactor
- Unify logging & remove factory deployment
## v0.15.1 (2025-10-17)
### Fix
- Increase HTTP client timeout to 30s
- Handle RequestError in mcp tools
## v0.15.0 (2025-10-17) ## v0.15.0 (2025-10-17)
### Feat ### Feat
+1 -1
View File
@@ -41,7 +41,7 @@ services:
- MYSQL_HOST=db - MYSQL_HOST=db
recipes: recipes:
image: docker.io/library/nginx:alpine image: docker.io/library/nginx:alpine@sha256:61e01287e546aac28a3f56839c136b31f590273f3b41187a36f46f6a03bbfe22
restart: always restart: always
volumes: volumes:
- ./tests/fixtures/test_recipe.html:/usr/share/nginx/html/test_recipe.html:ro - ./tests/fixtures/test_recipe.html:/usr/share/nginx/html/test_recipe.html:ro
+4 -23
View File
@@ -14,7 +14,7 @@ from starlette.routing import Mount
from nextcloud_mcp_server.auth import NextcloudTokenVerifier, load_or_register_client from nextcloud_mcp_server.auth import NextcloudTokenVerifier, load_or_register_client
from nextcloud_mcp_server.client import NextcloudClient from nextcloud_mcp_server.client import NextcloudClient
from nextcloud_mcp_server.config import setup_logging from nextcloud_mcp_server.config import setup_logging, LOGGING_CONFIG
from nextcloud_mcp_server.context import get_client as get_nextcloud_client from nextcloud_mcp_server.context import get_client as get_nextcloud_client
from nextcloud_mcp_server.server import ( from nextcloud_mcp_server.server import (
configure_calendar_tools, configure_calendar_tools,
@@ -352,9 +352,7 @@ def get_app(transport: str = "sse", enabled_apps: list[str] | None = None):
# Asynchronously get the OAuth configuration # Asynchronously get the OAuth configuration
import asyncio import asyncio
nextcloud_host, token_verifier, auth_settings = asyncio.run( _, token_verifier, auth_settings = asyncio.run(setup_oauth_config())
setup_oauth_config()
)
mcp = FastMCP( mcp = FastMCP(
"Nextcloud MCP", "Nextcloud MCP",
lifespan=app_lifespan_oauth, lifespan=app_lifespan_oauth,
@@ -422,10 +420,6 @@ def get_app(transport: str = "sse", enabled_apps: list[str] | None = None):
@click.option( @click.option(
"--port", "-p", type=int, default=8000, show_default=True, help="Server port" "--port", "-p", type=int, default=8000, show_default=True, help="Server port"
) )
@click.option(
"--workers", "-w", type=int, default=None, help="Number of worker processes"
)
@click.option("--reload", "-r", is_flag=True, help="Enable auto-reload")
@click.option( @click.option(
"--log-level", "--log-level",
"-l", "-l",
@@ -483,8 +477,6 @@ def get_app(transport: str = "sse", enabled_apps: list[str] | None = None):
def run( def run(
host: str, host: str,
port: int, port: int,
workers: int,
reload: bool,
log_level: str, log_level: str,
transport: str, transport: str,
enable_app: tuple[str, ...], enable_app: tuple[str, ...],
@@ -591,21 +583,10 @@ def run(
enabled_apps = list(enable_app) if enable_app else None enabled_apps = list(enable_app) if enable_app else None
if reload or workers: app = get_app(transport=transport, enabled_apps=enabled_apps)
app = "nextcloud_mcp_server.app:get_app"
factory = True
else:
app = get_app(transport=transport, enabled_apps=enabled_apps)
factory = False
uvicorn.run( uvicorn.run(
app=app, app=app, host=host, port=port, log_level=log_level, log_config=LOGGING_CONFIG
factory=factory,
host=host,
port=port,
reload=reload,
workers=workers,
log_level=log_level,
) )
+18 -2
View File
@@ -2,17 +2,18 @@ import logging.config
LOGGING_CONFIG = { LOGGING_CONFIG = {
"version": 1, "version": 1,
"disable_existing_loggers": False,
"handlers": { "handlers": {
"default": { "default": {
"class": "logging.StreamHandler", "class": "logging.StreamHandler",
"formatter": "http", "formatter": "http",
} },
}, },
"formatters": { "formatters": {
"http": { "http": {
"format": "%(levelname)s [%(asctime)s] %(name)s - %(message)s", "format": "%(levelname)s [%(asctime)s] %(name)s - %(message)s",
"datefmt": "%Y-%m-%d %H:%M:%S", "datefmt": "%Y-%m-%d %H:%M:%S",
} },
}, },
"loggers": { "loggers": {
"": { "": {
@@ -29,6 +30,21 @@ LOGGING_CONFIG = {
"level": "INFO", "level": "INFO",
"propagate": False, # Prevent propagation to root logger "propagate": False, # Prevent propagation to root logger
}, },
"uvicorn": {
"handlers": ["default"],
"level": "INFO",
"propagate": False,
},
"uvicorn.access": {
"handlers": ["default"],
"level": "INFO",
"propagate": False,
},
"uvicorn.error": {
"handlers": ["default"],
"level": "INFO",
"propagate": False,
},
}, },
} }
+1 -1
View File
@@ -1,6 +1,6 @@
[project] [project]
name = "nextcloud-mcp-server" name = "nextcloud-mcp-server"
version = "0.15.0" version = "0.15.2"
description = "" description = ""
authors = [ authors = [
{name = "Chris Coutinho",email = "chris@coutinho.io"} {name = "Chris Coutinho",email = "chris@coutinho.io"}
Generated
+1 -1
View File
@@ -630,7 +630,7 @@ wheels = [
[[package]] [[package]]
name = "nextcloud-mcp-server" name = "nextcloud-mcp-server"
version = "0.15.0" version = "0.15.2"
source = { editable = "." } source = { editable = "." }
dependencies = [ dependencies = [
{ name = "click" }, { name = "click" },