ngmcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NGMCP_GUIDE_DIRS | Yes | Colon-separated list of directories to search for .ng files | |
| NGMCP_ALLOW_ABSOLUTE_PATHS | No | Allow tools to open .ng files by absolute path | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| 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
| Name | Description |
|---|---|
| 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: 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: 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: 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
Returns: A dictionary containing: 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
Returns: A dictionary containing: |
| 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: 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 Returns: A list of match dictionaries. Each dictionary contains: 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 Returns: A list of match dictionaries. Each dictionary contains: 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: Raises:
FileNotFoundError: If directory is provided but does not exist.
PermissionError: If directory is outside the configured guide dirs
and |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| list_guides | Return 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_glossary | Return 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. |
TDQS
Scored across 9 tools
Each tool has a clearly distinct purpose: searching by body vs line, reading raw vs parsed, listing entries vs files vs menus, and following links. No two tools overlap in functionality.
Tool names use snake_case and are descriptive, but they employ different verb patterns: list_, get_, read_, search_ and follow_. While each group is consistent internally, the overall pattern is not uniform.
With 9 tools, the set is well-scoped for exploring Norton Guide databases. It covers all necessary operations (listing, reading, searching, linking, metadata) without being excessive.
The tool surface covers all expected interactions with a read-only Norton Guide: browsing by lists and menus, full-text search, reading entries (both plain and raw), following links, and retrieving guide metadata. No obvious gaps.