Transcript MCP spike
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., "@Transcript MCP spikesearch transcripts for discussions about the new pricing model"
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.
Transcript MCP spike
A small Model Context Protocol server that lets an LLM inspect and search mock
transcripts stored in data/transcripts.json.
Requirements
Node.js 18 or newer
npm
Related MCP server: AskElephant MCP
Transports
This server supports two transports:
stdio — the MCP client spawns the process (default)
Streamable HTTP — you run the server and point the client at
http://127.0.0.1:3000/mcp
HTTP (localhost)
Start the server:
npm run mcp:httpOr with auto-reload while editing TypeScript:
npm run dev:httpThen configure the client with a URL:
{
"mcpServers": {
"transcripts": {
"url": "http://127.0.0.1:3000/mcp"
}
}
}Optional env vars:
PORT— listen port (default3000)MCP_TRANSPORT=http— same as passing--http
Inspector:
npx @modelcontextprotocol/inspector http://127.0.0.1:3000/mcpstdio (spawned by the client)
No separate server process. Point the client at the TypeScript source:
{
"mcpServers": {
"transcripts": {
"command": "npx",
"args": [
"tsx",
"/absolute/path/to/mcp-spike/src/server.ts"
]
}
}
}Or use the compiled build after npm run build:
{
"mcpServers": {
"transcripts": {
"command": "node",
"args": ["/absolute/path/to/mcp-spike/dist/server.js"]
}
}
}MCP capabilities
Resource:
transcripts://allreturns the complete JSON dataset.
Tools:
list_transcriptslists metadata and supports participant and tag filters.get_transcriptreturns a full transcript by ID.search_transcriptssearches titles, participants, tags, speakers, and spoken text.
Edits to data/transcripts.json are picked up on the next tool/resource call.
Invalid data is rejected using a Zod schema.
Available Tools
3 toolsget_transcriptGet transcriptARead-only
Get one complete transcript by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Transcript ID, for example transcript-001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, indicating a safe read operation. The description adds the detail that it returns a 'complete' transcript, but does not disclose other behavioral aspects such as error handling or return format. This is useful but not extensive.
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 redundant information. It is front-loaded and efficiently communicates the core purpose.
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 get-by-ID tool, the description is largely sufficient given the annotation and full parameter schema. However, the absence of an output schema means the description could have elaborated on what 'complete transcript' includes, leaving slight ambiguity about the return structure.
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 the 'id' parameter completely with a description and example. The description does not add additional meaning beyond what the schema already provides, so a 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 'Get one complete transcript by its ID' uses a specific verb and resource, clearly indicating a single-resource retrieval operation. It distinguishes itself from sibling tools list_transcripts and search_transcripts by focusing on a specific ID-based fetch.
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 usage when you have a transcript ID, but it does not explicitly state when to use this tool versus alternatives like search_transcripts or list_transcripts. No exclusions or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_transcriptsList transcriptsARead-only
List transcript metadata. Optionally filter by participant or tag.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Exact tag, matched case-insensitively | |
| limit | No | ||
| participant | No | Participant name, matched case-insensitively |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true annotation, the safety profile is already covered. The description adds that the tool returns metadata (not full content) and supports filtering, which is useful. However, it does not disclose behaviors such as pagination, ordering, or how the limit parameter behaves beyond the schema. No contradiction with annotations.
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 that conveys the core purpose and filtering capability without unnecessary words. It is well-structured 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 read-only list operation, the description is adequate: it indicates the return type (metadata) and filter options. It does not detail pagination or the exact shape of returned metadata, but given the simple nature and lack of output schema, the description provides sufficient context for use.
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 67% (tag and participant have descriptions, limit lacks one). The description reinforces the role of tag and participant as filters but does not mention limit. It adds a high-level framing but does not significantly enhance the schema's own parameter descriptions.
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 resource ('transcript metadata'), distinguishing it from siblings: get_transcript likely retrieves a single full transcript, and search_transcripts implies broader search. The optional filter phrase adds specificity without ambiguity.
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 usage for browsing metadata with optional filters, but it does not explicitly state when to prefer this over search_transcripts or get_transcript, nor does it provide exclusions or alternative recommendations. The sibling names offer context, but the description itself lacks direct usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_transcriptsSearch transcriptsARead-only
Search titles, participants, tags, speakers, and spoken transcript text.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Case-insensitive text to search for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint=true, so the tool's safety profile is already known. The description adds value by clarifying the scope of search (titles, participants, tags, speakers, spoken text). However, it does not disclose result format, ordering, or pagination behavior, leaving some behavioral aspects unexplained.
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 that directly states the tool's purpose and searchable fields. No wasted words, and the important information is front-loaded.
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 tool is relatively simple with two parameters and a read-only annotation, but there is no output schema. The description does not mention what the search returns (e.g., matching transcript IDs, snippets), which leaves some ambiguity for an agent. For a search tool, clarifying the output would make it more complete.
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 covers query with a case-insensitive description and limit with numeric constraints. The description adds semantic meaning to query by specifying the fields it applies to, but says nothing about limit's behavior. With schema description coverage at 50%, the description partially compensates but does not fully clarify both parameters.
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: 'Search titles, participants, tags, speakers, and spoken transcript text.' It uses a specific verb (search) and resource (transcripts), and enumerates the searchable fields, which distinguishes it from sibling tools like list_transcripts and get_transcript.
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 usage for finding transcripts through search but does not explicitly state when to use this tool versus siblings or provide exclusions or alternative guidance. The verb 'Search' gives context, but no detailed usage instructions are provided.
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.
3 tool updates
v1.0.0- First observed
get_transcript - First observed
list_transcripts - First observed
search_transcripts
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: listing metadata, retrieving a single transcript by ID, and searching across transcript content. No overlap or ambiguity.
All tool names follow a consistent verb_noun pattern (list_transcripts, get_transcript, search_transcripts), with minor singular/plural variation that does not undermine the pattern.
Three tools is a well-scoped set for a transcript retrieval service, covering the essential read operations without unnecessary bloat.
The read side is well covered (list, get, search), but write operations like create, update, or delete are absent. For a 'spike' server, this is a minor gap.
Maintenance
Related MCP Connectors
YouTube transcripts, search, channel browsing, and playlists for AI agents via MCP.
Memoket — access your recording transcripts, summaries, and key takeaways over MCP.
MCP server for RiverScript, an AI transcription platform - fetches transcripts shared via a link.
An MCP server that provides tools to discover and retrieve podcast episodes transcripts.
Related MCP Servers
- AlicenseAqualityDmaintenanceRead-only access to your Gilbert meetings, transcripts and summaries over MCP — list, search, and fetch transcripts and summaries.554 npm1MIT
- FlicenseNot gradedqualityBmaintenanceHosted MCP server that lets staff search and retrieve AskElephant call transcripts from claude.ai, with tools for listing meetings, searching transcript excerpts, and fetching full transcripts.-
- AlicenseNot gradedqualityBmaintenanceEnables MCP-capable agents to browse, search, and retrieve Meetily meeting transcripts and summaries on demand through read-only tools.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to submit and manage durable long-form audio transcription jobs, and read or export structured transcripts via MCP tools.1MIT