使用Docker对Alfresco社区版进行**模型上下文协议(MCP)**实验的可重复实验室。
flowchart LR
O("`OLLAMA
local gpt-oss`")
CIC("`CIC LiteLLM
service claude`")
CMD("`MCP 客户端
CMD`")
UI("`MCP 客户端
UI`")
S("`MCP 服务器
社区项目`")
A("`ALFRESCO
社区`")
CMD -- "8003" --> S
S -- "8080" --> A
UI -- "8003" --> S
O -. "11434" .-> CMD
CIC -. "443" .-> UI
gpt-oss模型)在主机上运行Ollama并拉取gpt-oss模型(大约13GB):
brew install ollama # macOS(或参见ollama.com以获取您的操作系统版本)
ollama pull gpt-oss
LITELLM_API_KEY(或在.env中),用于您选择的提供商网络说明
host.docker.internal在Docker Desktop(macOS/Windows)中开箱即用 在Linux上,向必须访问主机的服务添加extra_hosts: ["host.docker.internal:host-gateway"](例如,调用主机上的Ollama)
启动Alfresco和MCP服务器:
docker compose up --build
一旦启动:
admin / admin)compose.yaml此仓库的compose.yaml包括子堆栈:
include:
- mcp-server/compose.yaml
- alfresco/compose.yaml
如果您的Compose版本不支持include,则使用多个文件运行:
docker compose -f alfresco/compose.yaml -f mcp-server/compose.yaml up --build
此客户端通过Ollama使用本地LLM(gpt-oss)
验证Ollama和模型:
ollama list
# 期望类似如下输出:
# gpt-oss:latest ... 13 GB
运行CLI:
cd mcp-client-cmd
docker compose run --rm mcp-client
尝试一个提示:
在Alfresco中搜索包含“预算”的文档,返回最多5个结果。
来自Steve Reiner的有用提示: https://github.com/stevereiner/python-alfresco-mcp-server/blob/main/prompts-for-claude.md
cd mcp-client-ui
根据示例创建您的.env并设置LiteLLM + MCP/ACS端点。
macOS/Linux:
cp .env.example .env
Windows(PowerShell):
Copy-Item .env.example .env
示例.env:
# LiteLLM(替换为您自己的提供商/基础/模型)
LITELLM_API_KEY=YOUR_API_KEY
LITELLM_API_BASE=https://api.your-provider.example/v1
LITELLM_MODEL=anthropic/claude-3-5-sonnet
# MCP服务器
MCP_URL=http://host.docker.internal:8003/mcp
# 日志记录
LOG_LEVEL=INFO
在Linux上,如果UI容器无法访问主机,请添加:
extra_hosts: - "host.docker.internal:host-gateway"
启动UI:
docker compose up --build

您可以尝试一个更复杂的提示,执行Alfresco存储库中的操作并遵循完整的流程:
让我们测试一个完整的文档管理流程:
1. 创建一个名为“Project_Alpha”的文件夹
2. 将一个名为“requirements.md”的文档上传到该文件夹,并包含一些项目需求内容
3. 获取文档属性以验证其是否正确创建
4. 更新文档属性以添加标题和描述
5. 检出文档进行编辑
6. 以主要版本检查入文档,并附上适当的评论
7. 使用基本搜索(AFTS全文)搜索包含“需求”的文档
8. 尝试带有日期过滤器的高级搜索以找到相同的文档(AFTS带过滤器)
9. 使用元数据搜索通过标题属性找到它(AFTS属性搜索)
10. 使用CMIS搜索和SQL查询按名称找到它(CMIS SQL)
11. 下载文档以验证内容完整性
请逐步引导我,并在继续下一步之前确认成功。
/alfresco)/mcp)请参阅docs/instructions.md了解从零开始构建和深入配置的方法
mcp-server/ 文件夹将实验室连接到 python-alfresco-mcp-server(基于FastMCP 2.0)。它提供了一个专注于内容搜索+文档生命周期的工具集,针对Alfresco。在最新的1.1系列中,服务器记录了以下功能和传输方式(STDIO、HTTP、SSE)
Python + FastMCP(用于此实验)
快速搭建,经过与Alfresco的python-alfresco-mcp-server的实战考验,并且开箱即支持STDIO/HTTP/SSE。适合演示和生产试点。(GitHub)
Java + Spring AI(MCP Java SDK + Spring Boot启动器) 由Spring维护的一流Java SDK;Spring AI 添加了自动配置、启动器以及客户端/服务器支持。最适合标准化于JVM/Spring的团队。(MCP, Spring AI)
TypeScript(官方SDK) 如果您的堆栈是Node/TS,或者想要与Claude Desktop/TS示例保持一致。相同的协议模型,丰富的Zod模式。(模型上下文协议)
当平台约束或现有服务使这些更适合时,您也可以通过官方SDK针对Go/Kotlin/Swift/C#/Ruby/Rust进行目标设定
alf-cli)生成ACS Docker资产