mcpField
F
fm-mcp

fm-mcp

本地服务
github.com/yranganaAI 与智能体51 周前更新

关于 fm-mcp

fm-mcp 是一个 MCP 服务,让编码 Agent 将摘要、字段提取、分类和图片 OCR 任务交给 macOS 27 的 Apple Foundation Models 本地模型处理。它仅在 Apple Silicon Mac 上运行,文本留在设备上,且支持离线使用。

主要功能

  1. 01摘要文本与日志
  2. 02按 JSON Schema 提取字段
  3. 03按自定义标签分类文本
  4. 04识别多种图片中的文字
  5. 05检查本机模型与配置

适用场景

  1. 01概括日志、文档或会议记录
  2. 02从文本中提取指定字段
  3. 03为文本分配一个或多个标签
  4. 04读取图片中的文字

MCP 相关

fm-mcp 是本地 stdio MCP 服务,向编码 Agent 暴露 `summarise`、`extract`、`classify` 和 `ocr` 工具。它通过本地 Unix socket 调用 `fm serve`,不通过网络发送文本。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
cargofm-mcp0.1.3

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

fm-mcp

Listed on ClaudePluginHub Listed on mcpservers.org

一个 MCP 服务,可让 Claude Code 和 Codex 等编码 Agent 将简单的文本任务交给 Apple Foundation Models 的设备端模型处理,也就是随 macOS 27 附带的 fm。它免费、私密,并且可离线运行。

mcp-name: io.github.yrangana/fm-mcp

网站: yrangana.github.io/fm-mcp,以及构建过程中的经验:设备端模型经实测的能力上限。

由 Yasiru Rangana 创建,他是悉尼的 AI 架构师和 AI 工程师。

为什么

编码 Agent 会为简单任务消耗付费的远程 Token,例如总结日志或从文档中提取字段。Mac 上已有的小型模型就能免费完成其中许多工作,而且文本不会离开设备。fm-mcp 让 Agent 可以交接这些任务,并明确告知它小型模型无法完成哪些工作。

Claude Code 询问日志中出了什么问题:它调用 fm-mcp 的 summarize 工具,核对摘要与日志内容,然后作答。

安装

fm-mcp 目前为公开测试版(0.1.x):可以正常使用且经过测试,但工具详情可能会在不同版本之间发生变化。CHANGELOG.md 列出了变更内容。

你需要一台搭载 Apple Silicon 的 Mac(不支持 Intel Mac)、开启了 Apple Intelligence 的 macOS 27,并且接受过一次 fm 许可协议(fm license)。这就是全部支持范围:fm-mcp doctor 会逐项检查,其他配置均不受支持。

还没有 Homebrew?请先从 brew.sh 安装。安装程序会询问是否安装 Xcode 命令行工具:接受并等待安装完成。

brew install yrangana/tap/fm-mcp
fm-mcp install    # sets up Claude Code and Codex
fm-mcp doctor     # checks everything fm-mcp needs

在终端中录制的 brew install、fm-mcp install 和 fm-mcp doctor 操作

然后启动一个新的 Claude Code 或 Codex 会话。首次调用工具时,fm-mcp 会自行启动模型服务(fm serve),并在会话结束时将其停止。

获取二进制文件的其他方式:

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/yrangana/fm-mcp/releases/latest/download/fm-mcp-installer.sh | sh
cargo install fm-mcp
fm-mcp install 会修改什么
  • **Claude Code:**将 fm-mcp MCP 服务添加到 ~/.claude.json(如果存在 claude 命令,则通过 claude mcp add 添加),并将 fm-delegate 技能安装到 ~/.claude/skills/。
  • **Codex:**将 [mcp_servers.fm-mcp] 添加到 ~/.codex/config.toml,并在 ~/.codex/AGENTS.md 中添加带标记的部分(如果你使用 AGENTS.override.md,则添加到该文件中)。

它会在修改每个文件前备份,并打印所有受影响的路径;再次运行不会产生任何变化。--claude 或 --codex 用于选择一个 Agent,--dry-run 用于显示变更而不写入,--no-guidance 用于跳过技能和 AGENTS.md 部分。fm-mcp install --uninstall 会移除它添加的所有内容。

技能和 AGENTS.md 部分会告诉 Agent 何时交接任务。没有它们,Agent 只能看到工具说明,交接效果也会较差。

或者:Claude Code 插件

该插件无需运行 fm-mcp install,即可为 Claude Code 提供 MCP 服务和技能。但你仍需先将二进制文件安装到 PATH 中(参见上方的 Homebrew 安装说明);否则 Claude Code 会报告服务连接失败。

/plugin marketplace add yrangana/fm-mcp
/plugin install fm-mcp@fm-mcp

Claude Code 应使用该插件或运行 fm-mcp install,不要同时使用:两者一起使用会让 Claude Code 启动两个 fm-mcp 服务。使用插件时,请运行 fm-mcp install --codex,仅配置 Codex。

其他 MCP 客户端

fm-mcp 是一个纯 stdio MCP 服务,因此其他能在同一台 Mac 上运行本地服务的客户端也可以使用它。fm-mcp install 不会为它们进行设置,而且它们也不会获得委派指导:Agent 只能根据工具描述自行判断。下方列出的客户端都在真实 Mac 上试用过;其他客户端可能也能使用,但未经测试。

Claude Desktop(使用 2.31226.1 试用,2026-10-11)。在 Settings › Developer › Edit Config 中,将以下内容添加到 mcpServers 的 claude_desktop_config.json 中,然后退出并重新打开 Claude Desktop:

"fm-mcp": {
  "command": "/opt/homebrew/bin/fm-mcp",
  "args": []
}

使用完整路径(which fm-mcp 会显示路径)。fm-mcp 最适合处理 Mac 上的文件:将文件路径提供给 Claude,它就会传入 path,因此文本不会经过 Claude。对于网页,Claude Desktop 会先自行读取页面,所以委派任务并无益处。

Devin(前身为 Windsurf)(使用 Devin.app 3.8.20 试用,2026-10-11)。将以下内容添加到 ~/.config/devin/mcp_config.json 中的 mcpServers:

"fm-mcp": {
  "type": "stdio",
  "command": "/opt/homebrew/bin/fm-mcp",
  "args": []
}

工具

工具功能可处理的数据量
summarise将日志、文档、笔记和转录内容浓缩为概要:一段文字,或最多 7 条要点。并非完整记录。约 30,000 个散文词,但对于内容密集的日志,仅约 1,000 行。长文本会被拆分后合并,这需要一两分钟,也可能丢失细节。
extract根据你提供的 JSON Schema,从一段文本中提取指定字段并输出为 JSON。使用扁平 Schema 效果最佳。约 3,500 个散文词。
classify将一段文本归入你指定的标签(一项标签,或使用 multi 选择多个标签)。约 3,500 个散文词。
ocr读取 PNG、JPEG、HEIC、TIFF、GIF 或 BMP 图像中的文字。不支持 PDF。一张图像。

summarise、extract 和 classify 接受 text,也可以接受文本文件的 path(最大 1 MB),这样 Agent 就不必亲自读取文件。docs/TOOLS.md 列出了所有参数,并附有调用示例。

限制
  • 模型较小,上下文也较短: 约 8K 个 token,由输入和回答共享。充满 ID 和数字的日志,每个词消耗的 token 远多于散文。
  • 不适用于代码、数学、推理、文本中没有的事实,或错误代价高且无法核查的情况。
  • 它会出错。 摘要可能遗漏或歪曲细节。对于文本中不存在的字段,extract 经常会返回 null,但并不总是如此:在短发票中,缺少的采购订单编号在 25 次运行中有 10 次被供应商名称替代。模型在某个字段上卡住时,fm-mcp 会保留已完成的字段,将卡住的字段设为 null 并说明情况;这次调用约需 15 s。只询问文本中可能存在的字段。嵌套 Schema 的可靠性低于扁平 Schema。请核查重要内容。
  • 一次只能处理一个请求。 Mac 上的所有会话共用同一个模型,因此调用会排队:短 extract 需要 1–2 s,长 summarise 则需要一分钟或更久。
  • 安全过滤器: 设备端模型有时会拒绝无害的输入。fm-mcp 会明确报告这一点,并由 Agent 自行完成任务。

隐私

所有操作都在你的 Mac 上运行。fm-mcp 通过本地 Unix 套接字与 fm serve 通信,不会向网络发送任何内容。你的文本只会发送给设备端模型。SECURITY.md 介绍了详细信息,以及如何私下报告安全问题。

故障排除

运行 fm-mcp doctor。它会检查 Mac、macOS、fm、许可证、模型、测试请求以及两个 Agent 的设置,并说明如何修复发现的问题。

问题修复方法
尚未同意许可证运行一次 fm license。
模型不可用在“系统设置”中启用 Apple Intelligence,并等待模型完成下载。
工具提示模型“卡住了”通常是因为架构中包含文本未提及的字段,或者另一个会话正在使用该模型。尝试使用更扁平的架构。
工具处理长输入时超时提高限制:在 MCP 服务的环境中设置 FM_MCP_REQUEST_TIMEOUT_SECS(默认值为 120)。
需要更多详细信息在 MCP 服务的环境中设置 FM_MCP_LOG=debug。fm-mcp 只向 stderr 写入日志(stdout 用于传输 MCP 协议)。

卸载

fm-mcp install --uninstall
brew uninstall fm-mcp

开发

git clone https://github.com/yrangana/fm-mcp.git
cd fm-mcp
cargo build --release
./target/release/fm-mcp install    # points your agents at this build

cargo test --features fake-fm      # needs no Apple Intelligence: uses a fake fm
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt --check
scripts/real_fm_smoke.sh           # checks against the real fm on this Mac

AGENTS.md 介绍了架构、关于 fm serve 的测试事实以及项目规则。docs/MANUAL_TEST.md 是每个版本的检查清单。

许可证

MIT。fm-mcp 与 Apple 无关联,也未获 Apple 背书。它会调用 Mac 上安装的 fm 工具,不包含任何 Apple 提供的内容。

由 Yasiru Rangana 创建。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。