Skip to main content
Glama

Teleprompter

An MCP server that manages and exposes tools to allow prompt re-use with LLMs.


Table of Contents


Related MCP server: PromptLab MCP Server

Features

  • Prompt Storage & Reuse: Store, search, and retrieve prompt templates for LLMs.

  • MCP Server: Exposes prompt tools via the Model Context Protocol (MCP).

  • Prompt Variables: Supports template variables (e.g., {{name}}) for dynamic prompt generation.

  • Search: Fast full-text search over stored prompts using MiniSearch.

  • TypeScript: Modern, type-safe codebase.

  • Extensive Testing: Includes unit and integration tests with Vitest.

MCP Configuration

To use Teleprompter with your LLM client, add this configuration:

{
  "mcpServers": {
    "teleprompter": {
      "command": "npx",
      "args": ["-y", "mcp-teleprompter"],
      "env": {
        "PROMPT_STORAGE_PATH": "/path/to/your/prompts-directory"
      }
    }
  }
}

Note: Replace /path/to/your/prompts-directory with the absolute path where you want prompts stored.


Usage Examples

Once configured, you can use Teleprompter with your LLM by using prompt tags in your conversations. Here's a detailed example that shows how it solves the problem of repeating complex instructions:

🎡 Music Discovery on Spotify

The Problem: Every time you want music recommendations, you have to remind your LLM of all your preferences and constraints:

  • "Don't suggest songs I already have in my playlists"

  • "Avoid explicit lyrics"

  • "Add songs to my queue for review, not directly to playlists"

  • "Focus on discovering new artists, not just popular hits"

  • "Consider my current activity and mood"

  • "Provide brief explanations for why each song fits"

The Solution: Create a prompt that captures all these instructions once.

Creating the prompt: Ask your LLM: "Create a prompt called 'spotify-discover' that helps me find new music with all my specific preferences and workflow requirements."

This creates a comprehensive template like:

I'm looking for music recommendations for Spotify based on:

**Current mood:** {{mood}}
**Activity/setting:** {{activity}}
**Preferred genres:** {{genres}}
**Recent artists I've enjoyed:** {{recent_artists}}

**Important constraints:**
- DO NOT suggest songs I already have in my existing playlists
- Avoid explicit lyrics (clean versions only)
- Focus on discovering new/lesser-known artists, not just popular hits
- Provide 5-7 song recommendations maximum

**Workflow:**
- Add recommendations to my Spotify queue (not directly to playlists)
- I'll review and save the ones I like to appropriate playlists later

**For each recommendation, include:**
- Artist and song name
- Brief explanation (1-2 sentences) of why it fits my current mood/activity
- Similar artists I might also enjoy

Please help me discover music that matches this vibe while following these preferences.

Using it:

>> spotify-discover

Now you just fill in your current mood and activity, and get perfectly tailored recommendations that follow all your rulesβ€”no need to repeat your constraints every time.

πŸ”„ Other Common Use Cases

πŸ“‹ Work Ticket Management

  • Create prompts for JIRA/Linear ticket formatting with your team's specific requirements

  • Include standard fields, priority levels, acceptance criteria templates

  • Avoid repeating your company's ticket standards every time

πŸ“§ Email Templates

  • Customer support responses with your company's tone and required disclaimers

  • Follow-up sequences that match your communication style

  • Automated inclusion of signatures, links, and standard information

πŸ“ Code Review Guidelines

  • Technical review checklists with your team's specific standards

  • Security considerations and performance criteria

  • Documentation requirements and testing expectations

The common thread: stop repeating yourself. If you find yourself giving the same detailed instructions to your LLM repeatedly, create a prompt for it.

πŸ” Discovering Existing Prompts

You can search your prompt library:

Can you search my prompts for "productivity" or "task management"?

Or list all available prompts:

What prompts do I have available?

✏️ Manual Editing

Prompts are stored as simple markdown files in your PROMPT_STORAGE_PATH directory. You can also create and edit them directly with your favorite text editor:

  • Each prompt is saved as {id}.md in your prompts directory

  • Use {{variable_name}} syntax for template variables

  • Standard markdown formatting is supported

  • File changes are automatically picked up by the server

πŸ’‘ Best Practices

  1. Use descriptive IDs: Choose prompt IDs that clearly indicate their purpose (e.g., meeting-notes, code-review-checklist)

  2. Include helpful variables: Use {{variable_name}} for dynamic content that changes each time you use the prompt

  3. Organize by category: Consider using prefixes like task-, content-, analysis- to group related prompts

Testing

Run all tests:

npm test

Run tests with coverage:

npm run test:coverage

Tests are written with Vitest. Coverage reports are generated in the coverage/ directory.


Contributing

Contributions are welcome! Please:

  • Follow the existing code style (see .prettierrc.json and .eslintrc.mjs).

  • Add tests for new features or bug fixes.


License

This project is licensed under the MIT License. See LICENSE for details.


Acknowledgements


Made with ❀️ by John Anderson

Available Tools

4 tools
createPromptA

Create a new Teleprompter prompt. Wrap template variables in double curly braces. For example, "Hello, {{name}}!"

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID, or "tag" for the new prompt. This will be used by the user later on to apply prompt usage with an LLM they are chatting with. For example, ">> new-journal-entry". IDs must be suitable for use as a file name.
contentsYesThe contents of the prompt, with variables placeholders marked with double curly braces. For example, "Hello, {{name}}!"

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It communicates that the tool creates a prompt (a mutation), but it does not disclose potential side effects such as overwriting an existing ID, validation rules, or required permissions. The curly braces rule is more about input formatting than behavioral side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, and includes a constructive example. Every word earns its place; there is no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with two well-documented parameters, but it is a creation tool, and the description does not mention return values, error behavior, or idempotency. With no output schema and sibling tools, a bit more detail about what happens after creation would enhance completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both id and contents thoroughly described, including the exact curly-braces rule and example. The description repeats these details without adding new meaning beyond the schema, so it stays at the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action and resource: 'Create a new Teleprompter prompt.' This is a specific verb+resource pairing that immediately distinguishes it from sibling tools like usePrompt, searchPrompts, and listPrompts. The added example with curly braces further clarifies the tool's purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for creating prompts via the verb 'create' and the template variable guidance, but it does not explicitly state when to use this tool over alternatives. No exclusions or alternative references are provided, leaving usage context to be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listPromptsA

List all available Teleprompter prompts. Returns a list of all prompt IDs and their content.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that the tool returns all prompt IDs and their content, which is useful, but does not mention potential behaviors like read-only safety, pagination, or any limitations. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the primary purpose. The second sentence clarifies return content. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and no output schema, the description sufficiently explains what it returns and its scope. It could include more context about sorting or use cases, but for a simple list operation, it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, so the schema provides complete coverage. The description adds no parameter-specific details, which is unnecessary. According to the rubric, a baseline of 4 applies for 0 params, and the description does not need to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's verb (List) and resource (all available Teleprompter prompts), and specifies the return includes prompt IDs and content. This distinguishes it from siblings like searchPrompts (which would imply filtering) and createPrompt/usePrompt.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving all prompts but does not explicitly contrast with searchPrompts or state when to prefer this over alternatives. The phrase 'all available' hints at scope, but no explicit when/when-not guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

searchPromptsA

Fuzzy search the available Teleprompter prompts by text. Returns a list of matching prompt IDs and their content, so the user can discover prompts even if they do not know the exact tag or ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default: 5, max: 20).
queryYesThe text to search for among available prompts.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. It states that fuzzy search returns a list of matching prompt IDs and their content, implying a read-only operation. It adds useful context about fuzzy matching and output contents, though it does not explicitly declare safety (e.g., read-only) or address auth/rate limits, which are less critical for a search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the main action, and every sentence adds value. It is concise without being under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool, the description covers the essential aspects: purpose, return values (list of IDs and content), and discovery context. With no output schema, it adequately describes the result. It does not mention sorting or empty-result behavior, but these are not critical for a basic search.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; both 'query' and 'limit' have clear descriptions in the schema. The tool description adds no additional parameter-level semantics beyond what the schema already 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Fuzzy search the available Teleprompter prompts by text.' It specifically identifies the resource (Teleprompter prompts) and the action (fuzzy search), and distinguishes itself from siblings like listPrompts by emphasizing fuzzy text discovery rather than listing all prompts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: 'so the user can discover prompts even if they do not know the exact tag or ID.' This implies it is for discovery when exact identifiers are unknown, but it does not explicitly name alternatives like 'use listPrompts for complete listing' or 'use usePrompt for exact ID lookup.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usePromptA

If the user has sent a message containing a prompt tag, use the this tool to fetch the prompt, and follow its instructions. For example, if the user sends ">> new-journal-entry", this tool will fetch the prompt with the ID "new-journal-entry", so you can use it to generate a new journal entry. Template variables may be included in the template, and are marked with double curly braces. For example, "Hello, {{name}}!". Based on your current session with the end user, fill in values for these variables. If a value cannot be determined, ask the user for it, then follow the instructions in the prompt.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the prompt to use.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries that burden. It explains the process of fetching, following, variable substitution, and asking for missing values. However, it doesn't describe the return format or error behavior when the prompt ID doesn't exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately concise, with a few sentences covering purpose, example, and variable handling. The grammar error is minor, and no sentence is superfluous.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter and no output schema, the description provides adequate context for invocation: when to use, how to fill variables, and what to do if values are missing. It could mention what the tool returns, but it's not critical for execution.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes the 'id' parameter minimally, but the description adds valuable context: how the ID corresponds to a prompt tag in user messages, and how template variables in the prompt are populated from session context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches a prompt and follows its instructions, with a concrete example ('>> new-journal-entry' maps to id 'new-journal-entry'). This distinguishes it from sibling tools like createPrompt and searchPrompts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit trigger condition ('If the user has sent a message containing a prompt tag') and demonstrates usage with an example. It does not explicitly name alternatives or exclusions, but the trigger is sufficient for selecting this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.9/5.0
Disambiguation4/5

Mostly distinct purposes: createPrompt writes, usePrompt fetches and executes, searchPrompts and listPrompts both read but differ in scope (fuzzy search vs. full list). The descriptions clarify the distinction between search and list, so confusion is unlikely.

Naming Consistency4/5

All tool names follow a verb + noun pattern with camelCase, but there is a minor inconsistency: createPrompt and usePrompt use singular 'Prompt' while searchPrompts and listPrompts use plural 'Prompts'. This is a minor deviation but still readable.

Tool Count5/5

Four tools is well-scoped for a prompt management and usage server. Each tool serves a clear, necessary function (create, use, search, list) without redundancy or bloat.

Completeness3/5

The core create/read/use operations are covered, but update and delete are missing. This is a notable gap for managing a prompt library, as prompts cannot be edited or removed after creation, potentially causing stale or incorrect prompts to persist.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables creation, management, and templating of prompts through a simplified SOLID architecture, allowing users to organize prompts by category and fill in templates at runtime.
    62
    117
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Allows users to save, organize, and manage AI prompts, folders, and tags directly within MCP-compatible tools like Claude and Cursor. It supports version history tracking, prompt searching, and the ability to save public templates to a personal collection.
    20
    23
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables users to organize, search, and manage a shared library of prompts across AI tools via the Model Context Protocol. It supports hierarchical folder organization, tagging, and template variable substitution for dynamic prompt generation.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/raisinbread/teleprompter'

If you have feedback or need assistance with the MCP directory API, please join our Discord server