MCP Tools Reference¶
The MCP server provides 12 tools for document ingestion, search, AI Q&A and sign-in (14 with
MCP_BROWSER_SIGN_IN=true).
Available Tools¶
| Tool | What it does |
|---|---|
get_system_status() |
Verify setup and database connections |
ingest_documents(data_source, skip_graph, enabled_graph, enabled_rdf, ...) |
Process documents from any of the 14 data sources |
ingest_text(content, source_name, skip_graph, enabled_graph, enabled_rdf) |
Ingest and analyze specific text content; skip_graph=True skips KG extraction, enabled_graph / enabled_rdf pick the graphs |
search_documents(query, top_k, source_auth, scope, sources) |
Hybrid search — find relevant document excerpts; source_auth filters to what that user may read, sources limits to chosen sources |
query_documents(query, top_k, source_auth, scope, sources) |
AI-powered Q&A over your document corpus (same filtering arguments) |
list_sources() |
The sources with documents in the stores, for the sources argument |
get_auth_requirements() |
Which sign-ins the stored documents need before search / query |
sign_in(source, username, password, url) |
Sign in to alfresco, nuxeo, cmis or s3 (IAM access key); returns the credential for source_auth |
start_sign_in(source) / finish_sign_in(handoff_id) |
Only with MCP_BROWSER_SIGN_IN=true: browser sign-in for Microsoft 365, Box, Google or Azure Storage |
test_with_sample(skip_graph, enabled_graph, enabled_rdf) |
Quick system verification with built-in sample content; skip_graph=True for vector-only |
check_processing_status(id) |
Track long-running async ingestion tasks |
get_python_info() |
Python environment diagnostics |
health_check() |
Verify backend API connectivity |
ingest_documents() — Arguments¶
| Argument | Type | Default | Description |
|---|---|---|---|
data_source | str | "filesystem" | Source type — see Data Source JSON Config Strings table below |
paths | str | None | filesystem only — file/directory paths; JSON array ["p1","p2"], comma-separated, or single path |
skip_graph | bool | false | Skip KG extraction and graph store writes; chunk + embed + vector/search only |
enabled_graph | bool | None | Build the property graph (PG_GRAPH_DB); None = the server's DEFAULT_ENABLED_GRAPH |
enabled_rdf | bool | None | Build the RDF graph (RDF_GRAPH_DB); None = the server's DEFAULT_ENABLED_RDF |
enable_sync | bool | false | Enable automatic change detection and incremental updates for the source |
<source>_config | str | None | JSON config string for non-filesystem sources (e.g. alfresco_config, s3_config) — see table below |
Note
filesystem uses the paths argument, not a JSON config string. All other sources pass their
connection details as a JSON string in the corresponding <source>_config argument.
Data Source JSON Config Strings¶
data_source | Config Argument | JSON Fields |
|---|---|---|
filesystem | paths (not JSON) | File/directory path(s) — no config string needed |
alfresco | alfresco_config | {"base_url": "...", "username": "...", "password": "...", "paths": [...], "nodeDetails": {...}} |
cmis | cmis_config | {"cmis_url": "...", "username": "...", "password": "...", "paths": [...]} |
s3 | s3_config | {"bucket": "...", "aws_access_key_id": "...", "aws_secret_access_key": "...", "region": "..."} |
azure_blob | azure_blob_config | {"connection_string": "...", "container_name": "..."} |
gcs | gcs_config | {"bucket_name": "...", "credentials_path": "..."} |
onedrive | onedrive_config | {"client_id": "...", "client_secret": "...", "tenant_id": "..."} |
google_drive | google_drive_config | {"credentials_path": "...", "folder_id": "..."} |
sharepoint | sharepoint_config | {"client_id": "...", "client_secret": "...", "tenant_id": "...", "site_url": "..."} |
box | box_config | {"client_id": "...", "client_secret": "...", "folder_id": "..."} |
web | web_config | {"urls": ["https://...", "https://..."]} |
wikipedia | wikipedia_config | {"titles": ["Article Title", "..."]} |
youtube | youtube_config | {"urls": ["https://youtube.com/watch?v=...", "..."]} |
skip_graph — All Ingest Tools¶
skip_graph=True is available on all three ingest tools:
ingest_documents(data_source="filesystem", paths=["/docs"], skip_graph=True)
ingest_text(content="...", source_name="doc.txt", skip_graph=True)
test_with_sample(skip_graph=True)
When set, the document is chunked, embedded, and stored in vector + search indexes but KG extraction and property graph / RDF store writes are skipped. Useful for fast bulk ingest when graph queries are not needed.
To build only one of the graphs, the same three tools take enabled_graph (property graph) and enabled_rdf (RDF graph); one left out follows the server's defaults (DEFAULT_ENABLED_GRAPH / DEFAULT_ENABLED_RDF, both true unless set):
ingest_documents(data_source="filesystem", paths=["/docs"], enabled_rdf=False) # property graph only
ingest_text(content="...", source_name="doc.txt", enabled_graph=False) # RDF graph only
Permission Filtering — Three Levels¶
| Level | How | Result |
|---|---|---|
| 1 (default) | search_documents / query_documents with no credentials |
No filtering. Needs the backend to trust the MCP server: the same random value in backend TRUSTED_CLIENT_KEY and MCP server FLEXIBLE_GRAPHRAG_TRUSTED_KEY |
| 2 | the same tools with source_auth (e.g. from sign_in) |
Those sources are filtered to what that user may read |
| 3 | MCP_BROWSER_SIGN_IN=true on the MCP server |
Adds start_sign_in / finish_sign_in (a link the user opens in a browser); AUTH_HANDOFF_CONFIRM_CODE=true on the backend adds a code to compare first |
Details: Full MCP README — Permission filtering and the Sign-In and Permission-Aware Search guide.