Skip to main content
Version: v2026.2.0

Getting Started

FlowerDocs MCP Server​

The FlowerDocs MCP server exposes FlowerDocs administration and configuration management as tools that an AI assistant can call, using the Model Context Protocol. Connect any MCP-compatible assistant (Claude Desktop, Claude Code, Cursor, VS Code, and others) and drive FlowerDocs in natural language: create tag classes, edit GUI configurations, manage scripts and operation handlers, purge caches, and more.

It runs as a standalone service alongside your FlowerDocs Core and GUI, and speaks the Model Context Protocol over the Streamable HTTP transport.

It is an administration tool

Every tool runs under real FlowerDocs user credentials, and the whole server is gated by a shared access key. It is meant for administrators and integrators. See Authentication. Do not expose it openly on the internet.

Prerequisites​

  • Java 25
  • Running FlowerDocs Core and FlowerDocs GUI instances.
  • FlowerDocs user credentials: the MCP always authenticates; there is no anonymous access.
  • The MCP URL and the MCP access key for your deployment, the key already encrypted as ENC(...) (ask your administrator).

Encrypt your password​

The MCP only accepts your FlowerDocs password encrypted as ENC(...), and only one encrypted with the key of the MCP server you connect to. The MCP server encrypts it for you through its POST /encrypt endpoint. This call needs no FlowerDocs login or role, only the MCP access key you received.

In the steps below, replace https://<flowerdocs-host>/flowerdocs-mcp with the MCP URL your administrator gave you, without the trailing /mcp.

  1. Open the Swagger UI of the MCP server: https://<flowerdocs-host>/flowerdocs-mcp/swagger-ui/index.html.
  2. Expand the Encryption section, then the POST /encrypt operation.
  3. Click Try it out.
  4. In the X-FlowerDocs-Access-Key field, paste the encrypted access key exactly as you received it, ENC(...) included.
  5. In the Request body, keep the text/plain media type and replace the sample value with your FlowerDocs password, without quotes.
  6. Click Execute.
  7. Under Server response, a 200 code returns your encrypted password in the Response body, already wrapped as ENC(...). Copy the whole value into the X-FlowerDocs-Password header of your client configuration (see below).

The same call with curl:

curl -X POST https://<flowerdocs-host>/flowerdocs-mcp/encrypt \
-H "X-FlowerDocs-Access-Key: ENC(yourEncryptedAccessKey)" \
-H "Content-Type: text/plain" \
--data-raw 'yourPassword'
# -> ENC(Nhbs45YyYLhmY44udE2fAitLoJywdoSm)
The call returns 403

The access key is checked before anything else. The server answers 403 when the X-FlowerDocs-Access-Key header is missing, when its value is not wrapped as ENC(...), or when it does not match the access key configured on this MCP server. Paste the key exactly as your administrator gave it to you, and check that it was produced for this server: an access key encrypted for another server cannot be used here.

When to encrypt again

An encrypted password only works with the MCP server that produced it. Encrypt it again after changing your FlowerDocs password, or when you connect to another MCP server. If the MCP answers that it could not decrypt the ENC(...) password, the value was not produced by this server: run the steps above again.

Connect your AI client​

Once the server is running (see Installation), the MCP endpoint is available at http://localhost:8086/flowerdocs-mcp/mcp. Declare two servers in your client configuration: flowerdocs, which performs the changes, and uxodocs, which gives the assistant this documentation so it gets them right (see Documentation MCP).

Edit claude_desktop_config.json (Windows: %APPDATA%\Claude\, Mac: ~/Library/Application Support/Claude/):

{
"mcpServers": {
"flowerdocs": {
"command": "mcp-remote",
"args": [
"http://localhost:8086/flowerdocs-mcp/mcp",
"--header", "X-FlowerDocs-Access-Key: ENC(yourEncryptedAccessKey)",
"--header", "X-FlowerDocs-User: yourUsername",
"--header", "X-FlowerDocs-Password: ENC(yourEncryptedPassword)",
"--header", "X-FlowerDocs-Scope: FD"
]
},
"uxodocs": {
"command": "mcp-remote",
"args": ["https://gitmcp.io/Uxopian/uxodocs"]
}
}
}

mcp-remote bridges URL-based MCP servers for Claude Desktop; install it with npm install -g mcp-remote. Restart Claude Desktop; both servers appear as connected.

To browse and call the tools interactively without an assistant, use the MCP Inspector, selecting the Streamable HTTP transport and the URL above.

Try it out​

Once connected, ask your assistant:

List all the admin entity types available.

Show me all tag classes defined in the FD scope.

Create a tag class called "InvoiceAmount" of type INT, make it searchable.

Show me the XML content of the GUI configuration "search-form-invoice".

Update the script "validate-invoice" to add a check on the InvoiceAmount tag.

What the assistant can do​

The tools are grouped into families:

FamilyPurpose
Admin entitiesGeneric CRUD over tag classes, component classes, ACLs, tag categories, workflows
Team configurationUpdate a scope's team settings, such as profile tabs
Class helpersField-type discovery, appending allowed values / tag references
Technical documentsGUI configurations, scripts, operation handlers, CSS, routes, templates, pages
CacheList and purge Core caches after bulk configuration changes
Config componentsInstances of technical virtual-folder / folder classes (e.g. profile tabs)

Each tool is advertised with readOnly / destructive hints, so a client such as Claude Desktop groups read-only tools apart from a Write / delete tools group and can ask for confirmation before running the destructive ones.

Why the second server matters​

Tool descriptions are intentionally minimal: technicaldoc_describe tells the assistant that a GUI configuration holds XML, not which XML FlowerDocs expects. The uxodocs entry closes that gap, so the assistant reads the reference page before writing the document instead of guessing its structure.

See Documentation MCP for what that changes in practice.