Nextcloud MCP Server
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · streamable-http · http counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
no tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit d969526 · analyzer v18 · 11h ago
skills & prompt files 2
danger signals1
- credential in logscredential in logcbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/browser_oauth_routes.py:504
logger.debug("Refresh token present: %s", refresh_token is not None)
evidence-backed
findings quoted directly from the published source artifact — not inferred
filesystem 16
- fs cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/alembic/env.py :10
from pathlib import Path - fs cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/api/visualization.py :920
doc = pymupdf.open(stream=pdf_bytes, filetype="pdf") - fs cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/storage.py :43
from pathlib import Path - fs cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/userinfo_routes.py :13
from pathlib import Path - fs cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/viz_routes.py :16
from pathlib import Path - fs cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/config.py :9
from pathlib import Path - fs cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/document_processors/_isolation.py :17
from pathlib import Path - fs cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/document_processors/classifier.py :246
with pymupdf.open("pdf", content) as doc: - fs cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/document_processors/pymupdf.py :4
import pathlib - fs cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/document_processors/tesseract.py :4
import shutil - fs cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/migrations.py :13
from pathlib import Path - fs cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/search/pdf_highlighter.py :13
import shutil - fs cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/vector/queue/procrastinate.py :586
# ``await``-ing it opens the connector pool and leaves it open (vs the - fs cbcoutinho-nextcloud-mcp-server-d969526/scripts/dbquery.py :17
from pathlib import Path - fs cbcoutinho-nextcloud-mcp-server-d969526/scripts/sqlitequery.py :18
from pathlib import Path - fs cbcoutinho-nextcloud-mcp-server-d969526/tools/rag_eval_cli.py :20
from pathlib import Path
shell / exec 2
- shell cbcoutinho-nextcloud-mcp-server-d969526/scripts/dbquery.py :15
import subprocess - shell cbcoutinho-nextcloud-mcp-server-d969526/scripts/sqlitequery.py :16
import subprocess
network 50
- net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/api/_auth.py :30
``httpx.BasicAuth``. - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/api/passwords.py :19
import httpx - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/api/vector_sync.py :18
import httpx - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/api/webhooks.py :21
import httpx - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/app.py :13
from urllib.parse import urlparse - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/astrolabe_client.py :52
httpx.HTTPError: If token request fails - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/bearer_auth.py :1
"""Bearer token authentication for httpx.""" - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/browser_oauth_routes.py :13
from urllib.parse import urlencode - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/client_registration.py :9
import httpx - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/client_registry.py :13
from urllib.parse import urlparse - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/login_flow.py :13
from urllib.parse import urlparse, urlunparse - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/oauth_routes.py :30
from urllib.parse import unquote, urlencode - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/permissions.py :5
from httpx import AsyncClient - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/provision_routes.py :20
from urllib.parse import urlparse - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/storage.py :39
import socket - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/token_broker.py :22
import httpx - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/unified_verifier.py :21
import httpx - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/userinfo_routes.py :16
from httpx import BasicAuth - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/webhook_routes.py :11
import httpx - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/client/__init__.py :5
from httpx import ( - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/client/base.py :9
from httpx import AsyncClient, HTTPStatusError, RequestError, codes - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/client/calendar.py :53
prefers ``niquests`` over ``httpx`` and won't accept an ``httpx.Auth`` - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/client/cookbook.py :5
from urllib.parse import quote - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/client/deck.py :4
from httpx import HTTPStatusError, RequestError - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/client/webdav.py :8
from urllib.parse import quote, unquote - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/config.py :5
import socket - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/context.py :6
from httpx import BasicAuth - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/document_processors/custom_http.py :7
import httpx - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/document_processors/ocr.py :27
import httpx - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/document_processors/unstructured.py :10
import httpx - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/embedding/gateway_batch_client.py :30
import httpx - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/embedding/gateway_client.py :29
import httpx - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/embedding/ollama_provider.py :5
import httpx - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/http.py :10
import httpx - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/providers/ollama.py :5
import httpx - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/search/context.py :11
from httpx import HTTPStatusError - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/search/verification.py :47
from httpx import HTTPStatusError - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/server/collectives.py :5
from httpx import HTTPStatusError - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/server/cookbook.py :3
from httpx import HTTPStatusError, RequestError - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/server/news.py :5
from httpx import HTTPStatusError, RequestError - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/server/notes.py :3
from httpx import HTTPStatusError, RequestError - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/server/oauth_tools.py :12
from urllib.parse import urlencode - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/server/semantic.py :7
from httpx import RequestError - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/vector/collection_metadata.py :24
import httpx - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/vector/oauth_sync.py :29
from httpx import BasicAuth, HTTPStatusError - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/vector/processor.py :12
import httpx - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/vector/qdrant_client.py :171
# Raw network / timeout failures (httpx.ConnectError, - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/vector/queue/procrastinate.py :270
import httpx # noqa: PLC0415 - net cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/vector/scanner.py :15
from httpx import HTTPStatusError - net cbcoutinho-nextcloud-mcp-server-d969526/tools/rag_eval_cli.py :25
import httpx
secrets 2
- secrets cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/cli.py :182
os.environ["NEXTCLOUD_PASSWORD"] = nextcloud_password - secrets cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/client/__init__.py :162
password = os.environ["NEXTCLOUD_PASSWORD"]
database 11
- db cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/alembic/env.py :13
from sqlalchemy import pool - db cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/alembic/versions/20251217_2200_001_initial_schema.py :22
import sqlalchemy as sa - db cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/alembic/versions/20260113_1200_002_add_app_passwords.py :13
import sqlalchemy as sa - db cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/alembic/versions/20260227_1200_003_add_scopes_and_login_flow.py :15
import sqlalchemy as sa - db cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/alembic/versions/20260502_1500_005_add_browser_sessions.py :13
import sqlalchemy as sa - db cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/alembic/versions/20260502_1600_006_add_nonce_to_oauth_sessions.py :15
import sqlalchemy as sa - db cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/alembic/versions/20260607_1200_007_add_usage_events.py :23
import sqlalchemy as sa - db cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/alembic/versions/20260615_1200_008_add_batch_ocr_jobs.py :23
import sqlalchemy as sa - db cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/storage.py :40
import sqlite3 - db cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/config.py :531
from sqlalchemy.engine.url import make_url # noqa: PLC0415 - db cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/migrations.py :16
from sqlalchemy import create_engine, inspect, text
tool registrations 8
- list_notes cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/provisioning_decorator.py :33
- list_tools cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/provisioning_decorator.py :127
- nc_notes_get_note cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/scope_authorization.py :84
- nc_notes_create_note cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/scope_authorization.py :90
- get_notes cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/scope_authorization.py :515
- create_note cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/auth/scope_authorization.py :520
- my_tool cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/context.py :54
- nc_notes_create_note cbcoutinho-nextcloud-mcp-server-d969526/nextcloud_mcp_server/observability/metrics.py :895
declared dependencies 2
- asyncpg@>=0.29
- procrastinate@>=3.8