内容
# Lucee MCP 服务器 — Docker
运行 Lucee 8.0(精简版)的最小 Docker 镜像,搭配 [MCP 服务器扩展](https://github.com/lucee/extension-mcp-server)。`GET /` 提供一个介绍端点及其工具的登陆页面;`POST /` 是 MCP JSON-RPC 端点。
该镜像安装了 Lucene 搜索扩展,因此 `search_lucee_docs` 可以索引和搜索 Lucee 文档(函数、标签和配方)。
## 快速开始
```bash
git clone https://github.com/lucee/extension-mcp-server-docker.git
cd extension-mcp-server-docker
docker compose up -d --build
```
Lucee 在首次启动时下载 MCP 和 Lucene 扩展。容器需要访问 Maven / Lucee 扩展提供程序和 GitHub 的网络权限(用于首次搜索调用的配方索引)。
## 端口
| 端口 | 服务 |
|--------|---------|
| `8856` | Tomcat |
## MCP 端点
`POST /` 是 JSON-RPC 端点 — 没有针对每个工具的单独路径。
```
POST /
```
示例:`http://localhost:8856/`
`GET /`(或任何其他方法)提供一个 HTML 登陆页面,描述端点、其工具以及如何将其添加到 Claude、ChatGPT 和 Gemini。
### 工具
| 工具 | 参数 | 描述 |
|------|-----------|-------------|
| `get_lucee_function` | `name`(字符串) | 内置函数的 FLD 描述符 |
| `get_lucee_tag` | `name`(字符串) | 标签的 TLD 描述符 |
| `search_lucee_docs` | `query`(字符串),`maxResults`(整数,可选) | 跨函数、标签和配方的 Lucene 全文搜索 |
| `parse_cfml_ast` | `source` 或 `path`,`mode`,`summary`,`maxDepth` | 将 CFML 解析为 AST 树或紧凑摘要 |
| `query_cfml_ast` | `source` 或 `path`,`nodeType`,`name`,`line`,`builtInOnly` | 在解析的 CFML 中查找匹配的 AST 节点 |
AST 工具需要 Lucee 7.0.0.296+ 和 MCP 服务器 1.0.1.0+。
## 配置
| 变量 | 默认值 | 目的 |
|----------|---------|---------|
| `LUCEE_ADMIN_PASSWORD` | `qwerty` | Lucee 管理员密码 |
MCP 服务器扩展不实现端点身份验证。
## 示例 curl
```bash
# 列出工具(预期 5 个)
curl -s -X POST http://localhost:8856/ \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
# 查询函数
curl -s -X POST http://localhost:8856/ \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/call","id":2,"params":{"name":"get_lucee_function","arguments":{"name":"arraySort"}}}'
# 搜索文档(第一个调用构建 Lucene 索引;可能需要几秒钟)
curl -s -X POST http://localhost:8856/ \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/call","id":3,"params":{"name":"search_lucee_docs","arguments":{"query":"how to read a file","maxResults":3}}}'
```
## CFConfig
镜像附带一个单独的 CFConfig 文件,从 Maven 安装 MCP 服务器、Lucene 搜索和 ESAPI 扩展(ESAPI 提供 `encodeForHTML`/`encodeForURL`,由登陆页面使用)。CFConfig 扩展在新的服务器安装时应用 — 在更改 `lucee-config.json` 后重新创建容器 (`docker compose down && docker compose up -d --build`)。
## Server.cfc
`Server.cfc`(复制到 `lucee-server/context/context/Server.cfc`)在 Lucee 服务器启动时创建 `MCPServer` 实例,一次在全局 `server` 作用域中 — 在所有请求中共享,而不是为每个应用程序/请求重建。
## 游标 / Claude MCP 客户端配置
```json
{
"mcpServers": {
"lucee": {
"url": "http://localhost:8856/"
}
}
}
```
参见 [扩展 README](https://github.com/lucee/extension-mcp-server) 以获取工具详细信息、自定义 URL 映射和添加您自己的工具。