github analyzed d969526

cbcoutinho/nextcloud-mcp-server

github

Nextcloud MCP Server

maintainer
cbcoutinho
license
AGPL-3.0
first seen
2026-06-01
last seen
2026-06-17
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 0 tools
transport stdio · streamable-http · http counts 0 tools · 0 res · 0 prompts permission surface via code analysis

no tools enumerated yet for this server.

skills & danger signals github-tarball
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

code evidence vnextcloud-mcp-server-0.58.32 · github-tarball
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