Skip to main content
Glama
knsh14

kenall-mcp

by knsh14

Kenall MCP Server

An MCP (Model Context Protocol) server that provides access to the Kenall postal code API for Japanese address lookups.

Features

  • Look up address information from Japanese postal codes

  • Search for postal codes by address

  • Support for both hyphenated and non-hyphenated postal code formats

Related MCP server: houjin-bangou-api-mcp

Prerequisites

Installation

npm install -g kenall-mcp

Or use directly with npx:

npx kenall-mcp

Configuration

Set your Kenall API key as an environment variable:

export KENALL_API_KEY="your-api-key-here"

Building (for development)

npm run build

Running

KENALL_API_KEY="your-api-key-here" npx kenall-mcp

After global installation:

KENALL_API_KEY="your-api-key-here" kenall-mcp

Development mode (with auto-reload):

npm run dev

Production mode (from source):

npm start

MCP Client Configuration

To use this server with an MCP client, add the following to your MCP client configuration:

{
  "mcpServers": {
    "kenall": {
      "command": "npx",
      "args": ["kenall-mcp"],
      "env": {
        "KENALL_API_KEY": "your-api-key-here"
      }
    }
  }
}

Using global installation:

{
  "mcpServers": {
    "kenall": {
      "command": "kenall-mcp",
      "env": {
        "KENALL_API_KEY": "your-api-key-here"
      }
    }
  }
}

Using local installation:

{
  "mcpServers": {
    "kenall": {
      "command": "node",
      "args": ["/path/to/kenall-mcp/dist/index.js"],
      "env": {
        "KENALL_API_KEY": "your-api-key-here"
      }
    }
  }
}

Available Tools

lookup_postal_code

Look up address information from a Japanese postal code.

Parameters:

  • postalCode (string, required): Japanese postal code (e.g., '1000001' or '100-0001')

search_address

Search for postal codes by address.

Parameters:

  • query (string, required): Address query in Japanese

  • prefecture (string, optional): Prefecture name to filter results

  • city (string, optional): City name to filter results

Example Usage

Looking up a postal code:

{
  "tool": "lookup_postal_code",
  "arguments": {
    "postalCode": "100-0001"
  }
}

Searching by address:

{
  "tool": "search_address",
  "arguments": {
    "query": "千代田",
    "prefecture": "東京都"
  }
}

License

MIT

Available Tools

2 tools
lookup_postal_codeB

Look up address information from a Japanese postal code

ParametersJSON Schema
NameRequiredDescriptionDefault
postalCodeYesJapanese postal code (e.g., '1000001' or '100-0001')

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It implies a read-only lookup, but does not state that it is non-mutating, does not mention rate limits, caching, or error behavior for invalid codes. The address-information framing adds some useful domain context.

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?

A single efficient sentence that front-loads the action and resource. No unnecessary words, though it could be slightly more informative about the lookup scope.

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?

For a simple one-parameter read tool, the description is adequate but thin. With no output schema and no annotations, it leaves the return shape and behavioral expectations (e.g., what address fields are returned, what happens on invalid input) unaddressed.

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% and already documents the postalCode format with examples. The description adds nothing beyond what the schema provides, so the baseline 3 is appropriate.

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?

The description states a specific verb (look up) and resource (address information) scoped to Japanese postal codes, so the purpose is clear. It is distinguished from search_address by the postal-code input, though the sibling relationship is not made explicit.

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 input constraint (Japanese postal code) hints at when to use this tool, but there is no explicit guidance on when to prefer it over search_address or when not to use it. The sibling tool is named but not referenced.

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

search_addressB

Search for postal codes by address

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoCity name to filter results
queryYesAddress query in Japanese
prefectureNoPrefecture name to filter results

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden. It implies a read-only search but says nothing about result limits, matching behavior, or whether the query is fuzzy/partial. For a lookup tool this is a real gap.

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?

A single, front-loaded sentence with no wasted words. Nothing to trim.

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 and the schema is complete, so the core mechanics are covered. But with no annotations, no output schema, and a near-identical sibling, the description omits the differentiation an agent most needs before invoking it.

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 fully documents query, city, and prefecture, including that the query must be in Japanese. The description's 'by address' only maps to the query param and adds no meaning beyond the schema, so the baseline 3 applies.

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 (search) and resource (postal codes) with the input dimension (by address). However, it does not distinguish itself from the sibling lookup_postal_code, leaving the agent to guess which one to pick.

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

Usage Guidelines2/5

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

No guidance on when to prefer this over lookup_postal_code, no stated prerequisites, and no exclusions. The only usage signal is the implicit 'search by address' framing, which is not enough to route between two similar tools.

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. 2 tool updatesv0.1.0
    • First observedlookup_postal_code
    • First observedsearch_address

TDQS

B3.4/5.0

Scored across 2 tools

Disambiguation5/5

The two tools perform inverse but clearly distinct operations: postal code to address versus address to postal code. An agent can unambiguously pick the correct tool based on the direction of the query.

Naming Consistency4/5

Both names follow a verb_noun pattern (lookup_postal_code, search_address) in consistent snake_case. The verbs differ slightly (lookup vs search), but the convention is otherwise predictable and readable.

Tool Count3/5

Two tools is thin, but the server's purpose (Japanese postal code lookup) is inherently narrow and both directions of the mapping are covered. It is borderline minimal rather than clearly well-scoped.

Completeness4/5

The core domain—bidirectional postal code/address resolution—is fully covered with no dead ends for the primary use case. Minor extras like batch lookup or input validation are absent but not essential.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers