Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a389f2940e | |||
| 5e829fc7e7 | |||
| 9c909b6e42 | |||
| 9b29eabfaa | |||
| 7549c988f4 | |||
| 0145be4bbd |
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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"}
|
||||||
|
|||||||
@@ -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" },
|
||||||
|
|||||||
Reference in New Issue
Block a user