Fabric MCP服务器

一个将Daniel Miessler的Fabric模式和策略暴露给符合MCP协议的客户端的服务器,支持动态同步、模式提示、策略支持和资源管理。

  • by brneto
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 brneto/fabric-mcp-server

使用说明

结构MCP服务器(Docker)

一个模型上下文协议(MCP)服务器,它公开 丹尼尔·米斯勒的织物 MCP合规客户的模式和策略。它会自动与上游Fabric存储库同步,允许您在AI工作流程中直接使用其强大的提示。

特性

  • 动态同步:每次服务器启动时克隆或更新结构存储库。
  • 图案提示:自动为中的每个文件夹创建MCP提示 patterns/.
  • 智能描述:从每个模式中提取有意义的描述 system.md 文件,以帮助LLM了解何时使用每种模式。
  • 战略支持:每个提示都包含一个可选 strategy 从中添加上下文的参数 strategies/.自然语言短语如“with strategy cot”或“using cot strategy”被识别出来。
  • 用户输入:每个提示都需要一个 input 用户提供的内容(文本、URL等)的参数。
  • 执行模式工具:暴露一个 execute_pattern 该工具使AI代理可以通过可选策略以编程方式执行任何结构模式。
  • 列表模式工具:暴露a list_patterns 该工具使AI代理能够以编程方式发现可用的结构模式。
  • 列表策略工具:暴露a list_strategies 发现可用策略及其描述的工具。
  • 研究资源:以markdown和PDF格式将研究文档作为MCP资源公开,可通过自定义URI访问(例如。, markdown://researches/the-prompt-report, pdf://researches/the-prompt-report).
  • 资源订阅:支持订阅markdown资源更改,在文件被修改时通知客户端。

项目结构

fabric-mcp-server/
├── server.py              # Main entry point, MCP server registration
├── Dockerfile
├── pyproject.toml
│
├── helpers/               # Helper utilities package
│   ├── __init__.py        # Re-exports all functions
│   ├── _types.py          # TypedDict definitions
│   ├── config.py          # Configuration constants
│   ├── repo.py            # Repository management (sync, clone)
│   ├── paths.py           # Directory/path utilities
│   ├── text.py            # Text processing utilities
│   ├── patterns.py        # Pattern operations
│   ├── strategies.py      # Strategy operations
│   └── prompt_builder.py  # Prompt construction utilities
│
├── mcp_handlers/          # MCP protocol handlers package
│   ├── __init__.py        # Re-exports all handlers
│   ├── tools.py           # Tool handlers (list_patterns, execute_pattern, etc.)
│   ├── resources.py       # Resource handlers (research documents)
│   └── prompts.py         # Prompt handlers (Fabric patterns as prompts)
│
└── resources/
    ├── markdown/
    │   └── researches/    # Markdown research documents exposed as MCP resources
    └── pdf/
        └── researches/    # PDF research documents exposed as MCP resources

先决条件

构建

在本地构建Docker镜像:

docker build -t fabric-mcp-server .

运行服务器

1.手动测试(标准)

要测试服务器是否正确启动并同步存储库,请执行以下操作:

docker run -i fabric-mcp-server

注意:服务器通过stdin/stdout上的JSON-RPC进行通信。您将在stderr上看到日志,并可以通过MCP检查器进行交互。

2.通过MCP网关(克劳德桌面等)访问

将此服务器与网关一起使用,如 克劳德桌面,将以下内容添加到您的 claude_desktop_config.json (通常位于 ~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):

{
  "mcpServers": {
    "fabric": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "fabric-mcp-server"
      ]
    }
  }
}

3.通过Gemini CLI访问

将此服务器与 Gemini CLI,将以下内容添加到您的 ~/.gemini/settings.json:

{
  "mcpServers": {
    "fabric": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "fabric-mcp-server"
      ]
    }
  }
}

4.使用MCP网关“运行”命令

如果您使用的网关支持通过直接命令字符串运行服务器,请使用:

docker run -i --rm fabric-mcp-server

5.通过Docker MCP网关使用

如果您正在使用 Docker MCP网关 CLI,您可以直接使用以下命令运行此服务器:

docker mcp gateway run fabric-mcp-server

6.全局注册(Docker MCP目录)

使此服务器对所有Docker MCP客户端可见(如 docker mcp CLI)使用中的配置文件 ~/.docker/mcp/:

  1. 塑造形象:

    docker build -t fabric-mcp-server .
    
  2. 创建本地目录: 创建一个名为的文件 local.yaml 在目录目录中(通常 ~/.docker/mcp/catalogs/local.yaml):

    version: 3
    name: local-catalog
    displayName: Local Catalog
    registry:
      fabric:
        title: Fabric
        description: Fabric patterns and strategies
        type: server
        image: fabric-mcp-server:latest
        tools:
          - execute_pattern
          - list_patterns
          - list_strategies
          - list_research_resources
          - read_research_resource
        prompts: []  # One prompt per pattern in the Fabric repository
        resources: {}
        metadata:
          category: productivity
          tags:
            - fabric
            - ai
            - prompts
          owner: local
    
  3. 启用服务器: 编辑注册表文件(通常 ~/.docker/mcp/registry.yaml)并添加 fabric 进入下 registry::

    registry:
      # ... other servers ...
      fabric:
        ref: ""
    
  4. 验证: 跑 docker mcp list (如果可用)或简单地尝试运行它:

    docker mcp gateway run fabric
    

使用MCP检查器进行调试

这 MCP检查员 是一个用于测试和调试MCP服务器的交互式开发工具。它允许您检查资源、测试提示、执行工具和监视服务器通知。

运行检查器

要使用MCP检查器调试此结构MCP服务器,请运行:

npx @modelcontextprotocol/inspector docker run -i --rm fabric-mcp-server

这将在浏览器中启动Inspector UI,连接到在Docker中运行的Fabric MCP服务器。

检查器功能

  • 资源选项卡:浏览和检查研究文档(markdown和PDF)
  • 提示选项卡:使用自定义输入和策略测试织物图案
  • 工具选项卡:执行 list_patterns, list_strategies, execute_pattern,以及研究资源工具
  • 通知窗格:监视服务器日志和通知

开发工作流程

  1. 构建Docker镜像: docker build -t fabric-mcp-server .
  2. 使用上述命令启动检查器
  3. 更改服务器代码
  4. 重建映像并重新连接检查器进行测试

原理

  1. 初创公司:服务器克隆 https://github.com/danielmiessler/fabric 放入容器中。
  2. 提示:它扫描文件夹,如 extract_wisdom, summarize等等 patterns/.
  3. 资源:它扫描 resources/markdown/researches/ 和 resources/pdf/researches/ 研究文档的文件夹,并将其作为具有自定义URI的MCP资源公开。
  4. 订阅:客户端可以订阅降价资源更改。服务器监视markdown资源文件夹,并在文件被修改时发送通知(不支持PDF订阅)。
  5. 执行:
    • 当您选择提示时(例如。, extract_wisdom),它读到 system.md 文件。
    • 如果您提供 strategy (例如。, cot),它获取策略JSON,提取提示内容,以及 前置 将其添加到系统消息中。
    • 这 input 论证内容为 附加 直到提示的末尾。
  6. 工具:
    • 使用 execute_pattern 运行任何包含内容和可选策略的结构模式。
    • 使用 list_patterns 以发现所有可用的织物图案。
    • 使用 list_strategies 发现可用的策略及其描述。
    • 使用 list_research_resources 发现所有可用的研究文件。
    • 使用 read_research_resource 按名称阅读特定的研究文档(支持人类可读的名称,如“The Prompt Report”和slug,如“The Prompt Report”)。

MCP提示、工具和资源

重要提示:在模型上下文协议(MCP)中:

  • 提示 是服务器公开的模板,供客户端(您)使用
  • 工具 是AI代理可以直接调用的函数
  • 资源 是客户端可以读取的数据源(文件、文档)

作为AI代理,LLM主要看到工具。它们可能无法直接看到面向用户的提示(如 analyze_bill_short 或 youtube_summary)从连接的MCP服务器。这些通常通过客户的UI访问(例如,键入 / 在您与Claude Desktop的聊天界面中)。

这就是为什么我们揭露:

  • 提示:对于支持 / 命令接口
  • execute_pattern 工具:因此,AI代理可以通过自然语言以编程方式运行任何模式
  • list_patterns 工具:因此,AI代理可以发现可用的模式
  • list_research_resources 工具:因此,人工智能代理可以发现可用的研究文档
  • read_research_resource 工具:因此,人工智能代理可以通过自然语言阅读研究文档
  • 资源:研究文件可通过以下方式访问 markdown://researches/{title} 和 pdf://researches/{title} 统一资源标识符

使用示例

通过客户端UI使用提示

MCP提示可通过客户的UI访问。例如,在Claude Desktop中,键入 / 后面是模式名称:

客户端操作 结果
类型 /create_micro_summary 通过以下提示调用模式 input (必填)以及 strategy (可选)
类型 /summarize 调用摘要模式
类型 /extract_wisdom 调用提取智慧模式

通过自然语言使用工具

AI代理可以使用可用的工具来发现和执行模式:

自然语言提示 工具调用 参数
“有哪些面料图案可供选择?” list_patterns -
“显示可用策略” list_strategies -
“有哪些研究文件?” list_research_resources -
“列出所有研究论文” list_research_resources -
“阅读即时报告研究论文” read_research_resource name="The Prompt Report" 或 name="the-prompt-report"
“显示提示报告的内容” read_research_resource name="the-prompt-report", format="markdown"
“总结即时报告中的主要发现” read_research_resource name="the-prompt-report"
“创建微摘要https://youtu.be/abc123" execute_pattern pattern="create_micro_summary", input="https://youtu.be/abc123"
“用strategic cot总结这篇文章:https://example.com/article" execute_pattern pattern="summarize", input="https://example.com/article", strategy="cot"
“从这篇文章中提取智慧:[text]” execute_pattern pattern="extract_wisdom", input="[text]", strategy="cot"

利用资源

MCP资源是服务器公开的数据源。研究文档可以通过自定义URI以markdown和PDF格式提供:

资源URI 描述
markdown://researches/the-prompt-report 提示报告(Markdown格式)
pdf://researches/the-prompt-report 即时报告(PDF格式)

通过客户端UI访问资源

MCP资源的访问方式与Prompts不同。在Gemini CLI中,使用 @ 在聊天中引用和嵌入资源内容的前缀:

特性 访问方式 功能
MCP提示 /<name> 运行预定义的提示模板
MCP资源 @<uri> 获取数据(文件、文档)并将其附加到您的邮件中
客户端操作 结果
类型 @fabric:markdown://researches/the-prompt-report 将markdown研究文档嵌入到您的聊天环境中
类型 @fabric:pdf://researches/the-prompt-report 将PDF研究文档嵌入到您的聊天环境中

小贴士:类型 @ 在Gemini CLI中查看来自连接的MCP服务器的所有可用资源的自动完成。

示例用法:

@fabric:markdown://researches/the-prompt-report Summarize the key findings from this research paper

添加新资源

要添加新的研究文档,请执行以下操作:

  • 将标记文件放入 resources/markdown/researches/
  • 将PDF文件放入 resources/pdf/researches/

文件将根据文件名自动发现并显示一个URL友好的slug。

资源订阅

客户可以订阅 标记语言 修改文件时接收通知的资源更改:

  • 订阅:呼叫 resources/subscribe 使用markdown资源URI开始接收更改通知
  • 退订:呼叫 resources/unsubscribe 停止接收通知

当修改订阅的markdown文件时,服务器会发送 notifications/resources/updated 通知客户。

备注:PDF资源不支持订阅。

提示论点

调用提示时(通过 / 命令),您可以提供:

参数 必填 描述 示例
input 是 要分析的内容(文本、URL等) https://youtu.be/abc123
strategy 否 加强分析的思维策略 cot, tot

小贴士:为了在使用策略时获得最佳效果,请使用以下短语:

  • “战略小屋”
  • “使用策略tot”
  • “应用cot策略”