Laserfiche Mcp

io.github.adventist-gcPublished by GitHub account adventist-gcv2.6.2Updated Oct 24, 2026

MCP server for self-hosted Laserfiche repositories — search and read documents from Claude.

Overview

AI-generated overview

MCP server for self-hosted Laserfiche repositories that lets an assistant search, read, analyze and optionally modify documents.

What you can do
  • Search repositories with native Laserfiche queries or name patterns, including full-text and OCR passage search inside scans
  • Browse folders, look up entries by ID or path, and read metadata, template fields, tags and link definitions
  • Download files or extract text from PDF, Word, PowerPoint, email, HTML and RTF, with page ranges
  • Compare entries, find byte-identical duplicates, and view image files with a cost warning first
  • Create, import, copy, rename and move entries, edit fields, tags and links, and delete entries when write mode is enabled
  • Run the same operations from a command line with JSON output, or serve over HTTP for web clients
When to use it
Useful when an organization runs a self-hosted Laserfiche repository and wants an assistant to answer questions about its documents, summarize or compare records, find duplicates, or apply metadata changes under guardrails.
Requirements
Python 3.10+ and a reachable Laserfiche Repository API Server with a service account that can read it. Set LF_REPO_API_URL, LF_REPOSITORY_ID, LF_USERNAME and LF_PASSWORD; LF_API_VERSION selects v1 or v2. Optional extras add Office formats and image downscaling. Runs locally over stdio, or as an HTTP server for web clients.
Before you install
The service-account password (LF_PASSWORD) is a credential; the Desktop extension stores it in the OS keychain. Write tools are off by default and turn on with LF_READ_ONLY=false; deletes, renames and moves then need a preview token, and guardrails exist for allowed paths and tools. Document content is sent to the model provider. Laserfiche Cloud support is beta and unverified.

Installation

In SourceWeft

  1. Open Laserfiche Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

laserfiche-mcp

[PyPI version] [Python versions] [CI] [License: MIT] [MCP]

Owned by the General Conference of Seventh-day Adventists. Not affiliated with or endorsed by Laserfiche.

Let Claude (Desktop, Code, or any MCP client) search and read documents in a self-hosted Laserfiche repository — and, if you opt in, change them. The same program is also a command-line tool (ls, cat, search, dedupe, ...) for work that needs no AI at all.

Read-only by default. Writes are off until you set LF_READ_ONLY=false, and destructive actions always need a second confirmation step. Current release: v2.6.2 — see the CHANGELOG.

Quick start

bash
uv tool install laserfiche-mcp   # or run ad hoc: uvx laserfiche-mcplaserfiche-mcp setup             # asks for your server + account, then tests the connectionlaserfiche-mcp ls 1              # list the repository root

Then connect it to Claude. Prefer no terminal? Use the Claude Desktop extension. New to MCP? Read the step-by-step guide (~7 min). Want ready-made prompts and commands? See examples.

What it can do

Once connected, you can ask Claude things like:

  • "Which leases mention an unpaid balance, and what do they say?"
  • "Summarize the newest document in the Onboarding folder."
  • "Are these two scans the same record, or is something different?"
  • "Find duplicate invoices under 2023 and tell me how much space they take."
  • "Set Status to Approved on these five entries."

Behind that, it can:

Find things

  • Search with native Laserfiche queries or by name pattern — or let Claude draft the query from your repository's own templates and field names, with automatic repair if Laserfiche rejects it.
  • Search inside documents, including scans. Full-text search returns the matching passages (page number plus surrounding text) straight from Laserfiche's OCR index, so most "what does it say about X?" questions are answered without downloading anything.
  • Look at images. Claude can view picture files in the repository (PNG, JPEG, GIF, WebP) to describe, label and tag them against your own tag and template standard. Images cost tokens, so you're warned of the estimated cost and asked first; for scans of text it tries Laserfiche's OCR before looking at the picture. Optional laserfiche-mcp[images] adds downscaling.

Read things

  • Browse folders, look up entries by ID or path, and read metadata, template field values, and your repository's field / tag / template / link definitions.
  • Download files, or extract text — PDF, Word, PowerPoint, email, HTML, RTF and plain text (Excel and Outlook .msg need pip install 'laserfiche-mcp[office]') — with page ranges for long documents.

Analyze

  • Compare two entries' metadata and fields, and find byte-identical duplicates (only files whose sizes match are ever downloaded). From the command line you can also inventory a whole folder tree to CSV.

Make changes (opt-in)

  • Create folders, import documents, copy, rename and move entries.
  • Edit fields, tags and links (merge or replace), and assign or clear templates — with required-field checks before Laserfiche sees the request.
  • Delete entries, files, or page ranges. Deletes, renames and moves always show a preview first; folders can be fenced, tools allow-listed, and bulk deletes capped. See Safety.

Run where you need it

  • Locally in Claude Desktop or Claude Code, as a one-click Desktop extension, or as an HTTP server for claude.ai and ChatGPT with per-user sign-in.
  • Self-hosted Laserfiche (Repository API v1 and v2); Cloud support is in beta.
  • As a command-line tool with no AI involved — the same operations from a shell, with --json output for scripts. See docs/cli.md.

Every tool, with details: docs/tools.md.

Install

Claude Desktop extension

No terminal, no config files.

  1. Download the extension (needs Claude Desktop).

  2. Double-click it, click Install, and fill in the form:

    FieldWhat to enter
    Repository API URLYour server address, e.g. https://your-server/LFRepositoryAPI
    Repository nameThe repository you pick when signing in to Laserfiche Web Access
    Username / PasswordAn account that can read the repository (the password goes in your OS keychain)

    Not sure what to enter? Ask whoever runs Laserfiche at your organization.

  3. Ask Claude something, like "Find every invoice from March in the Accounting folder."

More detail: docs/desktop-extension.md.

Python package

bash
uvx laserfiche-mcp            # run directly, no installpip install laserfiche-mcp    # or add it to your environment

Needs Python 3.10+ and a reachable Laserfiche Repository API Server with an account that can read it.

Configure

Run laserfiche-mcp setup, or set these environment variables:

VariableExampleNotes
LF_REPO_API_URLhttps://lf.example.com/LFRepositoryAPIYour Repository API Server
LF_REPOSITORY_IDmy-repo
LF_API_VERSIONv1 (default) or v2Wrong value → 400 UnsupportedApiVersion. Probe with curl {LF_REPO_API_URL}/v1/Repositories and /v2/Repositories; the one that returns a repo list is yours.
LF_USERNAME / LF_PASSWORDA service account
LF_AUTH_MODEpassword
LF_READ_ONLYtrue (default)false turns on the write tools

Everything else — write guardrails, size limits, search tuning, web-client links, logging — is in docs/configuration.md.

[!WARNING] Laserfiche Cloud support is beta and has never been verified against a live tenant. If you have Cloud access, please open an issue with what worked or broke. Details in docs/configuration.md.

Connect to Claude

Claude Code

bash
claude mcp add laserfiche -- uvx laserfiche-mcp

Pass settings with --env LF_REPO_API_URL=... flags, or export them in your shell first.

Claude Desktop — add this to claude_desktop_config.json (%APPDATA%\Claude\ on Windows, ~/Library/Application Support/Claude/ on macOS), then restart:

json
{  "mcpServers": {    "laserfiche": {      "command": "uvx",      "args": ["laserfiche-mcp"],      "env": {        "LF_REPO_API_URL": "https://lf.example.com/LFRepositoryAPI",        "LF_REPOSITORY_ID": "my-repo",        "LF_API_VERSION": "v1",        "LF_USERNAME": "service-account",        "LF_PASSWORD": "replace-me",        "LF_AUTH_MODE": "password",        "LF_READ_ONLY": "true"      }    }  }}

Try a tool without Claude using the MCP Inspector: npx @modelcontextprotocol/inspector uvx laserfiche-mcp

Web clients (claude.ai, ChatGPT)

By default the server talks over stdio to a local client. Web connectors can't launch a local program, so run it as an HTTP server instead:

bash
laserfiche-mcp --http          # serves http://127.0.0.1:8000/mcp

For anything beyond your own machine you need TLS, authentication (per-user OAuth or a shared token) and a network path to your Laserfiche server. Setup and the security checklist: docs/remote-http.md.

Command line

bash
laserfiche-mcp ls '\HR\Leases'                 # list a folder (by path or entry ID)laserfiche-mcp get 4821 --to ./lease.pdf       # download a documentlaserfiche-mcp cat 4821 --pages 4-9            # print its textlaserfiche-mcp search 'unpaid balance'         # full-text search with excerptslaserfiche-mcp manifest 1 --out inventory.csv  # inventory a folder treelaserfiche-mcp dedupe 1                        # find byte-identical documents

Every command takes --json. More recipes in examples; the full reference is docs/cli.md.

Safety

  • Writes are off by default.
  • When on, you can fence them to specific folders (LF_WRITE_PATHS_ALLOW), limit which write tools exist (LF_WRITE_TOOLS_ALLOWED), and cap folder deletes.
  • delete, rename and move return a preview and a short-lived token; nothing changes until the call is repeated with that token.
  • Start in a sandbox folder: see the recommended write-mode config.

Where your document content goes: Data handling & privacy. All guardrails: docs/safety.md.

Troubleshooting

Start with one command — it tests your login, probes your server, and tells you what's wrong:

bash
laserfiche-mcp diagnose
SymptomLikely causeFix
diagnose says UNREACHABLEWrong URL, VPN down, or an https:// server whose certificate comes from your internal CAFix the URL; for an internal CA set LF_USE_SYSTEM_CA=true (or LF_CA_BUNDLE=<pem>) — not LF_VERIFY_SSL=false, which switches checking off
CERTIFICATE_VERIFY_FAILED ... hostname mismatchThe URL's host isn't a name on the certificate (e.g. short name vs. the full host.domain name)Use the host name on the certificate in LF_REPO_API_URL
diagnose suggests the other API versionLF_API_VERSION mismatchUse the version it names
HTTP 401, or Laserfiche error 9528Bad credentials (9528's "LFDS unreachable" wording is misleading)Re-run laserfiche-mcp setup
A setting seems ignoredA misspelled LF_* name — unknown names are silently skippeddiagnose lists any LF_* variable it doesn't recognize

On Windows, put repository paths in double quotes: laserfiche-mcp list "\HR\Leases". Claude Desktop logs: %APPDATA%\Claude\logs\ (macOS: ~/Library/Logs/Claude/).

When a tool fails it returns a structured error (not a crash) that tells the model whether to retry, ask you, or give up. See docs/error-contract.md.

Documentation

Getting startedSlower walkthrough for people new to MCP
ExamplesPrompts, commands and config you can copy
ConfigurationEvery LF_* setting
ToolsAll tools and how to use them
Command lineCLI conventions, formats and cost savings
Safety modelWrite guardrails and confirmation tokens
Data handling & privacyWhat Claude sees and where data goes
Remote HTTPWeb clients, OAuth, per-user access
Error contractError kinds and codes

Roadmap

  • Cloud verification — needs someone with a Laserfiche Cloud tenant to confirm the auth flow end to end.
  • Per-user access (beta) — LF_AUTH_MODE=oauth_passthrough runs Laserfiche calls as each user instead of a shared account; needs confirming against a live LFDS tenant (details).
  • Audit logging — a server-side log of every write call.
  • v3.0 — remove the old verb-first tool names (get_entry, ...); only laserfiche_{resource}_{verb} remain.
  • Later — Workflow trigger tools; stateless-MCP review for multi-instance deployments.

Contributing

Issues, suggestions, and PRs are encouraged and appreciated. Run the tests with:

bash
uv sync --extra devuv run pytest && uv run ruff check src tests && uv run mypy src

See CONTRIBUTING.md for setup, where help is most wanted, and the opt-in integration tests. This project is not affiliated with or endorsed by Laserfiche.

Ownership and license

This is an open-source project owned by the General Conference of Seventh-day Adventists and available to the public as-is, without warranty. It was created by, and is maintained by, Samuel Hernandez on the General Conference's behalf; the maintainer holds no copyright in it. See the LICENSE file for the full terms.

Bug reports, questions, and suggestions are encouraged and appreciated — please open an issue.

Source: README.md at commit 39c8a06

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v2.6.2LatestOct 15, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts