Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
제작자가 쓴 설명(영어 원문)
Local MCP server for meeting transcripts, summaries, action items & decisions — no cloud.
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
SAMURAIZER_MEETINGS_DIR필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"samuraizer": {
"command": "npx",
"args": [
"-y",
"@samuraizer/mcp-server"
],
"env": {
"SAMURAIZER_MEETINGS_DIR": "your-value"
}
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add samuraizer --env SAMURAIZER_MEETINGS_DIR=your-value -- npx -y @samuraizer/mcp-server실행하기 전에 빈 값을 채워 주세요.
프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"samuraizer": {
"command": "npx",
"args": [
"-y",
"@samuraizer/mcp-server"
],
"env": {
"SAMURAIZER_MEETINGS_DIR": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"samuraizer": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@samuraizer/mcp-server"
],
"env": {
"SAMURAIZER_MEETINGS_DIR": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
SAMURAIZER_MEETINGS_DIR env이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검
레지스트리 이름이 GitHub 계정 UladzKha 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.1.7)은 2개월 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, SwarmMemo
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Talk with agent swarms: rooms, private messages and paid tasks for AI agents
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
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.
get_meeting for those. Returns ranked results with snippets.Full input and output details for each tool are in Tools below.
The server provides two modes:
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.
This package depends on @samuraizer/cli for its config and pipeline. Before using the MCP server, install and initialize the CLI:
npm install -g @samuraizer/cli
samuraizer 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.
npm install -g @samuraizer/mcp-server
This exposes a samuraizer-mcp binary on your PATH.
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.
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.
Add the server to your Claude Desktop configuration file:
~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or ~/.config/Claude/claude_desktop_config.json (Linux)%APPDATA%\Claude\claude_desktop_config.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:
{
"mcpServers": { "samuraizer": { "command": "/absolute/path/to/samuraizer-mcp" } } }
You can also override the meetings directory per-server via environment variables:
{
"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.
claude mcp add samuraizer samuraizer-mcp
See the Claude Code MCP documentation for managing MCP servers from the CLI.
The MCP server reads the same config file as @samuraizer/cli. There is no separate config for the server itself.
All config fields accept env-var overrides, useful for running the server in different contexts (e.g. one MCP server per project):
| Variable | Maps to |
|---|---|
SAMURAIZER_MEETINGS_DIR | meetingsDir |
SAMURAIZER_MODEL | model |
SAMURAIZER_OLLAMA_BASE_URL | ollamaBaseUrl |
SAMURAIZER_WHISPER_COMMAND | whisperCommand |
SAMURAIZER_WHISPER_MODEL_PATH | whisperModelPath |
SAMURAIZER_WHISPER_DEVICE | whisperDevice |
SAMURAIZER_WHISPER_PROMPT | whisperPrompt |
SAMURAIZER_WHISPER_CARRY_INITIAL_PROMPT | whisperCarryInitialPrompt |
SAMURAIZER_LANGUAGE | language |
SAMURAIZER_FFMPEG_COMMAND | ffmpegCommand |
SAMURAIZER_FFPROBE_COMMAND | ffprobeCommand |
SAMURAIZER_LLM_CONCURRENCY | llmConcurrency |
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.
search_meetingsSearch 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.
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_meetingsList 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_meetingRetrieve 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.
These tools run parts of the Samuraizer pipeline on demand. They have local runtime dependencies (whisper-cli, ffmpeg, Ollama).
process_recordingRun 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_audioNormalize an audio file to 16 kHz mono PCM WAV (the format Whisper expects).
Input: inputPath, outputPath (both required absolute paths).
transcribe_audioTranscribe an audio file with whisper.cpp.
Input: filePath (required absolute path).
summarize_transcriptGenerate a meeting summary from transcript text.
Input: transcriptText (required), model (optional).
extract_action_itemsExtract action items from a transcript.
Input: transcriptText (required), model (optional).
extract_decisionsExtract confirmed decisions from a transcript.
Input: transcriptText (required), model (optional).
The server exposes each processed meeting as an MCP resource:
meeting://{id}application/jsonget_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).
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:
spec/meeting-output.schema.jsonspec/SPEC.mdspec/examples/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.
list_meetings returns an empty arrayEither 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-serv
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요