Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
NGMCP_GUIDE_DIRSYesColon-separated list of directories to search for .ng files
NGMCP_ALLOW_ABSOLUTE_PATHSNoAllow tools to open .ng files by absolute pathfalse

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_guide_infoA

Return metadata for a Norton Guide database file.

Args: path: Absolute path to the .ng file.

Returns: A dictionary with the following keys:

- ``path`` (str): Resolved path to the guide.
- ``title`` (str): Guide title.
- ``credits`` (list[str]): Up to five credit lines.
- ``magic`` (str): Two-character magic marker (``"NG"`` or ``"EH"``).
- ``made_with`` (str): Tool used to build the guide.
- ``menu_count`` (int): Number of menus in the guide.
- ``file_size`` (int): File size in bytes.
- ``is_valid`` (bool): Whether the file is a recognised Norton Guide.

Raises: FileNotFoundError: If path does not point to an existing file.

list_menusA

Return the menu structure of a Norton Guide database file.

Each menu in the guide is returned as a dictionary describing its title, the list of prompt strings, and the guide offsets associated with each prompt.

Args: path: Absolute path to the .ng file.

Returns: A list of menu dictionaries. Each dictionary contains:

- ``title`` (str): The menu title.
- ``prompts`` (list[str]): The menu prompt strings.
- ``offsets`` (list[int]): The guide offset for each prompt.

Raises: FileNotFoundError: If path does not point to an existing file.

list_entriesA

List all entries in a Norton Guide database file.

Args: path: Absolute path to the .ng file.

Returns: A list of entry summary dictionaries. Each dictionary contains:

- ``offset`` (int): Byte offset of the entry within the guide.
- ``type`` (str): Entry type — ``"short"`` or ``"long"``.
- ``line_count`` (int): Number of lines in the entry.
- ``first_line`` (str): Plain-text content of the first line, or an
  empty string if the entry contains no lines.

Raises: FileNotFoundError: If path does not point to an existing file.

read_entryA

Return the full plain-text content of the entry at a given offset.

Args: path: Absolute path to the .ng file. offset: Byte offset of the entry within the guide, as returned by list_entries or list_menus.

Returns: A dictionary containing:

- ``offset`` (int): The entry's offset.
- ``type`` (str): ``"short"`` or ``"long"``.
- ``lines`` (list[str]): Plain-text lines of the entry.
- ``see_also`` (list[dict]): For long entries only — each item has
  ``text`` (str) and ``offset`` (int) keys.  Empty list for short
  entries.

Raises: FileNotFoundError: If path does not point to an existing file. ValueError: If the offset does not point to a valid entry.

read_entry_sourceA

Return the raw source lines of the entry at a given offset.

Args: path: Absolute path to the .ng file. offset: Byte offset of the entry within the guide, as returned by list_entries or list_menus.

Returns: A dictionary containing:

- ``offset`` (int): The entry's offset.
- ``type`` (str): ``"short"`` or ``"long"``.
- ``lines`` (list[str]): Raw source lines of the entry, as strings.
- ``see_also`` (list[dict]): For long entries only — each item has
  ``text`` (str) and ``offset`` (int) keys.  Empty list for short
  entries.
follow_linkA

Follow a link in a short entry and return the target long entry.

Short entries in a Norton Guide are index-style pages where each line links to a long entry. This tool loads the short entry at offset, reads the link on line, and returns the plain-text content of the target long entry.

Args: path: Absolute path to the .ng file. offset: Byte offset of the short entry within the guide. line: Zero-based line index within the short entry whose link to follow.

Returns: A dictionary containing:

- ``source_offset`` (int): Offset of the short (source) entry.
- ``source_line`` (int): Line index that was followed.
- ``link_text`` (str): The text of the link line.
- ``target_offset`` (int): Offset of the target long entry.
- ``lines`` (list[str]): Plain-text lines of the target long entry.
- ``see_also`` (list[dict]): See-also items of the target entry, each
  with ``text`` and ``offset`` keys.

Raises: FileNotFoundError: If path does not point to an existing file. ValueError: If the offset does not point to a short entry, if line is out of range, or if the link has no associated target offset.

line_search_guideA

Search all entries in a Norton Guide for lines matching a query string.

The search is performed on plain text (markup stripped) and returns all entries that contain at least one matching line.

Args: path: Absolute path to the .ng file. query: The text string to search for. case_sensitive: When True, the search is case-sensitive. Defaults to False.

Returns: A list of match dictionaries. Each dictionary contains:

- ``offset`` (int): Byte offset of the matching entry.
- ``type`` (str): ``"short"`` or ``"long"``.
- ``matching_lines`` (list[dict]): Each item has:

  - ``line_index`` (int): Zero-based line number within the entry.
  - ``text`` (str): Plain-text content of the matching line.

Raises: FileNotFoundError: If path does not point to an existing file.

body_search_guideA

Search all entries in a Norton Guide for a query string anywhere in the body.

This is similar to line_search_guide but returns the entire entry content for any entry that contains a match, rather than just the matching lines.

The search is also done on the whole body, with lines joined using a space.

Args: path: Absolute path to the .ng file. query: The text string to search for. case_sensitive: When True, the search is case-sensitive. Defaults to False.

Returns: A list of match dictionaries. Each dictionary contains:

- ``offset`` (int): Byte offset of the matching entry.
- ``type`` (str): ``"short"`` or ``"long"``.
- ``lines`` (list[str]): Plain-text lines of the entry.

Raises: FileNotFoundError: If path does not point to an existing file.

list_guide_filesA

List Norton Guide (.ng) files available to the server.

Args: directory: Optional directory path to restrict the listing to. When omitted all configured guide directories are searched.

Returns: A sorted list of file-info dictionaries, each containing:

- ``path`` (str): Absolute path to the .ng file.
- ``name`` (str): Filename (without directory).
- ``size`` (int): File size in bytes.

Raises: FileNotFoundError: If directory is provided but does not exist. PermissionError: If directory is outside the configured guide dirs and allow_absolute_paths is False.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
list_guidesReturn a list of all .ng files discoverable in the configured dirs. Returns: A list of file-info dictionaries, each containing: - ``path`` (str): Absolute path. - ``name`` (str): Filename. - ``size`` (int): File size in bytes.
markup_glossaryReturn a dictionary mapping markup tag codes to their meanings. Returns: A dictionary where each key is a markup tag (e.g. ``"^A"``) and each value is a string describing the tag's meaning and usage.

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/davep/ngmcp'

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