Skip to content

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

ArgumentTypeDefaultDescription
data_sourcestr"filesystem"Source type — see Data Source JSON Config Strings table below
pathsstrNonefilesystem only — file/directory paths; JSON array ["p1","p2"], comma-separated, or single path
skip_graphboolfalseSkip KG extraction and graph store writes; chunk + embed + vector/search only
enabled_graphboolNoneBuild the property graph (PG_GRAPH_DB); None = the server's DEFAULT_ENABLED_GRAPH
enabled_rdfboolNoneBuild the RDF graph (RDF_GRAPH_DB); None = the server's DEFAULT_ENABLED_RDF
enable_syncboolfalseEnable automatic change detection and incremental updates for the source
<source>_configstrNoneJSON 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_sourceConfig ArgumentJSON Fields
filesystempaths (not JSON)File/directory path(s) — no config string needed
alfrescoalfresco_config{"base_url": "...", "username": "...", "password": "...", "paths": [...], "nodeDetails": {...}}
cmiscmis_config{"cmis_url": "...", "username": "...", "password": "...", "paths": [...]}
s3s3_config{"bucket": "...", "aws_access_key_id": "...", "aws_secret_access_key": "...", "region": "..."}
azure_blobazure_blob_config{"connection_string": "...", "container_name": "..."}
gcsgcs_config{"bucket_name": "...", "credentials_path": "..."}
onedriveonedrive_config{"client_id": "...", "client_secret": "...", "tenant_id": "..."}
google_drivegoogle_drive_config{"credentials_path": "...", "folder_id": "..."}
sharepointsharepoint_config{"client_id": "...", "client_secret": "...", "tenant_id": "...", "site_url": "..."}
boxbox_config{"client_id": "...", "client_secret": "...", "folder_id": "..."}
webweb_config{"urls": ["https://...", "https://..."]}
wikipediawikipedia_config{"titles": ["Article Title", "..."]}
youtubeyoutube_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.