Skip to main content
Glama

jev-docs-mcp

An MCP server that lets AI coding agents (Cursor, Claude Code, Codex, and other MCP clients) search and read the official TypeSafe Jev documentation.

It loads the docs from docs.typesafe.ai/llms.txt and docs.typesafe.ai/llms-full.txt and caches them in memory for an hour. No API key is needed.

Tools

Tool

What it does

jev_docs_list

Lists every docs page with its path and a one-line summary.

jev_docs_search

Full-text search across all pages; returns the best matches with snippets.

jev_docs_read

Returns a full page by path (primitives/noul), URL, or title. Long pages are paginated with offset.

Related MCP server: MCP Framework Documentation Server

Setup

Requires Node.js 18 or newer. Nothing to install: npx downloads and runs the package.

Cursor

Add this to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):

{
  "mcpServers": {
    "jev-docs": {
      "command": "npx",
      "args": ["-y", "jev-docs-mcp"]
    }
  }
}

Then open Cursor Settings → Tools & MCP and make sure jev-docs is enabled.

Claude Code

claude mcp add jev-docs -- npx -y jev-docs-mcp

Any other MCP client

Run npx -y jev-docs-mcp as a stdio server.

Development

git clone https://github.com/mohit716/jev-docs-mcp.git
cd jev-docs-mcp
npm install
npm test

This starts the server, calls each tool against the live docs, and prints the results.

Not affiliated with TypeSafe

This is an independent project. The documentation content belongs to TypeSafe AI.

Available Tools

3 tools
jev_docs_listList Jev docs pagesA
Read-only

List every page in the official TypeSafe/Jev documentation (docs.typesafe.ai) with its path and one-line summary. Use this to discover what exists before reading.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds genuinely useful behavioral context that no structured field provides: it returns every page (no filtering) with path and one-line summary, which compensates for the absent output schema. It says nothing about result size or pagination.

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 sentences, zero filler, with the return contract front-loaded before the usage hint. Every clause earns its place.

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 parameterless read-only listing tool with annotation-covered safety, the description is nearly complete: it states scope, source, and return fields despite there being no output schema. Only minor operational details (result size, pagination, freshness) are missing.

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 takes zero parameters, so there is nothing for the description to disambiguate beyond what the empty schema shows. Baseline 4 applies.

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?

States a specific verb (List) and resource (every page in the TypeSafe/Jev docs), names the source domain (docs.typesafe.ai), and specifies the return shape (path + one-line summary). An agent can immediately distinguish this full-listing tool from the search and read siblings.

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?

"Use this to discover what exists before reading" gives a clear condition for selecting this tool over jev_docs_read. It does not explicitly contrast with jev_docs_search or say when not to use it, so it stops short of full routing guidance.

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

jev_docs_readRead a Jev docs pageA
Read-only

Read the full Markdown of one Jev documentation page. Accepts a path (e.g. 'primitives/noul'), a docs.typesafe.ai URL, or an exact page title. Long pages are paginated with offset.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageYesPage path, URL, or title
offsetNoCharacter offset to start from, for long pages
max_charsNoMaximum characters to return

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds real behavioral context the annotations do not: long pages are paginated and require an offset, and it discloses the three input forms accepted for a page reference.

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?

Three short sentences, zero filler, with the core action front-loaded and input forms and pagination following in order of importance.

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

Completeness5/5

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

For a read-only, no-output-schema tool, the description covers the action, all accepted page-reference forms, and pagination behavior. Nothing an agent needs in order to invoke it correctly is missing.

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?

Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema by giving a concrete path example ('primitives/noul') and by tying the offset parameter to its purpose (pagination of long pages). That adds usable format guidance not present in the schema text.

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

Purpose4/5

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

States a specific verb and resource ('Read the full Markdown of one Jev documentation page') and the singular scope plus 'full Markdown' implicitly separates it from jev_docs_list and jev_docs_search. It stops short of naming those siblings explicitly, so the differentiation is inferable rather than stated.

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 explains the accepted input forms but gives no when-to-use or when-not-to-use guidance, and does not route the agent to jev_docs_search or jev_docs_list for finding an unknown page. Usage is implied (read a page once you know its path/title) rather than spelled out.

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.

  1. 3 tool updatesv1.0.0
    • First observedjev_docs_list
    • First observedjev_docs_read
    • First observedjev_docs_search

TDQS

A4.4/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: list enumerates all pages, search performs full-text lookup, and read fetches full page content. The descriptions explicitly clarify how they differ, leaving no realistic ambiguity.

Naming Consistency5/5

All three tools follow the same predictable pattern: jev_docs_ prefix plus a consistent verb (list, search, read). There is no mixing of conventions.

Tool Count5/5

Three tools is a well-scoped minimal set for a documentation server: discover, search, and read. Each tool earns its place without redundancy.

Completeness5/5

The surface covers the full read-only documentation lifecycle: discovery via list, targeted lookup via search, and full content retrieval via read with pagination support. No obvious gaps remain.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides version-pinned, deterministic documentation sourced from DevDocs.io to AI assistants (Claude, RooCode, Cline, Copilot etc.) and also via offline mode. Not via Scraping! But using the supported downloading option from devdocs.
    56 npm
    13
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides tools for AI agents to search, browse, and retrieve the full documentation for the mcp-framework. It enables agents to access documentation sections and page content directly within MCP-compatible environments like Claude Code and Cursor.
    3
    10 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI coding agents to search and access open-source code, documentation, and package information via a local MCP server.
    3,042 npm
    114
    Apache 2.0