返回市场
阿尔夫雷索-MCP-实验室

阿尔夫雷索-MCP-实验室

作者:aborroy5 星标更新:2025-08-22

项目介绍

Alfresco MCP Lab

使用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                                                                                                                 

组件

先决条件

  • Docker 和 Docker Compose
  • 对于MCP客户端CMD
    • 在主机上运行Ollama并拉取gpt-oss模型(大约13GB):

      brew install ollama   # macOS(或参见ollama.com以获取您的操作系统版本)
      ollama pull gpt-oss
      
  • 对于MCP客户端UI
    • 环境中的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

一旦启动:

关于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

MCP客户端(CLI)

此客户端通过Ollama使用本地LLM(gpt-oss

  1. 验证Ollama和模型:

    ollama list
    # 期望类似如下输出:
    # gpt-oss:latest   ...   13 GB
    
  2. 运行CLI:

    cd mcp-client-cmd
    docker compose run --rm mcp-client
    
  3. 尝试一个提示:

    在Alfresco中搜索包含“预算”的文档,返回最多5个结果。
    

来自Steve Reiner的有用提示: https://github.com/stevereiner/python-alfresco-mcp-server/blob/main/prompts-for-claude.md

MCP客户端(UI)

  1. 切换到MCP客户端UI文件夹
cd mcp-client-ui
  1. 根据示例创建您的.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"
    
  2. 启动UI:

    docker compose up --build
    
  3. 打开http://localhost:8000并聊天

MCP UI 示例提示

您可以尝试一个更复杂的提示,执行Alfresco存储库中的操作并遵循完整的流程:

让我们测试一个完整的文档管理流程:

1. 创建一个名为“Project_Alpha”的文件夹
2. 将一个名为“requirements.md”的文档上传到该文件夹,并包含一些项目需求内容
3. 获取文档属性以验证其是否正确创建
4. 更新文档属性以添加标题和描述
5. 检出文档进行编辑
6. 以主要版本检查入文档,并附上适当的评论
7. 使用基本搜索(AFTS全文)搜索包含“需求”的文档
8. 尝试带有日期过滤器的高级搜索以找到相同的文档(AFTS带过滤器)
9. 使用元数据搜索通过标题属性找到它(AFTS属性搜索)
10. 使用CMIS搜索和SQL查询按名称找到它(CMIS SQL)
11. 下载文档以验证内容完整性

请逐步引导我,并在继续下一步之前确认成功。

端口总结

  • Alfresco(ACS):8080 (/alfresco)
  • MCP服务器:8003 (/mcp)
  • MCP UI(Chainlit):8000
  • Ollama:11434
  • LiteLLM:443

自己构建所有内容

请参阅docs/instructions.md了解从零开始构建和深入配置的方法

MCP服务器工具针对Alfresco

mcp-server/ 文件夹将实验室连接到 python-alfresco-mcp-server(基于FastMCP 2.0)。它提供了一个专注于内容搜索+文档生命周期的工具集,针对Alfresco。在最新的1.1系列中,服务器记录了以下功能和传输方式(STDIO、HTTP、SSE)

工具

  • 内容搜索:全文搜索内容和属性,基本通配符
  • 高级搜索(AFTS):带有日期过滤器、排序和字段定位的AFTS查询语言(工具名称在文档中显示为AFTS/“高级搜索”工具)
  • 元数据搜索:节点元数据上的属性谓词(等于/包含/范围)
  • CMIS(SQL样式的)搜索:用于复杂发现的CMIS查询
  • 上传:创建具有内容的新文档
  • 下载:根据ID/路径获取文档内容
  • 检出/检入/取消检出:工作副本流程和新版本(带有评论的主要/次要版本)
  • 创建文件夹:根据父ID/路径创建文件夹
  • 文件夹浏览:列出子项+基本元数据
  • 删除节点:文档/文件夹的回收站(或永久)删除
  • 获取/设置属性:读取/更新节点属性(包括名称)
  • 存储库信息(也作为资源公开):版本、状态和模块配置

模型上下文协议(MCP)——规范及SDK

  • 规范及概念:工具、资源、提示、传输方式以及协议修订在官方文档/规范中均有覆盖。从这里开始了解如何定义和调用工具(模型上下文协议)
  • 官方SDK:TypeScript、Python、Java、Go、Kotlin、Swift、C#、Ruby、Rust。每个都支持使用相同的核心语义构建服务器/客户端(模型上下文协议)

实现Alfresco MCP服务器的最佳方法

  1. Python + FastMCP(用于此实验) 快速搭建,经过与Alfresco的python-alfresco-mcp-server的实战考验,并且开箱即支持STDIO/HTTP/SSE。适合演示和生产试点。(GitHub)

  2. Java + Spring AI(MCP Java SDK + Spring Boot启动器) 由Spring维护的一流Java SDK;Spring AI 添加了自动配置、启动器以及客户端/服务器支持。最适合标准化于JVM/Spring的团队。(MCP, Spring AI)

  3. TypeScript(官方SDK) 如果您的堆栈是Node/TS,或者想要与Claude Desktop/TS示例保持一致。相同的协议模型,丰富的Zod模式。(模型上下文协议)

当平台约束或现有服务使这些更适合时,您也可以通过官方SDK针对Go/Kotlin/Swift/C#/Ruby/Rust进行目标设定

致谢与鸣谢