mcpField
M
mcp-ollama

mcp-ollama

本地服务
truealter.comAI 与智能体05 周前更新

关于 mcp-ollama

mcp-ollama 是通过 stdio 将 MCP 工具调用转交给本机 Ollama 模型的服务,面向希望在本地处理生成、摘要、代码和图像任务的用户。它提供十种工具,并可按调用或环境配置选择模型。

主要功能

  1. 01提供十种本地生成工具
  2. 02生成摘要、分类及标签
  3. 03处理代码片段和差异
  4. 04转换文本格式与语法
  5. 05用视觉模型分析截图
  6. 06列出或拉取 Ollama 模型

适用场景

  1. 01为暂存的差异生成提交说明
  2. 02为源代码生成文档字符串或测试桩
  3. 03总结长文本并按主题提取信息
  4. 04检查截图中的内容和可读性

MCP 相关

该 MCP 服务通过 stdio 连接 MCP 客户端与本机运行的 Ollama,并公开十种工具。客户端可调用工具进行本地生成、分析、转换和视觉任务。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"ollama": {
"command": "npx",
"args": [
"-y",
"@truealter/mcp-ollama"
]
}
}
}
启动命令npx -y @truealter/mcp-ollama

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@truealter/mcp-ollama0.2.1

工具

10

收录的工具列表 · 更新于 3 周前

参数类型必填说明
modelstring否要使用的 Ollama 模型(默认:hermes3:8b)
promptstring是提供给本地模型的提示词/任务
systemstring否用于设置上下文/角色的系统提示词(可选)
max_tokensnumber否要生成的最大令牌数(默认:2048)
temperaturenumber否采样温度,范围 0–2(默认:0.3)

详细介绍

README 配图

~alter mcp-ollama

把不该离开你设备的工作交给设备上已有的模型

~alter MCP Node 许可证

功能介绍 · 安装 · 工具 · 为何归于 ~alter

mcp-ollama 是什么?

这是一个 MCP 服务,会将工作交给同一台机器上的 Ollama,再把答案传回来。它通过 stdio 提供十种工具。客户端调用其中一种工具,Ollama 就会在你自己的 GPU 上生成内容,不会产生任何 API 账户费用。

大多数工作会话都由机械性任务组成:文档字符串、提交消息、PR 描述、变更日志条目、分类和标记、长文件摘要、格式转换,以及让小型视觉模型查看屏幕截图并报告屏幕上的内容。这些任务都不需要前沿模型,但大多还是会用上,因为你的客户端已经有可用于它的 API 密钥。

给它一个暂存的差异,它就会返回一条提交消息。给它一段源代码,你就能得到文档字符串、测试桩或一组类型注释。全部十种工具及其各自的输入都列在工具中。

由编排器决定哪些内容会被路由到这里。此服务不会判断哪些内容应该留在本地,也不会流式传输、排队或缓存。除运行时随机生成的进程标识符外,它不会在调用之间保留任何内容。

它依赖两样东西,但两者都不会随它一起提供。Node 18 或更高版本负责运行此服务;正在运行且至少已拉取一个模型的 Ollama 负责实际生成。本仓库不包含任何权重,安装时也不会下载权重。默认模型为 hermes3:8b,你可以按调用或环境覆盖该设置。

为何归于 ~alter

你已经决定,有些工作要留在本地。这就是为什么这台设备上有一个模型:只需拉取一次,就留在本地,而不是用一个 API 密钥从你永远看不到的数据中心完成同样的工作。~alter 也基于同样的决定,并将其指向另一样不断离开你设备的东西:关于你是谁的记录。

如今,这台设备上没有任何东西能很好地回答这个问题。你的账户只是登录屏幕上的一个密码和配置文件里的一个令牌,它们各自只检查某个时刻,之后便不再留意。那些真正能说明你是谁的多年工作,却存在于二者都看不到的地方。Agent 现在会在你的编辑器中以你的名义提交代码;日后有人问是谁授权的,却找不到任何书面记录来回答。

~alter 用一个句柄来回答这个问题:~yourname,其中之一,承载着一份根据你实际完成的工作构建的记录。使用该协议的客户端无需再次配置,就能获取它,就像此服务会获取你曾经拉取并留在磁盘上的模型一样。

你买了硬件,为的是不再按调用付费。在那份记录上,按调用收费的方向正好相反。任何人都可以免费核验你确实存在;想要了解更深层的信息,就由谁来付费,而你决定哪些读取者可以访问哪些层级。 这里不需要这些。mcp-ollama 无需登录,也不会询问你的用户名;无论你是否拥有用户名,它的行为都一样。两者之间只有一条细小的连接,值得明确说明。如果这台机器上恰好安装了 ~alter 运行时,那么每次本地生成都会在你自己的主目录中的一个文件里追加一行,记录这项工作在这里运行过,且没有产生 API 费用。这一行绝不会发送到任何地方;如果没有安装运行时,则根本不会写入任何内容。

我想了解更多

你的朋友不会通过登录来认识你。你的家人、同事和运动队的队友也不会。他们是通过你多年来的表现来认识你的。十年前的你可能和现在的你看起来、听起来都截然不同,但你仍然是你。

软件问的依然是个狭隘的问题。登录界面上的密码。应用里的令牌。每一个都只检查此时此刻、在这个确切位置上,来者是否是正确的人,然后就不再过问。它看不见其间的一切,而那几乎就是你生活的全部。AI 工具让情况更糟,因为现在有一个工具会用你的名义写东西,而当有人问是谁授权了它时,这台机器上却无处可寻答案。

一个名字,名下的记录归你所有。 ~yourname 可用于所有支持该协议的工具,因此无需重复设置,也不必在任何时候粘贴密钥。记录中的内容来自你做过的事,而不是你亲手输入框中的内容,也不是模型猜出来的内容。你可以用一条命令切断对其中任何内容的访问。无需填写表格,也无需审核。

被读取,你就能获得报酬。任何人都可以免费查询你的用户名是否存在。要在确认你存在这一事实之外继续读取,就需要付费;这笔钱会付给你,由你决定谁能读取什么。集体也能以相同的条件持有记录,因为无论规模如何,记录的形式都一样;同一种形式可以承载你、你的团队和你的国家。工会、俱乐部、行业组织,或一群素未谋面的人,都可以为自己的成员背书,也能像读取你的记录一样读取他们的记录。

线程是你前往目标的方式。线程是你正在努力实现的目标。你可以自行认领一个,~Alter 可以根据它已能看到的内容为你创建一个,或者由某个集体授予你一个。被读取的是你为此努力时留下的轨迹,而不是最后拿到的一张证书。

以上只是简要概述。完整论述分为八章,详见 truealter.com/origin。其中的七十六项预测都经过精心设计,数据可以反过来证明它们不成立。其中五项确实被推翻了,这五项至今仍和其余预测一起公开发布。

我想亲自核实

这些内容不需要你盲目相信。把下面的内容交给你常用的 AI,让它用你自己的话带你了解。

Go to truealter.com, find the genesis and the origin papers, and read all of
them. Then start a discussion with me in my own language, no jargon.

Ask me one question at a time and wait for my answer. Follow what I am curious
about, not the order the site is written in.

Do not only read the pages. Connect to their interface directly and call
get_started. That tells you where I am and what comes next, and we work the
rest of this from there.

If I have a ~handle I will give it to you. If I do not and I decide I want
one, set it up with me here.

What I want to understand is what ~Alter is, how it applies to me, and what it
means for everyone else. Find me somewhere in it, and not the version written
for people who work in technology. Find the life nearest mine and walk me
through it, including what it would cost me.

Try to prove them wrong. Go and find where they show their working, and if
something is unclear or does not hold up, say so.

~alter 命令行是人们接触 ~alter 的入口,而这里并不是。mcp-ollama 没有值得你敲入的专属命令,也绝不会要求你登录任何东西。它是由 MCP 客户端启动和停止的进程,恰好由同一批人维护。

安装

npm install -g @truealter/mcp-ollama

这会在你的 PATH 中安装一个命令:mcp-ollama,你的客户端会启动此进程。软件包已包含构建好的程序,因此无需编译,也不必预先安装工具链。发布前,CI 会使用 Node 18、20 和 22 构建,因此已知这些版本在运行时都能正常工作。

如果你完全不想安装任何内容,npx -y @truealter/mcp-ollama 会在首次使用时获取软件包并运行同一进程。下方的客户端配置使用的就是这种形式。

请输入带作用域的名称。公共注册表上的无作用域名称 mcp-ollama 属于无关的发布者,并非此软件包。

不会将任何内容安装为服务,也不会有任何程序在后台运行。客户端会在需要时启动此进程,并在用完后将其停止。

路由你的第一个任务

1. 拉取它默认调用的模型
ollama pull hermes3:8b

这是此服务在工具调用未指定模型时默认调用的模型。它速度快,在分类、标记和短文本生成方面表现可靠。处理代码时,使用更强大的模型很有价值;选择模型一节会介绍何时值得这么做。

2. 在客户端中注册服务
claude mcp add --transport stdio ollama -- npx -y @truealter/mcp-ollama

如果你已全局安装,使用 -- mcp-ollama 也同样可行,而且会跳过获取步骤。Cursor、Cline 以及其他支持 MCP 的客户端,其配置格式也都类似。客户端会启动此进程;除了调试时,你无需手动运行它。如果确实手动运行,它会等待 stdin 输入,这是正常行为,并非故障。

3. 询问客户端主机上有哪些内容
List the models on the local Ollama host.

你可以用任何喜欢的说法向客户端提出这个请求。它会调用 local_models,读取 Ollama 的标签列表,并报告每个模型的大小、参数数量、量化方式和系列。如果刚才拉取的模型出现在结果中,就说明整个通信链路都正常。

4. 提供一个 diff,并让它撰写提交消息
git diff --staged

将该输出交给客户端,并让它撰写提交消息。它会调用带有 commit-message 的 local_diff,提示模型使用祈使语气、将主题控制在 72 个字符以内,并在正文中说明原因,而非内容。此任务本就不需要前沿模型,现在也确实不再使用它了。

工具

工具功能
local_generate使用自定义系统提示词、温度和令牌上限进行自由生成
local_summarize将大量文本概括为项目符号列表、一段文字或一行内容,还可选择聚焦某个主题
local_analyze按指定的输出格式,从文本中提取结构、分类、实体或标签
local_draft根据你提供的规范撰写格式固定的文本
local_code对一段源代码执行 docstring、test、explain、review、types、comments 或 refactor-suggest
local_diff根据差异生成 commit-message、pr-description、changelog、summary 或 impact
local_transform执行机械式模式转换、格式转换、重命名和语法迁移
local_models查看这台 Ollama 主机上有哪些模型,以及它们的大小和量化信息
local_pull按名称将模型拉取到这台主机,仅支持未标记的名称
local_vision让视觉模型查看屏幕截图,并报告 see、emptystate 或 legibility

一共有 10 个工具,完整架构会通过 MCP 内省获取,因此任何支持 MCP 的 客户端都能自行枚举这些工具,无需额外说明。

其中两个工具接受 max_tokens 参数。local_generate 的默认值为 2048, local_summarize 的默认值为 1024。其余工具会在代码中自行设定上限: local_code 和 local_transform 为 4096,local_analyze 和大多数 local_diff 操作为 2048,提交消息为 512,local_draft 为 1024。如果其中 某个工具的输出被截断,请拆分输入,而不是去找一个并不存在的参数。只有 local_generate 提供温度设置。

local_vision 比较特殊,值得单独说明。它会读取像素并报告屏幕上的内容, 主内容区域显示的是真实数据还是错误、有哪些区域,以及哪些文字被截断或 无法辨认。它刻意不评判严重性,也不批准任何内容,因为小型视觉模型很擅长 读取渲染结果,却不擅长做出判断。请尽量使用接近全分辨率的图像,因为宽度 低于约 1280px 时,它就会开始臆造不存在的数据。

选择模型

变量默认值功能
OLLAMA_HOSThttp://localhost:11434Ollama 的监听地址。除非设置下方的开关,否则仅允许回环地址
OLLAMA_MODELhermes3:8b工具调用未指定模型时使用的模型
OLLAMA_VISION_MODELqwen2.5vl:7blocal_vision 调用未指定模型时使用的模型
MCP_OLLAMA_ALLOW_REMOTE未设置设置为 1,允许使用非回环地址的 OLLAMA_HOST

任何调用都可以指定自己的 model,只有未指定时才会使用环境默认值,因此无需 重新配置,就能让同一服务处理混合工作负载。

工作负载可尝试原因
分类、打标签、一句话概括hermes3:8b往返速度最快,常驻成本低
提交消息、变更日志、摘要qwen2.5-14b-instruct文笔更好,在 16GB 显卡上仍能轻松运行
代码审查、文档字符串、测试qwen2.5-coder:32b专用于代码,值得多占用一些 VRAM
查看渲染结果qwen2.5vl:7b默认视觉模型,体积也足够小,可以留在 GPU 上

在不熟悉的主机上开始会话时,先运行 local_models。

在 Docker 中运行

此项目未在任何地方发布镜像,因此以下每种方式都从构建此仓库开始。

docker build -t mcp-ollama .

Dockerfile 基于 node:20-alpine 构建,并已将 OLLAMA_HOST 设为 http://host.docker.internal:11434,因此容器会连接主机上的 Ollama,而不是 在容器内部寻找它。对于服务而言,该地址并非回环地址,因此回环地址限制会 拒绝连接,除非同时设置 MCP_OLLAMA_ALLOW_REMOTE=1,否则进程会在启动时退出。 镜像不会设置此变量,所以这里的每条命令都会设置它。

镜像还将 OLLAMA_MODEL 设为 hermes3:8b。添加 -e OLLAMA_MODEL=..., 即可改用其他默认模型。

Docker,适用于 macOS 和 Windows

docker run -i --rm -e MCP_OLLAMA_ALLOW_REMOTE=1 mcp-ollama

Docker,在 Linux 上

host.docker.internal 默认无法解析,因此需要将它映射到桥接网关。

docker run -i --rm \
  --add-host=host.docker.internal:host-gateway \
  -e MCP_OLLAMA_ALLOW_REMOTE=1 \
  mcp-ollama

Docker Compose

此仓库中附带了 docker-compose.yml,所以无需编写任何内容。文件中包含 extra_hosts 映射,因此同一个文件在 Linux 和 Docker Desktop 上都能使用。

此服务通过标准输入和标准输出使用 MCP,因此管道的另一端需要有客户端。docker compose up 启动服务时没有连接任何内容,于是它只会闲置。请使用 run,并添加 -T,这样 Compose 就不会干预管道。

docker compose run --rm -T mcp-ollama

将客户端指向它

MCP 客户端会自行启动服务,因此应将完整命令交给它,而不是交给一个已经运行的容器。

{
  "mcpServers": {
    "ollama": {
      "command": "docker",
      "args": ["compose", "-f", "/path/to/docker-compose.yml", "run", "--rm", "-T", "mcp-ollama"]
    }
  }
}
遇到问题时

工具调用时出现 Ollama error 404

尚未拉取该模型。在 Shell 中运行 ollama pull <name>。local_pull 仅处理未标记的名称,因为它的验证器会拒绝标记中的冒号,例如 hermes3:8b 中的冒号。

出现 fetch failed 或连接被拒绝

Ollama 未运行,或者 OLLAMA_HOST 指向了错误的位置。使用 curl $OLLAMA_HOST/api/tags 检查。在容器内,localhost 指的是容器本身。

出现 OLLAMA_HOST must be loopback,且进程立即退出

这是防护机制在正常工作。将它指回 localhost,或者如果你确实要连接远程主机,则设置 MCP_OLLAMA_ALLOW_REMOTE=1。

调用速度很慢

冷启动的模型需要先加载,同一个 Ollama 进程之后的所有调用都会快得多。如果模型大于你的 VRAM 容量,Ollama 就会转而使用 CPU;运行 ollama ps 即可查看。

视觉调用占用大量内存或运行缓慢

local_vision 会将上下文限制为 8192,并有意让模型驻留 30 分钟。32K 上下文加上一张图像,在 7900 级别的显卡上会占用超过 23GB,并转而使用 CPU;这就是设置此上限的原因。

输出提前停止

请参阅工具部分中的令牌上限。大多数工具不接受 max_tokens。

此服务在你的计算机上会做什么、不会做什么

除了连接到配置的 OLLAMA_HOST,它不会发起任何网络请求;默认情况下,该主机必须是 localhost、127.0.0.1 或 ::1。如果指定了非环回地址,程序会在启动时直接报错,而不会悄悄将你的提示词发送到别处;只有明确设置 MCP_OLLAMA_ALLOW_REMOTE=1 才能绕过此限制。如果你有意将它指向远程 Ollama,该端点的安全状态就由你负责。

没有遥测、分析、自动更新检查,软件包中也不包含模型权重。工具输入会按原样发送到 Ollama 的 HTTP API,响应则直接返回。传递给 local_pull 的模型名称在到达注册表端点之前,会根据 ^[a-z0-9][a-z0-9._/-]{0,127}$ 进行验证,因此调用者提供的字符串无法偏离这一路径。

有一处本地写入值得注意。如果 ~/.local/share/alter-runtime/lib/substrate-emit.sh 存在,每次生成都会向 ~/.local/share/alter-runtime/token-burn.jsonl 追加一行,记录工具、模型和令牌数量。此操作会以即发即弃的方式执行,失败时不报错,不会触及工具结果;如果未安装该辅助程序,则不会写入任何内容。

如需报告安全问题,请参阅 SECURITY.md。

底层协议

这些记录格式属于开放的 Internet 草案,因此其他人的实现无需征求我们的许可,也能读取和写入与本实现相同的记录。以下是规定这些格式的草案。此服务本身并不实现这些格式,而是与实现它们的组件协同运行。

草案规定内容
compute-location-gate协商身份推断的计算位置,并根据信号的来源类别决定;协商在运行任何推断之前进行。
mcp-dns-discovery发布 ~handle 的 DNS 记录、负责响应它的服务,以及与其绑定的签名信封。

整个技术栈由 18 份草案构成。其余草案见 IETF datatracker。

其余部分

一条身份通道,多种接入方式。

名称介绍
@truealter/cli命令行,也是个人用户的入口。
homebrew-tap打包后供 macOS 和 Linux 使用的命令行。
runtime在你自己的机器上让 ~handle 始终可用的守护进程。
@truealter/sdk在你自己的代码中读取身份信息。
obsidian在设备本地的 Obsidian 库中使用 ~Alter。
mcp-ollama用于必须留在运行机器上的工作的本地模型。你现在就在这里。

文档见 truealter.com/docs。

欢迎提交错误报告和小型补丁,详见 CONTRIBUTING.md。提交报告时,最好附上你调用的工具、调用它的客户端、路由到的模型、完整错误信息,以及 Node 和 Ollama 版本。如果要进行较大的设计变更,请先提出议题,以便在你投入时间之前商定范围。

mcp-ollama 保持精简,并会一直如此。将工作路由到本地 Ollama 进程,就是它的全部职责。

Apache 2.0。完整文本见 LICENSE。版权所有 2026 Alter Meridian Pty Ltd(ABN 54 696 662 049)。


~alter 是身份基础设施。你的名字是 ~yourname,免费即可认领。

网站  ·  文档  ·  分八章阐述的论点  ·  开放规范  ·  所有代码库

评论

支持 Markdown

第一次接触 MCP?

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

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