Oxynote

MCP办公协作

提供方 未标注

办公协作 stdio · 本地进程 未标注 社区 / 第三方 ClaudeCursorVS CodeCodex
查看接入方式

自托管团队文档,支持实时Prometheus图表。提供24个MCP工具,用于搜索、阅读、编写和重构文档,以及查询指标。

一句话选型结论

按资料字段整理

Oxynote 属于办公协作类 MCP 服务器,stdio · 本地进程,鉴权方式未标注,可直接接入 Claude、Cursor、VS Code 等,有可直接执行的安装命令。接入前先确认权限范围;涉及写入、删除或付款的操作,建议先在测试环境验证。

分类办公协作 传输方式stdio · 本地进程 鉴权未标注 部署方式本地部署
GitHub 星标 未标注 仓库热度,无公开仓库时显示未标注
工具数 未标注 暴露给模型的工具数量
资源 / 提示词 0 / 0 资源与提示词模板数量
维护方 社区 / 第三方 核验等级 仅资料核对

工具与能力

办公协作
数量来自来源目录的标注,具体工具清单以官方文档为准
工具数量未标注暴露给模型可调用的工具个数
资源数量0可读取的资源条目
提示词数量0内置提示词模板数量

能力标签

支持客户端

适用场景

生产力

安装与配置

stdio · 本地进程 未标注
客户端在本机拉起子进程,数据不出本机
docker run -d --name oxynote \ -p 8080:8080 \ -v oxynote_data:/oxynote/data \ ghcr.io/oxynote/oxynote:latest

这条命令只是入口,具体启动参数请按官方文档补齐,不要直接照搬到别的服务器。

  1. 1
    准备运行环境

    stdio 服务在本地起进程,需要先装好 Node.js 等运行时,再按安装命令拉取依赖。

  2. 2
    安装服务

    复制上面的安装命令执行;命令里带占位符的位置,换成自己的密钥或路径。

  3. 3
    写入客户端配置

    在客户端的 MCP 配置里填好启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4
    验证是否可用

    连接成功后随便调一个只读工具,确认能返回结果,再接入正式流程。

典型使用场景

3 类
按分类与标签整理的常见用法,具体以官方文档为准
日程与消息

查日程、发消息、约会议。

表单与审批

填表单、走审批流。

团队协作

同步任务、汇总进展。

选择建议

选之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 已适配 Claude、Cursor、VS Code,换客户端不用重新研究配置。

先想清楚的地方

  • stdio 方式要求本地装好运行时(如 Node.js),换机器要重新装一遍。
  • 资料没标注工具数量,实际能力要装好后确认。
  • 版本更新与行为细节以官方仓库为准。

更适合

  • 需要在办公协作场景里让模型直接调用外部能力的人。
  • 已经在用 Claude、Cursor 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地或自有环境跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
MCP 服务器工具数传输方式部署方式安装命令最后核验
Oxynote当前 未标注 stdio · 本地进程 本地部署 有 未标注
CowAgent 未标注 stdio · 本地进程 本地部署 有 2026-04-11
Karakeep MCP 未标注 未标注 未标注 无 2026-05-17
agentscope 未标注 stdio · 本地进程 本地部署 有 2026-04-11
note-gen 未标注 stdio · 本地进程 本地部署 有 2026-04-11
Everywhere 未标注 stdio · 本地进程 本地部署 有 2026-04-12

服务器档案

办公协作
字段来自项目仓库与公开索引,中文说明由本站标注
提供方未标注上游标注的维护方 未标注
分类办公协作本站按上游分类展示
连接方式stdio · 本地进程客户端在本机拉起子进程,数据不出本机
鉴权方式未标注远程服务建议用最小权限凭据
维护方社区 / 第三方核验等级 仅资料核对
包名 / 运行时未标注 · 未标注本地安装时用到的包标识与运行时
部署类型本地部署上游给出的部署形态
最近核验未标注上游最后核验时间

详细介绍

11.0 KB
来自项目仓库与上游目录的原文,未做删改

Oxynote

Your system, with subtitles.

A self-hosted workspace that puts live metric charts inside the pages that
explain them. The charts run your Prometheus and SQL queries, and a change
to a page goes through a draft, a diff and an approval, like a pull
request. From the authors of
ttlcache.

Why Oxynote Exists

Keeping a service running takes several tools. You read about it in a wiki
such as Notion and watch its metric charts in Grafana or Datadog, while the
commands that fix it sit in a terminal history or a chat thread. When
something breaks, you connect all of that by hand, across tools with
separate logins and separate histories.

Oxynote is a new kind of tool because it puts the explanation and the live
metric charts on one page. Each chart runs its own Prometheus or SQL query,
and one draft carries a change to the chart and its text through the same
review.

The goal is to watch and run the service from that same page. Its uptime
monitor, its logs, a view into its database and its admin actions would sit
next to the explanation, and changes to them would go through the same
review. All of them are in development.

The long version is a bit of a rant, but it explains the personal why

For a long time, the most reliable documentation at my company was the
Slack chat I had with myself. How it got that way starts with
metric charts. We had a lot of them: Grafana, Sentry, for some reason a bit
of Datadog, and a few custom self-hosted HTML pages with charts on them.
On top of that, I was encouraged to run my own health checks for the
deployments I owned (why that could not live in Grafana or anything like
it, nobody could tell me). Those deployments were services pulling
financial market data over websockets. Under heavy volume they leaked
memory and got OOM killed. There was a bug in there somewhere that we
were chasing and could not find for a while, and in the meantime every
kill meant missed events, and missed events meant running backfill
scripts by hand. None of those charts showed any of that. So: cron, curl
against each service's status endpoint, and the result posted to me
privately on Slack. Not convenient at all.

Then there was everything else. Internal wikis still describing
deployment procedures for trial products that had ended. Secret vaults.
Server management commands and curl requests. None of it lived in one
place, and access was its own problem: each of these had a different
owner who could grant it, so a lot of my time went into finding out who
that was and then finding them. Since we talked on Slack, that is where
I asked for all of it, and that is where people answered, sometimes with
plain credentials (the horror). To not lose any of it, I forwarded those
messages to the chat with myself, which is how that chat became my
source of truth for a long time: links to the specific Grafana
dashboards that mattered out of the many we had, example curl requests
against other teams' services so I could match their responses when
integrating (neither the requests nor the responses were documented
anywhere), and server IPs with notes on what was deployed where.

Naturally, I did try to fix it. I wrote Notion docs and linked the
Grafana charts from them, and for a while that was fine. Then they
drifted apart. One doc explained the labels on our ingestion-rate chart,
market, region and so on, but new labels kept being added, nobody
documented them, half were not even used in the chart, and each one cost
Prometheus another time series. Keeping a doc and a chart in sync meant
links on both sides, in Notion and in Grafana, which was more work than
I wanted, plus switching browser tabs just to check that the explanation
and the chart still meant the same thing. And that was only
observability. Beyond it, admin actions were specific curl requests, and
feature flags lived in a service disconnected from everything else. All
of it deserved a proper review flow, like on GitHub, with diffs that work
for text, metric charts and other visual structures. Instead it had
none.

David (@davseby), who started Oxynote with me
(@swithek), was the one who had to work
through a system and its documents the first time he was on call, at a
different company. He had years of Grafana and internal docs behind him and
expected it to be routine. What he got was Datadog, which he had never used,
and a wildly different Notion structure. Then, on that first shift, the
services that enrich image metadata failed. Search over user uploads turned
inaccurate, and from there it cascaded through the product. Monitors fired,
but none of them linked anywhere or said which service had started failing,
which made for a nerve-racking night of tying things together by hand. The
metric showing one service overloaded and unresponsive existed the whole
time. Datadog's UI is convoluted, though, and nothing explained what any
chart tracked, so David never found it. An AI agent connected to Datadog's
MCP server did.

What both of us wanted was the metric chart, the explanation, the command
and the flag on one page, edited together, reviewed like a pull request,
and readable by a tired person at night or by an agent. Each tool we had
was great at one of those things and paid little attention to the others.
So Oxynote starts with the pieces we needed most: pages people edit
together, live metric charts, reviews and Stripe-style API docs. Uptime
monitors, AI evals, a database viewer and admin actions are in
development.

Quick Start

Oxynote is one container. Start it with Docker:sh docker run -d -p 8080:8080 \ -v oxynote_data:/oxynote/data \ ghcr.io/oxynote/oxynote

Open http://localhost:8080 and sign in as admin@example.com with the
password oxynote-admin-1234. The login page shows both until you change
the password, so change it in the settings before anyone else can reach the
instance.

docker/prod/README.md covers the configuration,
from a real domain to an external PostgreSQL. To run from source, see
CONTRIBUTING.md.

Features

Oxynote keeps the pages about your systems, such as architecture notes, API
references, on-call steps and release checklists, in one page tree. Those
pages can query Prometheus, PostgreSQL, MySQL or MariaDB, so the live
metrics sit right where you write about them.

Live Metric Charts

A Live Metrics block draws a time series, a bar chart or a gauge from one
or more PromQL or SQL queries, and the editor redraws it as you type.
Thresholds and units sit next to the query. Grafana macros such as
$__rate_interval and $__timeFilter work too, so a query you already
use in Grafana usually moves over with a paste.

No metric yet? Pick a pattern such as latency or error rate, and the chart
draws simulated data until the real series arrives. SQL sources need a
read-only database user, so a page can never change your data.

Variables

Variables are defined once for the whole workspace, and any query on any
page can read them. $metric_range comes built in: set it to the last six
hours, and each chart that uses it shows the last six hours from then on.
The values you pick apply only to you, so they change your charts and
nobody else's.

Blocks

Type / for the block menu: headings, lists, checklists, code, callouts,
images, files, Figma embeds, Mermaid diagrams, Stripe-style API docs and
live metrics. Markdown shortcuts such as ## work as you type. Two go
further: %% adds a live metric chart, and · starts an API doc with the
fields on one side and an example request on the other.

Search

⌘K searches the whole workspace, down to a single line in a code block or
a diagram's source. Results come grouped by page, and each one says what it
matched, such as a Bash snippet or a time series chart. Typos are fine too.

Reviews

Make a page reviewable, and its main branch stops taking direct edits.
Changes go into a draft branch instead. The diff works on blocks, so a
renamed API parameter and a moved chart threshold show up in red and green
right where they sit.

Reviewers approve the draft on the page itself. Merging is a separate step,
so an approved draft can wait until the change it describes goes live.

Collaboration

Everyone on a page shows up as a named cursor, along with the block they're
holding, and edits from several people merge as they type. Comments attach
to a single word or a whole block. New comments and replies land in your
inbox, and one click there opens the block they're on.

Agents and MCP

Oxynote is designed for people first, and agents get an interface of their
own. Claude Code, Codex and many other MCP clients connect once you approve
them. They read each page as structured blocks and change only the blocks
they need. Their edits appear live, and on a reviewable page they wait in a
draft until a person approves them.

Rubber Duck, the built-in assistant, does the same inside the app. It runs
on a model from Anthropic, OpenAI, Google or OpenRouter, or a local one
through Ollama. Both stay optional: the assistant is off until you set it
up, as docs/ai.md describes, and the rest of Oxynote works
without either.

Simple on Purpose

Oxynote has few settings, on purpose. Each job has one way to get done,
with defaults that already fit, so there is less to learn. The rest of the
design follows from a few fixed choices:

  • Protected pages change only through approved drafts, so each change
    carries a diff and the name of whoever approved it.
  • Only people you invite can open your workspace, and an AI agent gets in
    only after you approve it.
  • A page can depend on things outside Oxynote, such as a config file in
    your repository, the container image you deploy or a vendor's API docs.
    An optional freshness hook watches each one, and when it changes, the
    page's maintainers get a reminder to update the parts that rely on it.
  • The code is Apache-2.0 licensed and developed in public.
  • Oxynote runs as one container on your own servers, so your data and your
    upgrade schedule stay with you.

In Development

The goal is one place to explain, watch and run your systems. Uptime
monitors, AI evals, a database viewer and admin actions are in development,
along with logs, traces and alerting.

FAQ

Can it replace Grafana or Datadog? That is the goal. Metric charts are
covered today: Oxynote runs your Prometheus and SQL queries, Grafana's
macros included, inside pages you can write around and review like a pull
request. Logs, traces and alerting are in development.

Is there a cloud version? Not yet. A cloud version is planned, and
today Oxynote runs as one container on your own servers.

Do I need AI to use it? No. The assistant stays off until you set it
up, and the MCP server is optional too.

Is it worth using by myself? Yes. A workspace works fine with one
person, and when you do invite others, a self-hosted install has no member
limit.

Why the name? In the beginning, Oxynote was called "breathing docs".
Breathing needs oxygen, so "oxy" became the prefix and "note" followed.

Community

Ask questions on Discord, where the people
building Oxynote answer them. For a bug or an idea,
open an issue. To report a
vulnerability, follow SECURITY.md.

常见问题

8 问
答案由本站依据条目字段整理,不引用上游原文
Oxynote 怎么安装?

在客户端按下面的安装命令接入:docker run -d --name oxynote \ -p 8080:8080 \ -v oxynote_data:/oxynote/data \ ghcr.io/oxynote/oxynote:latest。装完在客户端配置里引用同一个包或端点。

Oxynote 怎么在 Claude、Cursor、VS Code 里配置?

它的传输方式是stdio · 本地进程,在客户端的 MCP 配置里填好启动命令和参数,保存后完全退出客户端再打开,配置才会生效。

Oxynote 收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Oxynote 需要 API Key 吗?

资料没有标注鉴权方式,是否需要密钥取决于服务本身,接入前按官方文档确认。

Oxynote 支持哪些客户端?

资料标注支持 Claude、Cursor、VS Code、Codex、Zed;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

Oxynote 能提供哪些能力?

资料显示能力标签包括 生产力。具体工具清单以官方文档为准。

Oxynote 需要什么运行环境?

属于本地进程,需要在本机装好运行环境。

Oxynote 是本地还是远程?

它是本地进程(stdio),由客户端在本机拉起。传输方式为stdio · 本地进程。

热门专题

按标签挑服务器
全部专题 →

服务器信息以作者仓库与官方文档为准;分类、传输方式与鉴权方式的中文说明为中文整理,最近核验 未标注。