kenall-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@kenall-mcplook up address for postal code 100-0001"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Node.js 18 or higher
A Kenall API key (get one at https://kenall.jp/)
Installation
npm install -g kenall-mcpOr use directly with npx:
npx kenall-mcpConfiguration
Set your Kenall API key as an environment variable:
export KENALL_API_KEY="your-api-key-here"Building (for development)
npm run buildRunning
Using npx (recommended):
KENALL_API_KEY="your-api-key-here" npx kenall-mcpAfter global installation:
KENALL_API_KEY="your-api-key-here" kenall-mcpDevelopment mode (with auto-reload):
npm run devProduction mode (from source):
npm startMCP Client Configuration
To use this server with an MCP client, add the following to your MCP client configuration:
Using npx (recommended):
{
"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 Japaneseprefecture(string, optional): Prefecture name to filter resultscity(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 toolslookup_postal_codeB
Look up address information from a Japanese postal code
| Name | Required | Description | Default |
|---|---|---|---|
| postalCode | Yes | Japanese postal code (e.g., '1000001' or '100-0001') |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City name to filter results | |
| query | Yes | Address query in Japanese | |
| prefecture | No | Prefecture name to filter results |
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v0.1.0- First observed
lookup_postal_code - First observed
search_address
TDQS
Scored across 2 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for Japan geodata: cadastral lot numbers (chiban) and reverse geocoding, for AI agents.
Read-only MCP server for searching Japan government procurement bid information from the KKJ portal.
Unofficial MCP server for the public PortlandMaps property/permit/zoning API. Not city-affiliated.
The first MCP server for physical mail: send postcards and letters, manage lists and campaigns.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides Japanese postal code to address lookup functionality that can be integrated with AI assistants and other MCP clients.3MIT
- AlicenseBqualityDmaintenanceMCP server for the Japan National Tax Agency Corporate Number API, enabling corporate number lookup and search via local AI clients.31MIT
- AlicenseBqualityCmaintenanceMCP server that wraps the official JPO patent information API to enable retrieval of patent, trademark, and design records for known case numbers.271MIT
- AlicenseAqualityBmaintenanceAn MCP server that validates Japanese corporate numbers and invoice registration numbers, and normalizes/matches company names across notation variants.721 npmMIT