Samuraizer

io.github.UladzKha由 GitHub 帳號 UladzKha 發布v0.1.7更新於 Oct 24, 2026

Local MCP server for meeting transcripts, summaries, action items & decisions — no cloud.

概覽

AI 產生的概覽

本機 MCP 伺服器,讓助理搜尋、讀取並處理 Samuraizer 會議錄音的逐字稿、摘要、待辦事項與決議,不需上雲。

可以做什麼
搜尋、列出並取得已處理的會議,包含完整逐字稿、摘要、待辦事項與決議,並以會議 ID 提供資源給支援資源面板的用戶端。對音訊檔執行完整流程,產出摘要、待辦事項、決議與輸出檔路徑。將音訊正規化為 16 kHz 單聲道 WAV,並以 whisper.cpp 轉錄。對逐字稿文字產生摘要,或從中擷取待辦事項與決議。
適用情境
適合在本機保存由 Samuraizer 處理過的會議錄音,並希望助理查找過往會議、調出逐字稿,或把新錄音整理成摘要、待辦事項與決議的情境。僅查詢模式不需要音訊或大型模型工具鏈。
執行需求
以本機 npm 套件形式透過 stdio 執行。需要安裝並初始化 Samuraizer CLI 以產生設定檔,且 meetingsDir 指向已處理的會議目錄;可用 SAMURAIZER_MEETINGS_DIR 覆寫。處理模式另需 whisper-cli、ffmpeg、ffprobe,以及已拉取模型的 Ollama 服務。
安裝前請注意
處理模式會在本機執行轉錄與大型模型擷取,可能較慢且占用較多資源;llmConcurrency 大於 1 會啟用平行 Ollama 請求,需要足夠的顯示記憶體餘量。伺服器會讀取所設定目錄中的會議資料,請只指向你願意暴露的資料夾。不使用任何雲端服務。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Samuraizer,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

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 — use get_meeting for 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 samuraizer itself: 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:

bash
npm install -g @samuraizer/clisamuraizer init

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

bash
npm install -g @samuraizer/mcp-server

This exposes a samuraizer-mcp binary on your PATH.

Usage

Run the server directly

bash
samuraizer-mcp

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

bash
npx @modelcontextprotocol/inspector samuraizer-mcp

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
json
{  "mcpServers": {    "samuraizer": {      "command": "samuraizer-mcp"    }  }}

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:

json
{  "mcpServers": {    "samuraizer": {      "command": "/absolute/path/to/samuraizer-mcp"    }  }}

You can also override the meetings directory per-server via environment variables:

json
{  "mcpServers": {    "samuraizer-personal": {      "command": "samuraizer-mcp",      "env": {        "SAMURAIZER_MEETINGS_DIR": "/Users/me/personal-meetings"      }    },    "samuraizer-work": {      "command": "samuraizer-mcp",      "env": {        "SAMURAIZER_MEETINGS_DIR": "/Users/me/work-meetings"      }    }  }}

Restart Claude Desktop after editing the config.

Connect from Claude Code

bash
claude mcp add samuraizer samuraizer-mcp

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):

VariableMaps to
SAMURAIZER_MEETINGS_DIRmeetingsDir
SAMURAIZER_MODELmodel
SAMURAIZER_OLLAMA_BASE_URLollamaBaseUrl
SAMURAIZER_WHISPER_COMMANDwhisperCommand
SAMURAIZER_WHISPER_MODEL_PATHwhisperModelPath
SAMURAIZER_WHISPER_DEVICEwhisperDevice
SAMURAIZER_WHISPER_PROMPTwhisperPrompt
SAMURAIZER_WHISPER_CARRY_INITIAL_PROMPTwhisperCarryInitialPrompt
SAMURAIZER_LANGUAGElanguage
SAMURAIZER_FFMPEG_COMMANDffmpegCommand
SAMURAIZER_FFPROBE_COMMANDffprobeCommand
SAMURAIZER_LLM_CONCURRENCYllmConcurrency

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:

patient id post log      → all four words, anywhere in the searched fields"patient id post log"    → that exact run of characters, in one field

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_meeting returns.

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:

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-mcp is 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
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.7最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分