
Samuraizer
io.github.UladzKha由 GitHub 账号 UladzKha 发布v0.1.7更新于 Oct 24, 2026
Local MCP server for meeting transcripts, summaries, action items & decisions — no cloud.
概览
本地 MCP 服务器,让助手搜索、读取并处理 Samuraizer 会议录音的转写、摘要、行动项和决议,无需上云。
- 可以做什么
- 搜索、列出并获取已处理的会议,包括完整转写、摘要、行动项和决议,并以会议 ID 提供资源供支持资源面板的客户端使用。对音频文件运行完整流水线,产出摘要、行动项、决议和输出文件路径。将音频规范化为 16 kHz 单声道 WAV,并用 whisper.cpp 转写。对转写文本生成摘要,或从中提取行动项与决议。
- 适用场景
- 适合在本地保存由 Samuraizer 处理过的会议录音,并希望助手查找历史会议、调取转写,或把新录音整理成摘要、行动项和决议的场景。仅查询模式不需要音频或大模型工具链。
- 运行要求
- 以本地 npm 包形式通过 stdio 运行。需要安装并初始化 Samuraizer CLI 以生成配置文件,且 meetingsDir 指向已处理的会议目录;可用 SAMURAIZER_MEETINGS_DIR 覆盖。处理模式还需要 whisper-cli、ffmpeg、ffprobe,以及已拉取模型的 Ollama 服务。
安装
在 SourceWeft 中
- 打开 控制台中的 Samuraizer,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
@samuraizer/mcp-server
Local-first MCP server that gives AI agents access to your meeting recordings — transcripts, summaries, action items, and decisions — without sending anything to the cloud.
Model Context Protocol server for Samuraizer — exposes processed meetings to AI agents (Claude Desktop, Claude Code, MCP Inspector, etc.) over stdio.
Tools at a glance
normalize_audio— Normalize an audio file to 16kHz mono PCM WAV format required by Whisper.transcribe_audio— Transcribe an audio file using whisper.cpp. Returns the transcript text.summarize_transcript— Generate a concise meeting summary from transcript text.extract_action_items— Extract action items from a meeting transcript. Returns a JSON list of tasks with owner and due date.extract_decisions— Extract confirmed decisions from a meeting transcript. Returns a JSON list of decisions.process_recording— Run the full Samuraizer pipeline on an audio file. Returns summary, action items, decisions, and output file paths.search_meetings— Search meetings by summary text, name, action items, and decisions. Transcripts are not searched — useget_meetingfor those. Returns ranked results with snippets.list_meetings— List all processed meetings, sorted newest first. Optionally limit results.get_meeting— Retrieve the full processed output for a specific meeting by id.meeting://{id}(resource) — A single processed meeting, accessible by its ULID.
Full input and output details for each tool are in Tools below.
The server provides two modes:
- Query mode — list and retrieve previously processed meetings as structured data or as MCP resources. Read-only, no LLM or audio dependencies needed at runtime.
- Process mode — run the full Samuraizer pipeline (normalize → transcribe → summarize → extract action items / decisions) on an audio file. Requires the same local toolchain as
samuraizeritself:whisper-cli,ffmpeg,ffprobe, and a running Ollama instance.
Everything stays local. The server reads meetings from a directory on your machine and never sends data to any external service.
Prerequisites
This package depends on @samuraizer/cli for its config and pipeline. Before using the MCP server, install and initialize the CLI:
Edit the generated config (path printed by samuraizer config path) and make sure meetingsDir points to the directory where your processed meetings live. The MCP server reads from that same directory.
For process mode, you additionally need the Samuraizer runtime dependencies installed and configured: whisper-cli from whisper.cpp, ffmpeg / ffprobe, and a running Ollama server with a pulled model. See the main Samuraizer README for setup details.
For query mode only (list_meetings, get_meeting, meeting:// resources), none of the runtime dependencies are required — just a populated meetingsDir.
Installation
This exposes a samuraizer-mcp binary on your PATH.
Usage
Run the server directly
The server speaks MCP over stdio. It is not meant to be used interactively from a shell — it is intended to be launched by an MCP client such as Claude Desktop or MCP Inspector.
Inspect with MCP Inspector
Opens a browser UI where you can list tools and resources, call them with arguments, and see responses. Useful for debugging.
Connect from Claude Desktop
Add the server to your Claude Desktop configuration file:
- macOS / Linux:
~/Library/Application Support/Claude/claude_desktop_config.json(macOS) or~/.config/Claude/claude_desktop_config.json(Linux) - Windows:
%APPDATA%\Claude\claude_desktop_config.json
If samuraizer-mcp is not found by Claude Desktop (PATH issues are common with version managers like fnm, nvm, or volta), use an absolute path instead. Find it with which samuraizer-mcp, then:
You can also override the meetings directory per-server via environment variables:
Restart Claude Desktop after editing the config.
Connect from Claude Code
See the Claude Code MCP documentation for managing MCP servers from the CLI.
Configuration
The MCP server reads the same config file as @samuraizer/cli. There is no separate config for the server itself.
Environment variable overrides
All config fields accept env-var overrides, useful for running the server in different contexts (e.g. one MCP server per project):
Env vars override values from the config file. Booleans accept 1/0, true/false, yes/no, or on/off.
llmConcurrency defaults to 1, so process_recording runs summary, action-item, and decision extraction sequentially on all hardware. Values 2 and 3 explicitly opt into parallel Ollama requests and require enough spare VRAM for additional KV-cache slots.
Tools
Query mode
search_meetings
Search processed meetings by summary text, meeting name, action items, and decisions.
Transcripts are deliberately not searched — they are one to two orders of magnitude larger than the fields above, and scanning them on every query would not scale. Use get_meeting when you need the transcript.
Input:
query(string, required) — search query, case-insensitive. See Query syntax.limit(integer, optional) — maximum results to return (default 10).
Returns: JSON array of ranked results, each with id, name, generated_at, duration_sec, score, matched_in (any of summary, name, action_items, decisions), and a snippet around the best match. Results are ranked by how many fields matched — a summary hit weighs more than a name, action-item, or decision hit — with ties broken by recency. Useful for finding a specific meeting without enumerating all of them.
Query syntax
The query is split into words, and a meeting matches only when every word is found. The words do not have to share a field, so patient id post log matches a meeting whose summary mentions the patient ID and whose action items mention the post log.
Each word matches as a substring, so export finds exporter.
Wrap the query in double quotes to require an exact phrase instead:
A meeting containing the whole query verbatim scores above one that merely scatters the same words, so exact matches still surface first.
list_meetings
List processed meetings, sorted newest first.
Input:
limit(integer, optional) — maximum number of results to return.
Returns: JSON array of meeting summaries (id, name, generated_at, summary_preview, participant_count, duration_sec).
get_meeting
Retrieve the full processed output for a specific meeting.
Input:
id(string, required) — the meeting ID (ULID).
Returns: the full meeting JSON, including transcript, summary, action items, decisions, and provenance metadata. Returns an error if the meeting is not found.
Process mode
These tools run parts of the Samuraizer pipeline on demand. They have local runtime dependencies (whisper-cli, ffmpeg, Ollama).
process_recording
Run the full pipeline on an audio file. Recommended entrypoint for processing recordings via an agent.
Input:
filePath(string, required) — absolute path to the audio file.model(string, optional) — Ollama model to use; falls back to the configured default.
Returns: JSON with summary, action items, decisions, and output file paths.
normalize_audio
Normalize an audio file to 16 kHz mono PCM WAV (the format Whisper expects).
Input: inputPath, outputPath (both required absolute paths).
transcribe_audio
Transcribe an audio file with whisper.cpp.
Input: filePath (required absolute path).
summarize_transcript
Generate a meeting summary from transcript text.
Input: transcriptText (required), model (optional).
extract_action_items
Extract action items from a transcript.
Input: transcriptText (required), model (optional).
extract_decisions
Extract confirmed decisions from a transcript.
Input: transcriptText (required), model (optional).
Resources
The server exposes each processed meeting as an MCP resource:
- URI scheme:
meeting://{id} - MIME type:
application/json - Content: the full meeting JSON, identical to what
get_meetingreturns.
Listing resources returns one entry per meeting in meetingsDir. Reading a resource returns its full content. Resources are particularly useful for clients that surface them in their UI (e.g. Claude Desktop's resource picker).
Meeting output format
All meeting JSON conforms to the open Samuraizer meeting-output schema, which describes meeting structure, transcript segments, summaries, action items, decisions, and provenance metadata.
The schema and its specification live in the memnex-spec package:
- JSON Schema (Draft 2020-12):
spec/meeting-output.schema.json - Human-readable specification:
spec/SPEC.md - Examples:
spec/examples/
Troubleshooting
Error: The config file is not created, please run 'samuraizer init'
The MCP server uses the same config as the CLI. Install @samuraizer/cli and run samuraizer init first.
Server starts but list_meetings returns an empty array
Either meetingsDir is empty, or all meeting.json files in it failed schema validation. The server logs structured warnings to stderr for each invalid meeting it skips — check the terminal where the MCP server is running (or the Claude Desktop logs at ~/Library/Logs/Claude/mcp-server-samuraizer.log on macOS).
EACCES when launching the server
After running npm run build from source, the executable bit on dist/index.js may need to be set. The package's postbuild script handles this automatically when installing from npm. If you cloned the repo, make sure chmod +x dist/index.js ran.
Claude Desktop says the server is not connected
Common causes:
samuraizer-mcpis not on the PATH that Claude Desktop sees. Use an absolute path.- The config file is invalid JSON. Validate it with
jq . < claude_desktop_config.json. - The server is crashing on startup due to a missing config file or invalid config — check the Claude Desktop MCP logs.
License
MIT — see LICENSE.
Source
github.com/UladzKha/samuraizer-cli (monorepo)
来源:packages/mcp-server/README.md,提交 427c61f
工具
0版本历史
1- v0.1.7最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分