Skip to main content
Glama
SaltfishSheep

CNPC JavaDoc MCP Server

English | 中文

CNPC JavaDoc MCP Server

An MCP (Model Context Protocol) server that provides CustomNPCs (CNPC) JavaDoc API lookups. Lets AI coding agents search CNPC class methods, fields, and inheritance hierarchies across multiple Minecraft versions and forks.

What It Does

CustomNPCs is a Minecraft mod with a rich Java scripting API spanning 10+ Minecraft versions and 3 forks. This MCP server lets your AI agent:

  • Search CNPC JavaDoc for methods and fields with boolean expressions, column modifiers, and scoring

  • View class hierarchies — inheritance chains and direct subclasses

  • Auto-build caches on first use — fetches and parses JavaDoc HTML from kodevelopment.nl and GitHub Pages

  • Full interoperability with AI-MCP-NativeMinecraftAccess — identical search syntax

Use Cases

Scenario

How This Helps

CNPC script development

Look up method signatures, parameters, and return types

Class hierarchy exploration

Find parent interfaces and classes for API types

Cross-version porting

Compare API surfaces between MC versions

Fork development

Query CustomNPC+ or Goodbird fork APIs

MCP Tools

Tool

Description

search

Search CNPC JavaDoc methods/fields with boolean expressions

show-hierarchy

Display class inheritance chain and direct subclasses

Related MCP server: EmbeDocs-MCP

Quick Install

Prerequisites

  • Node.js ≥ 18

Step 1: Clone & Build

git clone https://github.com/SaltfishSheep/AI-MCP-CNPCAPIAccess.git
cd AI-MCP-CNPCAPIAccess
npm install
npm run build

Step 2: Add to Your MCP Client

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "cnpc-javadoc": {
      "command": "node",
      "args": ["/absolute/path/to/AI-MCP-CNPCAPIAccess/dist/index.js"]
    }
  }
}

OpenCode (opencode.json):

{
  "mcp": {
    "cnpc-javadoc": {
      "type": "local",
      "command": ["node", "/absolute/path/to/AI-MCP-CNPCAPIAccess/dist/index.js"],
      "enabled": true
    }
  }
}

Cursor (.cursor/mcp.json):

{
  "mcpServers": {
    "cnpc-javadoc": {
      "command": "node",
      "args": ["/absolute/path/to/AI-MCP-CNPCAPIAccess/dist/index.js"]
    }
  }
}

Replace /absolute/path/to/ with the actual path where you cloned the repo.

Usage

Search Tool

search(mc_version="1.12.2", expression="ICustomNpc")
search(mc_version="1.12.2", expression="say:method")
search(mc_version="1.12.2", expression="health:field")

Example queries:

Query

Description

ICustomNpc

All entries mentioning ICustomNpc

say:method

Methods with "say" in name

health:field

Fields with "health" in name

ICustomNpc::classname

Class name exactly "ICustomNpc"

noppes/npcs/api/entity:package

All entries under entity package

()Z:desc

Methods returning boolean

get:method&static::modifier

Static methods containing "get"

{dialog|quest}&get

Dialog or quest entries with "get"

output="%class%"

Deduplicated class list

Expression syntax:

Syntax

Meaning

Example

term

Case-insensitive substring match

npc

term:modifier

Restrict to specific columns

say:method

term::modifier

Strong modifier — exact match

ICustomNpc::classname

noppes.npcs.api.ICustomNpc

Dot notation → / and $ paths

noppes.npcs.api.entity.ICustomNpc

&

AND (higher precedence)

npc&say

|

OR

dialog|quest

{}

Grouping

{a|b}&c

Modifiers:

Modifier

Searches

Description

all

class, name, desc, access, is_static

Default (excludes sideonly)

class

class

Full class path

classname

class name after last /

Class name only

package

package before last /

Package only

name

name

Method/field names

method

name, type=method only

Methods only

field

name, type=field only

Fields only

desc

desc

JVM descriptors

modifier

access, is_static

Access/static status

side

sideonly

Always "common" for CNPC

Show-Hierarchy Tool

show-hierarchy(mc_version="1.12.2", class="noppes/npcs/api/entity/ICustomNpc")

Example output:

Hierarchy: ICustomNpc -> IEntityLiving -> IEntityLivingBase -> IEntity -> Object
Subs:
  ICustomNpc

The tool returns two sections:

  1. Hierarchy: inheritance chain from the class up to root (-> separated)

  2. Subs: direct subclasses (if any)

Dot notation is also accepted: "noppes.npcs.api.entity.ICustomNpc".

Supported Versions

Source

Versions

Parser Profile

kodevelopment.nl

1.7.10

kodevelopment-legacy

kodevelopment.nl

1.8.9, 1.9.4

kodevelopment-old

kodevelopment.nl

1.10.2, 1.11.2

kodevelopment-mid

kodevelopment.nl

1.12.2

kodevelopment-modern

kodevelopment.nl

1.16.5, 1.18.2

kodevelopment-latest

CustomNPC+ (Kamkeel)

cnpc+:1.7.10

kodevelopment-legacy

Goodbird

1.20.1

goodbird

BetaZavr

BetaZavr:1.12.2

kodevelopment-modern

BetaZavr

BetaZavr:1.20.1

goodbird

Note: CNPC has no official releases for MC 1.8–1.8.8, 1.9–1.9.3, 1.11, or 1.13–1.15.2.

Version Format

  • Standard: "1.12.2", "1.7.10", "1.20.1"

  • Fork: "cnpc+:1.7.10" (CustomNPC+), "BetaZavr:1.12.2", "BetaZavr:1.20.1"

How It Works

  1. On first search for a given CNPC version, the server fetches JavaDoc HTML from kodevelopment.nl or GitHub Pages

  2. It parses class pages using version-specific HTML parsers (6 profile names routing to 3 parser implementations)

  3. Methods and fields are extracted with JVM descriptors and stored as CSV cache

  4. Class hierarchy is extracted and stored as JSON cache

  5. Subsequent searches use the cached data (validated against package.json version)

Project Structure

AI-MCP-CNPCAPIAccess/
├── package.json
├── tsconfig.json
├── src/
│   ├── index.ts              # MCP server entry point (search + show-hierarchy)
│   ├── types.ts              # TypeScript type definitions
│   ├── util.ts               # Shared utilities (CSV parsing, package version)
│   ├── version-table.ts      # CNPC version → doc URL + parser profile mapping
│   ├── builder/
│   │   ├── index.ts          # buildJavadocCache entry point
│   │   ├── download.ts       # HTTP fetch with retry
│   │   ├── javadoc-parser.ts # 3-implementation JavaDoc HTML parser (6 profiles)
│   │   ├── descriptor.ts     # Java type → JVM descriptor converter
│   │   └── cache.ts          # CSV + hierarchy JSON cache writer
│   └── search/
│       ├── index.ts          # Re-exports
│       ├── expression.ts     # Boolean expression parser (AND/OR/braces)
│       └── csv-reader.ts     # CSV reader + search
├── dist/                     # Built JavaScript (entry: dist/index.js)
└── .javadoc-caches/          # Generated cache files (gitignored)

License

MIT License — see LICENSE.

Data Sources

  • kodevelopment.nl — Official CustomNPCs JavaDoc (1.7.10–1.18.2)

  • Kamkeel GitHub Pages — CustomNPC+ fork JavaDoc (1.7.10)

  • Goodbird GitHub Pages — Unofficial CNPC port JavaDoc (1.20.1)

Available Tools

2 tools
show-hierarchyShow CNPC Class HierarchyA
Read-onlyIdempotent

Display the class inheritance hierarchy for a CustomNPCs (CNPC) class.

Returns two sections:

  1. Hierarchy: inheritance chain from the class up to root (-> separated)

  2. Subs: direct subclasses (if any)

Example output for BlockEvent: Hierarchy: BlockEvent -> CustomNPCsEvent -> Event -> Object Subs: BlockEvent$BreakEvent BlockEvent$ClickedEvent ...

ParametersJSON Schema
NameRequiredDescriptionDefault
classYesFully-qualified class path using '/' separator (e.g. "noppes/npcs/api/entity/ICustomNpc"). Dot notation is also accepted (e.g. "noppes.npcs.api.entity.ICustomNpc").
mc_versionYesCNPC version to query (e.g. "1.12.2", "cnpc+:1.7.10", "1.20.1"). Supported: 1.10.2, 1.11.2, 1.12.2, 1.16.5, 1.18.2, 1.20.1, 1.7.10, 1.8.9, 1.9.4, BetaZavr:1.12.2, BetaZavr:1.20.1, cnpc+:1.7.10

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive, so the tool's safety profile is clear. The description adds behavioral context by explaining the two return sections and providing an example output, going beyond what annotations offer.

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 concise, front-loads the purpose, and includes an example. It is efficiently structured, though it could be slightly tighter.

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 read-only tool with two well-documented parameters, the description covers the purpose, return structure, and provides an example. With no output schema, the description adequately compensates.

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 coverage is 100%, so the schema already documents both parameters. The description mentions dot notation and lists supported versions, but these add little beyond the schema. 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 it displays a class inheritance hierarchy for CNPC, and distinguishes itself from the sibling tool 'search' by its specific function. It explicitly mentions the two output sections (Hierarchy and Subs) and provides an example.

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 when needing class hierarchy, but does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention when not to use it.

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. Dates show when Glama detected each change.

  1. 2 tool updatesv1.1.0
    • First observedsearch
    • First observedshow-hierarchy

TDQS

A4.1/5.0
Disambiguation5/5

The two tools have clearly distinct purposes: 'search' handles querying the JavaDoc database with a powerful search syntax, while 'show-hierarchy' displays class inheritance. There is no overlap in functionality.

Naming Consistency5/5

Both tool names follow a consistent verb pattern (imperative), with 'search' being a single verb and 'show-hierarchy' using a verb_noun format with hyphenation. The style is uniform and predictable.

Tool Count3/5

With only two tools, the server feels somewhat thin for a JavaDoc browsing domain. While the search tool is powerful, additional tools like 'get_class_details' or 'list_versions' would enhance the coverage. The count is borderline acceptable but not optimal.

Completeness3/5

The tool set covers search and hierarchy but misses direct access to detailed documentation for specific methods or fields. Users relying solely on these tools may face dead ends when needing comprehensive class or method info, indicating notable gaps.

Maintenance

ActivityStale
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

  • F
    license
    Not graded
    quality
    D
    maintenance
    An intelligent MCP server that enables AI agents to crawl, index, and semantically search official framework documentation using local RAG. It prevents hallucinations by providing precise, up-to-date documentation excerpts directly into the AI's context window.
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to access up-to-date documentation by indexing GitHub repositories and official docs, providing semantic search through MCP.
    16
    7
    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/SaltfishSheep/AI-MCP-CNPCAPIAccess'

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