Nextcloud ChatGPT Bridge
ChatGPT 및 Codex용 Nextcloud

사용자 소유의 Nextcloud 작업 공간에서 ChatGPT와 Codex가 파일을 작업할 수 있게 해주는 오픈 소스, 테넌트 격리 브리지입니다. 이 브리지는 OAuth ID를 Nextcloud 자격 증명과 분리하여 유지하며, 네이티브 Nextcloud MCP 기능이 없을 때 표준 기반 제공자를 사용합니다.
제품 웹사이트: nextcloud-for-chatgpt.v4t0r.chatgpt.site

릴리스 상태
v0.3.0은 공개 앱 및 프로덕션 배포 릴리스 후보입니다.
이 저장소에는 범용 OAuth 보호 MCP 서비스에 필요한 애플리케이션 측 구성 요소가 포함되어 있습니다:
요청 범위 브리지 ID 및 가명 테넌트 격리
사용자의 Nextcloud 비밀번호를 수집하지 않는 Nextcloud 로그인 흐름 v2
테넌트 범위 메타데이터 및 암호화된 PostgreSQL 자격 증명 저장소
루트에 바인딩된 WebDAV 및 OCS 제공자와 명시적 읽기/쓰기 도구
승인, 예약, 지불 또는 전송을 절대 수행하지 않는 보수적인 가계 인보이스 검토
속도 제한, 요청 제한, 보안 헤더, 신뢰할 수 있는 호스트 검사 및 상태 비저장 MCP 전송
DNS 리바인딩 방지 HTTPS 이그레스 프록시 및 네트워크 격리 프로덕션 구성
데이터베이스 마이그레이션, 준비 상태 검사, 유지 관리 정리 및 릴리스 사전 점검
Codex 플러그인 패키지 및 검토자 준비 OpenAI 목록 및 테스트 자료
개인정보 보호, 약관, 지원 및 보안 페이지가 있는 프로덕션 랜딩 사이트
소스 릴리스는 활성 공개 서비스 또는 OpenAI 승인을 주장하지 않습니다. 공개 가용성은 여전히 운영자 제어 프로덕션 도메인, 외부 OAuth 구성, 검토자 픽스처, 확인된 게시자 ID 및 성공적인 OpenAI 검토가 필요합니다.
MCP 브리지 자체는 디렉터리 게시 없이 작동합니다. Codex CLI, ChatGPT 데스크톱 및 Codex IDE 확장은 직접 연결할 수 있습니다. 호환되는 원격 MCP 호스트는 배포된 HTTPS 엔드포인트를 사용할 수 있습니다. ChatGPT 웹은 게시되지 않은 연결에 대한 개발자 모드 액세스 또는 게시된 플러그인 설치가 필요합니다. 배포 모드를 참조하세요.
Related MCP server: PC FileBridge
실제 Nextcloud 검증
표준 기반 대체 경로는 Nextcloud 33.0.7에 대한 라이브 통합 실행을 통과했습니다:
인증된 OCS 검색
WebDAV 목록, 생성, 업로드, 다운로드, 메타데이터 조회, 이동 및 정리
사용자에게 표시되는 앱 인벤토리 및 루트 바인딩 공유 인벤토리
격리된 합성 가계 작업 공간 및 인보이스 검토 흐름
네이티브 Nextcloud Context Agent MCP는 해당 인스턴스에서 사용할 수 없었습니다. 따라서 성공적인 대체 실행은 네이티브 MCP가 숨겨진 종속성이 아니라 선택 사항임을 직접적으로 입증합니다. 자격 증명이나 인스턴스 식별 값은 기록되지 않습니다. 호환성 매트릭스를 참조하세요.
아키텍처
ChatGPT / Codex
|
| OAuth access token
v
Public stateless MCP boundary
|
| verified issuer + subject + scopes
v
BridgeSessionContext
|
| pseudonymous tenant scope
v
ConnectionService
|-- PostgreSQL connection metadata
`-- AES-256-GCM credential store
|
| Nextcloud Login Flow v2 credential
v
Root-bound provider core
|-- WebDAV files
|-- OCS capabilities, apps, shares, revocation
`-- Native Nextcloud MCP discovery when available브리지 ID에는 Nextcloud 사용자 이름이나 자격 증명이 절대 포함되지 않습니다. 모든 연결, 보류 중인 흐름, 가계 프로필 및 자격 증명 작업은 검증된 테넌트 컨텍스트로 범위가 지정됩니다.
공개 MCP 도구
읽기 및 검색
get_nextcloud_capabilitiesget_nextcloud_app_accessesprobe_native_nextcloud_mcplist_files,search_files,list_nextcloud_sharesget_file_info,read_text_file,download_file_base64list_nextcloud_connections,list_household_accounts,list_household_invoicesreview_household_invoice
비공개 Nextcloud 상태 생성 또는 수정
write_text_file,upload_file_base64,create_folder,move_file,delete_filebegin_nextcloud_connection,poll_nextcloud_connection,set_nextcloud_rootdisconnect_nextcloudconfigure_household_account,prepare_household_workspacesave_household_invoice_review
모든 호스팅 도구에는 명시적인 제목, 설명, 입력 스키마, 출력 스키마 및 위험 주석이 있습니다. 프로덕션 도구 계약은 자동화된 테스트로 고정되며 submission/TOOL_ANNOTATIONS.md에 문서화되어 있습니다.
보안 기본값
계정 루트
/및 상위 디렉터리 탐색은 제공자 액세스 전에 거부됩니다.반환된 모든 WebDAV 경로는 구성된 루트에 대해 다시 확인됩니다.
HTTPS 및 TLS 검증은 호스팅된 Nextcloud 대상에 필수입니다.
공개 대상은 CONNECT 전용 이그레스 프록시에 의해 확인, 검증 및 IP 고정됩니다.
베어러 토큰, 앱 비밀번호, 공유 토큰, 원시 인보이스 텍스트 및 전체 IBAN은 모델에 표시되는 결과에서 제외됩니다.
자격 증명 암호문은 AES-GCM 인증 데이터를 통해 테넌트에 바인딩됩니다.
덮어쓰기는 선택 사항입니다. 구성된 루트는 삭제할 수 없습니다.
요청 본문 및 전송 크기는 제한됩니다.
쓰기, 덮어쓰기, 이동, 삭제, 연결 해제 및 자격 증명 폐기 위험이 명시적입니다.
호스팅 액세스는 상태 비저장이며 모든 MCP 요청에 대해 새 ID를 파생합니다.
배포 전에 SECURITY.md를 읽으십시오. 취약점은 GitHub 비공개 취약점 보고를 통해 보고하고, 비밀 또는 개인 데이터가 포함된 공개 이슈로는 절대 보고하지 마십시오.
로컬 개발
Python 3.11 이상이 필요합니다.
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev,hosted]"
ruff check .
pytest로컬 테스트 전용으로 .env.example을 .env에 복사하십시오. 전용 Nextcloud 계정 및 앱 비밀번호를 사용하고, 루트를 좁게 유지하며, 결과 파일을 커밋하지 마십시오.
로컬 stdio 서버를 실행합니다:
nextcloud-chatgpt-bridge샌드박스 처리된 읽기 전용 진단 또는 명시적 임시 쓰기/정리 스모크 테스트를 실행합니다:
nextcloud-chatgpt-diagnose
nextcloud-chatgpt-diagnose --write-test프로덕션 배포
참조 구성은 deploy/compose.production.yml에 있습니다. PostgreSQL, 브리지, 유지 관리, 이그레스 및 TLS 종료를 분리하고 브리지를 직접 외부 네트워크에서 분리합니다.
cp deploy/.env.production.example deploy/.env.production
docker compose --env-file deploy/.env.production \
-f deploy/compose.production.yml config
docker compose --env-file deploy/.env.production \
-f deploy/compose.production.yml up -d데이터베이스 및 암호화 비밀을 Git 외부의 파일로 제공하십시오. 전용 migrate 서비스를 통해 마이그레이션을 적용한 다음, 검토자 액세스 전에 정확한 공개 MCP, OAuth, 웹사이트, 지원, 개인정보 보호 및 약관 URL에 대해 nextcloud-chatgpt-preflight를 실행하십시오.
docs/PRODUCTION_DEPLOYMENT.md 및 docs/HOSTED_ACCEPTANCE.md를 참조하십시오.
OpenAI 제출 패키지
저장소 측 검토 자료는 submission/에 있습니다:
정식 목록 사본 및 시작 프롬프트
긍정 및 부정 검토자 사례
검토자 픽스처 및 런북
정확한 도구 주석 인벤토리
릴리스 노트 및 최종 운영 체크리스트
최종 OpenAI 제출은 소유자 제어 작업으로 남아 있습니다. docs/PLUGIN_SUBMISSION.md를 참조하십시오.
프로젝트 문서
라이선스
Apache License 2.0에 따라 라이선스가 부여됩니다. 이 독립 프로젝트는 Nextcloud GmbH 또는 OpenAI와 제휴하거나 보증하지 않습니다.
Available Tools
14 toolscreate_folderCreate Nextcloud folderA
Create a folder inside the configured Nextcloud root.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| etag | No | |
| name | Yes | |
| path | Yes | |
| size | No | |
| is_dir | Yes | |
| content_type | No | |
| last_modified | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it is not read-only, and the description adds that it creates a folder inside the configured root, which clarifies path scoping. However, it does not disclose behaviors like whether intermediate directories are created, error handling if the folder already exists, or permission requirements. Given annotations cover the mutation nature, the description adds minimal extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clear sentence with no unnecessary words. It is front-loaded with the verb and resource, and every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter creation tool, the description covers the core purpose. However, it omits behavioral details like whether it fails if the parent path doesn't exist, if it is recursive, or what it returns. The output schema exists but is not described, and annotations don't clarify side effects. Balanced but with gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the single 'path' parameter. It only states 'inside the configured Nextcloud root', implying a relative path, but does not clarify format (slashes), whether recursion is supported, or error conditions. This is minimal added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a folder inside the configured Nextcloud root' clearly states the verb (create) and resource (folder inside a specific location), which distinguishes it from sibling file operations like write_text_file or upload_file_base64.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating folders but does not explicitly state when to use it versus other tools (e.g., when not to use it, or that it should be preferred over other creation methods). It lacks exclusions or explicit context about alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_fileDelete Nextcloud fileADestructiveIdempotent
Delete one file or folder. Deleting the configured root itself is always refused.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | No | |
| path | Yes | |
| message | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, which covers mutability. The description adds a behavioral caveat: 'Deleting the configured root itself is always refused.' This is useful context not present in annotations. However, it does not disclose whether folder deletion is recursive or if there are other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences. It front-loads the primary action in the first sentence and adds a critical safety note in the second. No unnecessary words or fluff; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter, no nested objects, output schema exists). The description covers the core action and the root-refusal safeguard. It does not mention recursive deletion for folders or error behavior, but these are likely captured by the output schema. Overall, it is adequate for a simple delete operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has a single 'path' parameter with 0% description coverage. The tool description does not explain what 'path' means, its format, relative vs absolute, or any constraints. The description fails to compensate for the lack of schema documentation, leaving the agent to infer path semantics from the parameter name alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Delete one file or folder.' It uses a specific verb and resource, and adds a safety note about refusing to delete the configured root. This distinguishes it from sibling tools like move_file or create_folder.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. Usage is implied from the purpose (deleting files/folders), but no guidance is given on when deletion is appropriate versus moving or trash, or when not to use it. No alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_file_base64Download Nextcloud file as base64ARead-only
Download a small binary file as base64, subject to the MCP transfer size limit.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| size | Yes | |
| content_type | No | |
| content_base64 | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds meaningful behavioral context: the file must be small and output is subject to the MCP transfer size limit. This goes beyond the structured safety hints and helps set expectations around limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. Every element adds useful information about the tool's purpose and constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter tool, the readOnly annotation, and the presence of an output schema, the description covers the key operational constraint (size limit) and file type. It is sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not elaborate on the 'path' parameter—such as whether it is relative to a Nextcloud root or how to format it. With low schema coverage, the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Download'), the resource ('Nextcloud file'), the output format ('base64'), and a key scope ('small binary file'). This distinguishes it from sibling tools like read_text_file (text) and upload_file_base64 (upload direction).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys a clear usage context: small binary files, output as base64, with a transfer size limit. It does not explicitly name alternatives or state when not to use the tool, but the size and file-type qualifiers imply appropriate selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_infoGet Nextcloud file infoARead-only
Get metadata for one file or folder inside the configured Nextcloud root.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| etag | No | |
| name | Yes | |
| path | Yes | |
| size | No | |
| is_dir | Yes | |
| content_type | No | |
| last_modified | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, and the description's 'Get metadata' is consistent with a read operation. The description adds scope context ('inside the configured Nextcloud root') but does not disclose potential errors, path limitations, or other behavioral nuances. It neither contradicts annotations nor adds substantial extra transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly worded sentence with no filler. It front-loads the core action and scope, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema present, the description is functional but incomplete. It lacks parameter guidance and explicit usage advice, yet the output schema may compensate for return-value details. Overall, it is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the 'path' parameter, and the description only names the parameter without explaining expected format (absolute vs. relative, file vs. folder, trailing slashes). The description does not compensate for the schema's lack of detail, leaving significant ambiguity about how to specify the path.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves metadata for a single file or folder within the Nextcloud root. It uses a specific verb ('Get') and resource ('file info'), and distinguishes itself from siblings like list_files (multiple items) and read_text_file (content) by focusing on metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for individual file/folder metadata but does not explicitly state when to prefer it over alternatives (e.g., list_files for multiple items, download_file_base64 for content). No when-not-to-use guidance is provided, leaving the agent to infer from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_nextcloud_app_accessesInspect accessible Nextcloud appsARead-only
Inventory user-visible apps and safe bridge access levels without administrator APIs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| apps | Yes | |
| warnings | Yes | |
| search_providers | Yes | |
| nextcloud_version | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by specifying that access levels are 'safe' and that it works without admin APIs, which is not implied by readOnlyHint. It does not describe return format, but the output schema handles that; no contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that conveys purpose and key constraints without redundancy. Every word earns its place, and the lack of parameters makes it appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there are no parameters, the description is sufficient for an agent to understand the tool's purpose. The presence of an output schema likely covers return values, and the tool's simplicity (zero params) means the description is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the description adds meaning by clarifying the scope (user-visible apps and safe bridge access levels), which is essential since the schema is empty. This exceeds the baseline of 4 for parameter-less tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool inventories user-visible apps and bridge access levels, specifying the resource (Nextcloud apps) and the action (inspect). It distinguishes itself from siblings such as get_nextcloud_capabilities and probe_native_nextcloud_mcp by emphasizing 'user-visible' and 'safe bridge access levels without administrator APIs'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for checking accessible apps and safe access, distinguishing from admin-API-based tools. However, it does not explicitly state when not to use it or mention alternatives, though the sibling context provides some contrast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_nextcloud_capabilitiesInspect Nextcloud capabilitiesARead-only
Inspect server/app capability hints used to choose native Nextcloud or fallback providers.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| app_api_hint | Yes | |
| version_major | No | |
| version_micro | No | |
| version_minor | No | |
| assistant_hint | Yes | |
| capability_groups | Yes | |
| nextcloud_version | No | |
| context_agent_hint | Yes | |
| context_agent_mcp_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the read-only behavior is covered structurally. The description adds the context that this inspects capability hints but does not disclose additional behavior, return shape, or any potential caveats, which is acceptable for a simple zero-parameter inspect tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded and immediately communicates the tool's purpose and value. No filler or repetition of the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, zero-parameter tool with an output schema and appropriate annotations, the description fully covers what the tool does and why it is useful. No additional behavioral or return-value detail is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema is trivially complete at 100% coverage. The description adds no parameter details, but none are needed; the baseline for zero-parameter tools is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Inspect') and resource ('server/app capability hints'), and clearly states its purpose: to choose native Nextcloud or fallback providers. This differentiates it from sibling tools, which focus on file operations or app accesses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear the tool is useful for capability discovery when deciding between native and fallback providers. It does not explicitly name alternatives or state when not to use it, but the context of provider selection is implied strongly enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesList Nextcloud filesARead-only
List direct children of a folder inside the configured Nextcloud root.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| entries | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=false, so the agent knows this is a safe, deterministic read operation. The description adds meaningful behavioral context beyond the annotations: it limits results to direct children and constrains paths to within the configured root.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler or redundant information. It conveys the core action, scope, and location in a compact way.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with one optional parameter, read-only annotations, and an output schema, the description covers the essential behavioral context: non-recursive listing within a root-relative folder. It does not mention pagination or hidden files, but the output schema likely covers return structure, and the tool is simple enough that this is not a major gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single 'path' parameter, so the description must compensate. It implies the path refers to a folder and is root-relative, but it does not clarify the default behavior of an empty path, whether leading slashes are accepted, or that the path must identify a folder rather than a file.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'List direct children of a folder inside the configured Nextcloud root.' It distinguishes itself from siblings like search_files and get_file_info by emphasizing 'direct children' and the root-relative scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'direct children' provides clear context that this is non-recursive, and 'inside the configured Nextcloud root' sets a scope boundary. It does not explicitly name alternatives or when-not-to-use cases, but the context is strong enough for an agent to differentiate from recursive search or file-reading tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_fileMove or rename Nextcloud fileADestructive
Move or rename a file/folder inside the configured root.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| overwrite | No | ||
| destination | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| etag | No | |
| name | Yes | |
| path | Yes | |
| size | No | |
| is_dir | Yes | |
| content_type | No | |
| last_modified | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the description doesn't need to restate that. However, it adds the constraint 'inside the configured root,' which is useful context. It does not disclose other behavioral traits like overwrite semantics or conflict handling, but given the annotation coverage, this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the verb and object. It is concise with zero wasted words, fully fitting the tool's simple purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values. The tool is straightforward, and the root constraint is mentioned. However, the lack of parameter semantics and overwrite behavior leaves some gaps. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. It does not mention source, destination, or overwrite at all. The action implies that source and destination are paths, but no details are given about format, overwrite behavior, or defaults, leaving the agent to infer from schema field names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action: 'Move or rename a file/folder inside the configured root.' It specifies the resource (file/folder) and the operation (move/rename), and distinguishes from sibling tools like delete_file or write_text_file by indicating relocation/rename rather than creation, deletion, or modification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for moving or renaming files/folders but does not explicitly state when to use it over alternatives (e.g., copying via upload/download) or when not to use it. There are no exclusions or alternatives mentioned, so the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
probe_native_nextcloud_mcpProbe native Nextcloud MCPARead-only
Check whether Nextcloud Context Agent MCP is reachable; never invokes a native tool.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| endpoint | Yes | |
| available | Yes | |
| tool_names | Yes | |
| tools_truncated | No | |
| protocol_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, but the description adds meaningful context by guaranteeing the tool 'never invokes a native tool.' This clarifies that the probe has no side effects on the Nextcloud instance, going beyond the generic read-only hint and providing a concrete behavioral guarantee.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the core purpose and an important safety qualifier. Every word contributes value; there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter health-check tool with an output schema, the description is fully sufficient. It explains what the tool does and its side-effect-free nature; the output schema covers return format, so no additional description is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to explain parameter semantics. Per the baseline for no parameters, a score of 4 is appropriate; the description adds no extraneous parameter details and relies on the schema's empty property list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: to check reachability of the Nextcloud Context Agent MCP. It uses a specific verb ('Check') and a clear resource, and explicitly notes it 'never invokes a native tool,' distinguishing it from sibling tools that perform native actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is a safe, non-invasive probe, but it does not explicitly state when to use it versus alternatives or provide criteria for when it should be preferred. The 'never invokes a native tool' note is a constraint rather than direct usage guidance, leaving room for the agent to infer applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_text_fileRead Nextcloud text fileARead-only
Read a UTF-8 text file, subject to the configured MCP transfer size limit.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| size | Yes | |
| content | Yes | |
| encoding | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a behavioral detail (size limit) beyond the readOnlyHint annotation, but nothing else about error handling or return behavior. It is consistent with annotations and adds a small extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no fluff, perfectly sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool and the existence of an output schema (not shown but indicated), the description adequately covers the core operation. It does not mention distinguishing from binary downloads, but the name and sibling context fill that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'path' is not described in the schema (coverage 0%) and the tool description does not elaborate on what path means or its expected format. This leaves the parameter semantics ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose ('Read a UTF-8 text file') and distinguishes it from sibling tools like write_text_file or download_file_base64 by specifying the file type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It mentions a size limit constraint but does not explicitly explain when to use this tool over alternatives (e.g., download_file_base64 for binary files). Usage context is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_filesSearch files inside the Nextcloud workspaceARead-only
Search names below one workspace folder without crossing the configured root.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| query | Yes | ||
| max_depth | No | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| query | Yes | |
| entries | Yes | |
| truncated | Yes | |
| scanned_entries | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this as a safe, read-only operation. The description adds meaningful behavioral constraints: it searches names only, operates below one workspace folder, and never crosses the configured root. This goes beyond the annotations and clarifies scope, though it omits output/pagination details, which are partially covered by the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the action and scope. Every word contributes to the core semantics, and there is no filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple search tool with annotations and an output schema, the one-sentence description is mostly adequate. However, it lacks parameter-level context and does not address when to choose this tool over list_files or other siblings, leaving some selection ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%; the description does not mention query, path, max_depth, or max_results. The parameter names and defaults in the schema are self-explanatory, but the description itself adds no semantic value or guidance for how these parameters interact with the search behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches names below a workspace folder and respects the configured root, giving a specific verb, resource, and scope. It distinguishes itself from list_files via the searching-vs-listing focus, though it does not explicitly name a sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when searching file/directory names within a bounded workspace area, but it does not explicitly state when to prefer this over list_files or provide when-not-to-use guidance. The root constraint supplies some context but no direct alternative comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_file_base64Upload Nextcloud file from base64BDestructive
Upload a small binary file from strict base64 data, subject to the transfer size limit.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| overwrite | No | ||
| content_base64 | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| etag | No | |
| name | Yes | |
| path | Yes | |
| size | No | |
| is_dir | Yes | |
| content_type | No | |
| last_modified | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description notes the transfer size limit, adding context. Annotations already indicate destructiveHint true and readOnlyHint false, but description doesn't contradict. It doesn't detail overwrite behavior or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, efficient and front-loaded. No wasted words, but could benefit from more structuring.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description is under-specified for a mutation tool. It doesn't mention overwrite behavior, error cases, or how the path should be specified. Limited compared to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description should compensate. The description only mentions base64 data and size limit, but does not explain 'path', 'overwrite', or 'content_base64' semantics. The title mentions base64, but the description is thin.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool uploads a file from base64 data, and distinguishes from siblings like download_file_base64 and write_text_file. However, it doesn't mention the specific resource (Nextcloud) explicitly, though the title does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'small binary file' and 'transfer size limit', indicating when to use but not explicitly when not to use or alternatives. No sibling differentiation or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_text_fileWrite Nextcloud text fileADestructive
Write a UTF-8 text file. Existing files are protected unless overwrite is explicitly true.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| content | Yes | ||
| overwrite | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| etag | No | |
| name | Yes | |
| path | Yes | |
| size | No | |
| is_dir | Yes | |
| content_type | No | |
| last_modified | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context beyond the annotations: existing files are protected by default and only overwritten when overwrite is explicitly true. This clarifies the destructiveHint=true annotation by specifying the exact condition under which destruction occurs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The main action is front-loaded, and the critical overwrite safeguard is stated separately and clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter write tool with an output schema and annotations, the description is largely sufficient. It covers the key safety behavior (overwrite protection) and encoding, though it does not mention path conventions or failure behavior when an existing file is not overwritten.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate for parameter meaning. It clarifies the overwrite parameter ('unless overwrite is explicitly true') and content type (UTF-8), but does not explain path semantics or required path format, leaving some gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Write a UTF-8 text file.' It clearly identifies the tool's core action and distinguishes it from sibling tools like read_text_file or upload_file_base64 by emphasizing UTF-8 text content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as upload_file_base64 or create_folder. The description states what the tool does but does not provide use cases, exclusions, or references to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
14 tool updates
v0.3.0- First observed
create_folder - First observed
delete_file - First observed
download_file_base64 - First observed
get_file_info - First observed
get_nextcloud_app_accesses - First observed
get_nextcloud_capabilities - First observed
list_files - First observed
list_nextcloud_shares - First observed
move_file - First observed
probe_native_nextcloud_mcp - First observed
read_text_file - First observed
search_files - First observed
upload_file_base64 - First observed
write_text_file
TDQS
Scored across 14 tools
Tools address distinct resources/actions (capabilities, app access, file ops, shares), but get_nextcloud_capabilities, get_nextcloud_app_accesses, and probe_native_nextcloud_mcp all concern bridge/native capability discovery and could be confused if descriptions are skimmed. The file tools are clearly distinct: list/search/get/read/write/upload/create/move/delete.
Most names follow a verb_noun snake_case pattern (list_files, create_folder, delete_file), but there is minor inconsistency between get_ prefixed tools (get_nextcloud_capabilities), bare verbs (read_text_file, write_text_file), and descriptive verbs (probe_native_nextcloud_mcp, download_file_base64). Still predictable and readable overall.
14 tools is well within the ideal range for a file-management bridge with additional introspection. Each tool covers a concrete, non-redundant operation; none feel like padding.
File lifecycle is well covered: list, search, read, write, upload, download, create, move, delete, and metadata. Missing share management (only listing) and lack of a direct 'exists' endpoint (though get_file_info covers it), but these are minor gaps for the bridge's apparent scope.
Maintenance
Related MCP Connectors
Connect AI agents to Filepad workspaces through OAuth MCP.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Safe folder access for ChatGPT and Claude: read, write and search files, risky tools opt-in.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables to manage Nextcloud files, user info, sharing, calendar, and contacts through optimized MCP tools with dynamic tool selection and enterprise-grade security.MIT

PC FileBridgeofficial
AlicenseNot gradedqualityAmaintenanceEnables ChatGPT, Codex, and compatible MCP clients to read bounded UTF-8 text and create files or directories in operator-selected folders, with strict protections against overwrites, deletes, and path escapes.Apache 2.0- AlicenseNot gradedqualityBmaintenanceEnables ChatGPT Pro web to securely read workspace files, git diffs, and test records through OAuth-protected read-only MCP tools, so it can plan and review while Codex handles execution without uploading the repository.MIT
- AlicenseNot gradedqualityAmaintenanceEnables coding agents like Codex to use the ChatGPT web app as a planning and review brain, letting ChatGPT read only needed code via OAuth MCP and submit locally authorized tasks without API keys or repository uploads.4MIT