migas-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@migas-mcpsearch transcripts for roadmap discussion"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
migas-mcp
MCP server for Migas meeting transcripts. Query your local meeting data from Claude Desktop, Claude Code, Cursor, or any MCP-compatible AI assistant.
What it does
Migas transcribes your meetings locally on your Mac. This MCP server gives AI assistants read-only access to that data so you can ask questions like:
"What did we discuss about the roadmap last week?"
"What has Sarah said about the budget across all meetings?"
"Show me the transcript from yesterday's standup"
Related MCP server: gilbert-mcp
Tools
Tool | Description |
| Recent meetings with title, date, duration, participants |
| Full speaker-labeled transcript for a meeting |
| Full-text search across all meeting transcripts |
| Look up enrolled speakers by name |
| Everything a speaker said across all meetings |
Install
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"migas": {
"command": "npx",
"args": ["-y", "migas-mcp"]
}
}
}Claude Code
claude mcp add migas -- npx -y migas-mcpCursor
Add to MCP settings:
{
"mcpServers": {
"migas": {
"command": "npx",
"args": ["-y", "migas-mcp"]
}
}
}Requirements
Migas installed and launched at least once (creates the local database)
macOS (reads from
~/Library/Application Support/Migas/meetings.db)
Privacy
The MCP server is read-only and connects to your local Migas database. No meeting data is sent anywhere by the server itself. When you ask an AI assistant a question, only the relevant transcript text is sent to the AI provider, same as using Migas's built-in chat.
Development
bun install
bun test
bun run buildAvailable Tools
5 toolsfind_speakersA
Look up enrolled speakers by name. Returns candidates with IDs for use with get_speaker_contributions. Only returns speakers with stable cross-meeting identities (not transient per-meeting guests).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Speaker name to search for (fuzzy match) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the key behavioral trait of returning only stable identities and that it returns 'candidates' (multiple possible), but it does not describe what happens on no match, whether results are ordered, or any other side effects. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the primary purpose, and every sentence adds value: the first gives the action and target, the second explains the output's intended use and a critical constraint. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup tool with no output schema, the description is sufficiently complete: it explains the purpose, the return value (candidate IDs), and the limitation to stable identities. It could mention possible multi-result behavior more explicitly, but 'candidates' already implies that. Overall, it covers the essential context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% because the only parameter, 'name', is already described as 'Speaker name to search for (fuzzy match).' The tool description adds no further semantic value beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Look up enrolled speakers by name.' It clearly distinguishes itself from sibling tools by stating it returns candidate IDs for use with get_speaker_contributions and emphasizes stable cross-meeting identities, which separates it from transient guest lookups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you need speaker IDs for get_speaker_contributions) and provides a clear exclusion criterion: only returns stable cross-meeting identities, not transient per-meeting guests. It does not explicitly mention alternatives like search_transcripts, but the context is strong enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_meeting_transcriptA
Get the full transcript for a specific meeting with speaker labels and timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
| meeting_id | Yes | The meeting ID (use list_meetings to find IDs) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the burden of behavioral disclosure. It indicates the output includes speaker labels and timestamps, which is useful. However, it does not explicitly state that the operation is read-only, nor does it describe error behavior (e.g., invalid meeting_id) or permission requirements. The 'get' verb implies read, but more explicit disclosure would be better.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no extraneous text. It front-loads the main action ('Get the full transcript') and specifies key output details, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no annotations, the description is fairly complete: it states what is returned (full transcript with speaker labels/timestamps) and the target resource. It does not explicitly contrast with overlapping sibling tools, but the schema provides context for finding IDs. Given the absence of an output schema, the description adequately communicates the return value, though it could mention failure cases or prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 100% of the parameter (meeting_id) with a helpful description pointing to list_meetings. The tool description does not add any additional parameter semantics, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the full transcript for a specific meeting, with speaker labels and timestamps. This distinguishes it from siblings like search_transcripts (searching partial content) and get_speaker_contributions (per-speaker breakdown), making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for fetching a complete transcript when a meeting_id is known, but it does not explicitly mention when to use it over alternatives. The schema hint ('use list_meetings to find IDs') provides some guidance, yet the description itself lacks direct comparison to siblings like search_transcripts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_speaker_contributionsA
Get everything a specific enrolled speaker said across all meetings. Use find_speakers first to get the speaker ID.
| Name | Required | Description | Default |
|---|---|---|---|
| speaker_id | Yes | The speaker ID (use find_speakers to find IDs) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It adds meaningful scope ('across all meetings') and dependency (need to obtain speaker ID via find_speakers), which are behavioral traits beyond the name. While it doesn't mention return format or safety, the read-only nature is implied by 'Get' and the context is sufficient for a simple tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the core purpose, followed by a clear prerequisite. Every word earns its place with no redundancy or superfluous detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, no output schema, and no annotations, the description is sufficiently complete. It explains what is returned ('everything... said'), how to get the required input, and the scope. Could mention output ordering or pagination, but these are not critical for a straightforward getter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with the parameter description already stating to use find_speakers. The tool description repeats this guidance, reinforcing it but adding no new semantic information beyond what the schema provides. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves all contributions from a specific enrolled speaker across all meetings. It uses a specific verb ('Get') and resource ('everything a specific enrolled speaker said'), and distinguishes itself from siblings like get_meeting_transcript by emphasizing 'across all meetings.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to 'Use find_speakers first to get the speaker ID,' providing a clear prerequisite and directing the user to the appropriate sister tool. It also implies when to use this tool instead of alternatives (when needing cross-meeting speaker aggregation).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_meetingsA
List recent meetings with title, date, duration, and participant names.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of meetings to return (default 20, max 100) | |
| since_date | No | Only return meetings started on or after this ISO 8601 date (e.g. 2026-03-01) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. 'List' implies a read-only operation, and the listed fields outline the return content. However, it does not disclose ordering, what 'recent' means, or pagination behavior beyond what the schema's limit parameter implies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no extraneous words. It efficiently communicates the primary action and output fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with two well-documented parameters, the description is adequate but leaves gaps: no mention of sort order, default limit, or interpretation of 'recent'. Since there is no output schema, some additional context about the return structure or ordering would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters (limit and since_date) with descriptions, default and max values, and format examples. The tool description adds no parameter information beyond the schema, so the baseline of 3 is appropriate for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the resource ('meetings'), and specifies the returned fields (title, date, duration, participant names). This distinguishes it from sibling tools focused on transcripts, speakers, or contributions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for retrieving meeting lists, but does not explicitly mention when to use this over alternatives or any exclusions. Sibling tools are clearly different in purpose, but no direct guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_transcriptsA
Search across all meeting transcripts using full-text search. Returns matching segments with meeting context and speaker attribution.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results (default 50) | |
| query | Yes | Search query (supports multiple terms, prefix matching on last term) | |
| meeting_id | No | Optional: limit search to a specific meeting |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the core behavior (full-text search, returns segments with meeting context and speaker attribution) but omits details like whether results are ordered, any performance implications, or auth requirements. It is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary action and scope, then a brief statement of return payload. Zero waste and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives enough context for a straightforward search tool: what it searches, what it returns. With no output schema or annotations, it could elaborate on result ordering or pagination, but the schema's limit parameter and the sibling set make the intended use reasonably clear. It is complete enough for common usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage, so the description need not explain parameters in depth. It does mention the search behavior and return context, which aligns with the query parameter. The description adds no extra meaning beyond the schema, but the schema already documents the parameters well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: full-text search across all meeting transcripts. It uses the specific verb 'Search' and names the resource ('meeting transcripts'), which distinguishes it from siblings like get_meeting_transcript (which retrieves a specific transcript) and find_speakers (which searches for speakers).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: searching across all transcripts when you need to find matching segments with speaker context. It doesn't explicitly name alternatives or state when not to use it, but the scope ('across all meeting transcripts') is clear enough to differentiate it from sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0- First observed
find_speakers - First observed
get_meeting_transcript - First observed
get_speaker_contributions - First observed
list_meetings - First observed
search_transcripts
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose: listing meetings, retrieving a transcript, searching transcripts, finding speakers, and aggregating speaker contributions. There is no functional overlap or ambiguity between tools.
All tool names follow the same verb_noun pattern in snake_case (e.g., list_meetings, get_meeting_transcript, search_transcripts), which makes the naming scheme predictable and consistent across the entire set.
Five tools is a well-scoped count for a meeting transcription and speaker analytics server. Each tool covers a distinct functional area without redundancy or excessive granularity.
The server provides complete coverage of its core domain: browsing meetings, reading transcripts, full-text search, and per-speaker contribution analysis. There are no obvious gaps or dead ends in the workflow.
Maintenance
Related MCP Connectors
- RecordXOAuthio.recordx
Read-only access to your RecordX meetings: search transcripts, summaries, action items.
Search and read your recorded meetings: notes, action items, participants, transcripts.
Search meetings, export summaries and transcripts, and manage recordings from any AI tool.
Search, read and export MeetNotes meeting transcripts, minutes and action items (getmeetnotes.com).
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceProvides read-only access to Google Drive meeting transcripts and Google Calendar events, enabling AI assistants to search, analyze, and retrieve meeting insights.69 npm3MIT
- AlicenseAqualityDmaintenanceRead-only access to your Gilbert meetings, transcripts and summaries over MCP — list, search, and fetch transcripts and summaries.554 npm1MIT
- AlicenseAqualityBmaintenanceProvides read-only access to finished meeting transcripts for AI assistants like Claude Code or Codex, enabling them to answer questions or draft summaries based on the transcriptions.43Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables MCP-capable agents to browse, search, and retrieve Meetily meeting transcripts and summaries on demand through read-only tools.MIT