Codync
免费开源的 1:1 Grok Bot 与 Muse 替代方案。可在 iPhone、Mac 或 Linux 桌面上将 Claude 代码、Codex、Cursor 以及 40 多个编码代理作为持久机器人使用。支持群组聊天、线程、应用。
AI 翻译
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证OAuth login for Trilium Notes' built-in MCP server: connect any MCP client by URL and sign in with your Trilium password, which never leaves your server
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗An OAuth front for the MCP server that Trilium Notes 0.106+ has built in
at /mcp. On its own, Trilium's MCP server takes an ETAPI token in the Authorization header, so
every client needs a token created under Options → ETAPI and pasted into its configuration.
The proxy is a convenience on top: you add its URL to any MCP client (claude.ai, Claude Code, the Claude desktop and mobile apps, …) and log in once with your Trilium password. No token to create, paste or rotate.
/etapi/auth/login; the proxy never stores or logs it. The MCP client (claude.ai included) never
sees it, only opaque OAuth tokens that work nowhere but your proxy./mcp request goes unchanged to Trilium, with only Authorization swapped
for that client's ETAPI token. Responses stream back as they arrive. The tools are exactly Trilium's
own, so new ones from a Trilium update appear without a proxy release.MCP_INSTRUCTIONS set, the proxy adds your standing instructions to Trilium's
initialize answer, which every client reads at connect. That's the only rewrite.Bearer, and it's forwarded as is.The login comes from mcp-login-oauth. It replaces trilium-mcp, an ETAPI-based MCP server that is archived now that Trilium has its own.
Full documentation: trilium-mcp-proxy.marceltov.de
Enable Trilium's MCP server first: Options → AI / LLM → MCP server. Then add the proxy next to Trilium:
services:
trilium:
image: triliumnext/trilium:v0.106.1
# ...
trilium-mcp-proxy:
image: ghcr.io/marceltov/trilium-mcp-proxy:latest # or pin a version
restart: unless-stopped
environment:
TRILIUM_SERVER_URL: http://trilium:8080
MCP_BASE_URL: https://trilium-mcp-proxy.example.org # the public URL, behind your TLS proxy
MCP_OAUTH_SECRET: ${MCP_OAUTH_SECRET} # openssl rand -hex 32
MCP_INSTRUCTIONS: |
Optional standing instructions every client sees at connect.
volumes:
- mcp-proxy-oauth:/data
ports:
- "8081:8081"
volumes:
mcp-proxy-oauth:
Put it behind a TLS reverse proxy at MCP_BASE_URL. GET /health answers
{"status": "ok", "trilium": "ok" | "unreachable"}.
| Variable | Default | Meaning |
|---|---|---|
TRILIUM_SERVER_URL | required | Trilium Notes as the proxy reaches it, e.g. http://trilium:8080 |
MCP_BASE_URL | required | Public URL of the proxy; also the OAuth issuer (https, or http only for localhost) |
MCP_OAUTH_SECRET | required | Encrypts the stored logins in /data; changing it logs every client out |
MCP_INSTRUCTIONS | unset | Added to Trilium's initialize result as instructions |
MCP_PORT | 8081 |
https://<your proxy>/mcp. claude.ai opens the proxy's login page; enter your Trilium password.claude mcp add --transport http trilium https://<your proxy>/mcp -H "Authorization: Bearer <token>" -s user.
With a token, Claude Code can also talk to Trilium's /mcp directly. The proxy only adds the house
rules then.Each OAuth login creates its own ETAPI token, which shows up in Trilium under Options → ETAPI. Deleting it there cuts that client off. Revoking the login from the client deletes it too.
uv sync
uv run pytest -q --ignore=tests/live # unit tests, against a fake Trilium
./run-tests.sh -q # unit + live, against a disposable Trilium 0.106.1 (Docker)
Copyright © 2026 Marcel Bruckner.
Licensed under the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later). You may use, modify, and redistribute it, but any modified version — including one you run as a network service — must be released under the same license with its source made available to its users, and the original copyright notice preserved. See LICENSE for the full terms.