About hangulport
hangulport is a CLI and stdio MCP server client for the hosted Bareun Korean NLP service. It provides Korean morphology, dictionary search, tokenization, and spelling and spacing correction through the upstream API.
Key features
- 01Morphological analysis with POS tags
- 02Raw morphology model output
- 03Urimalsaem dictionary search
- 04Sentence tokenization
- 05Spelling and spacing correction
- 06Upstream POS tag listing
Use cases
- 01Analyze Korean text and word forms
- 02Look up entries using jamo patterns
- 03Split Korean sentences into word units
- 04Correct spelling and spacing
MCP support
A stdio MCP server exposes Bareun NLP operations as tools and forwards calls to the hosted service. A Bareun API key is required.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
6Saved tool list · updated 1w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| text | string | Yes | Korean text to analyze. |
| format | enum | No | Output format: full or compact.full | compact |
| encoding | enum | No | Text encoding for the analysis: utf32, utf16, or utf8.utf32 | utf16 | utf8 |
| with_sense | boolean | No | When true, include word-sense information in the result. |
| auto_spacing | boolean | No | When true, apply automatic spacing correction before analysis. |
| auto_jointing | boolean | No | When true, join separated jamo automatically before analysis. |
| custom_dict_names | array | No | Names of custom dictionaries to apply during analysis. |
| auto_split_sentence | boolean | No | When true, split the text into sentences automatically before analysis. |
Details
From the project READMEhangulport
hangulport is a client for the hosted Bareun Korean NLP service. It exposes morphological analysis with part-of-speech tagging, the raw morphological model output, Urimalsaem dictionary search by jamo slot pattern, sentence tokenization, spelling and spacing correction, and the service's part-of-speech tag list. One binary serves a command-line interface and a stdio MCP server; both forward every call to the hosted endpoint.
An API key is required. Set BAREUN_API_KEY to your Bareun key; it
is sent to the endpoint as the api-key header and nowhere else.
Calls go to https://api.bareun.ai/mcp unless BAREUN_MCP_URL
overrides the endpoint. When the key is missing, calls fail with an
error naming BAREUN_API_KEY — no result is invented locally. The
47 POS tags behind list_pos_tags are served by the upstream; they
are not hardcoded here.
Install
npx @reneturcios/hangulport tokenize "안녕하세요"
Or run the container image:
docker run -i ghcr.io/cloudcorprecords/hangulport
The container defaults to the MCP server (see below). Pass CLI
arguments to use it as a CLI instead. Both forms need
BAREUN_API_KEY in the environment (for Docker, add
-e BAREUN_API_KEY=...).
CLI
hangulport analyze_syntax "안녕하세요" --auto-spacing --encoding utf8 --format compact
hangulport analyze_syntax_raw "안녕하세요" --with-sense
hangulport search_dict "ㄱㅏ*" --anchor prefix --limit 5 --with-definition
hangulport tokenize "문장을 나눕니다" --auto-spacing
hangulport correct_grammar "띄어쓰기연습" --enable-sentence-check
hangulport list_pos_tags
hangulport --version
Each subcommand is named after the MCP tool it calls. The first
argument is the required text (or dictionary pattern); the remaining
flags map one-to-one onto the tool's optional inputs. Boolean flags
take no value: passing the flag sets it true, and omitting it
forwards nothing — this client injects no defaults of its own.
--custom-dict-names takes a comma-separated list. Commands print
the upstream result text. Exit codes: 0 on success, 1 when a
call fails (including a missing key or an upstream error), 2 for
usage errors.
MCP server
One bin serves both faces. The mcp subcommand starts a stdio MCP
server:
npx -y @reneturcios/hangulport mcp
MCP client configuration:
{
"mcpServers": {
"hangulport": {
"command": "npx",
"args": ["-y", "@reneturcios/hangulport", "mcp"],
"env": { "BAREUN_API_KEY": "your-key" }
}
}
}
To point the server at a different Bareun-compatible host, add
BAREUN_MCP_URL to the client's env for this server.
Tools
| Tool | Input | What it returns |
|---|---|---|
analyze_syntax | text (required); optional auto_split_sentence, auto_spacing, auto_jointing, custom_dict_names, encoding (utf32/utf16/utf8), format (full/compact), with_sense | Morphological analysis with POS tagging. |
analyze_syntax_raw | text (required); optional auto_split_sentence, encoding, format, with_sense | Raw morphological model output, no post-processing. |
search_dict | pattern (required); optional anchor (word/prefix/suffix/contains), pos, std_only, with_definition, limit, count_only | Urimalsaem dictionary matches for a jamo slot pattern. |
tokenize | text (required); optional auto_spacing, encoding | The sentence split into word units. |
correct_grammar | text (required); optional custom_dict_names and nine boolean correction options (treat_as_title, disable_split_sentence, disable_caret_spacing, disable_vx_spacing, enable_limited_punctuation, disable_confusion, enable_cleanup_whitespace, disable_typo_correction, enable_sentence_check) | Spelling/spacing correction blocks. |
list_pos_tags | (none) | The 47 Bareun POS tags, as served upstream. |
Development
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, no network (fake fetch fixtures)
npm run dev # run the CLI from source via tsx
License
MIT — see LICENSE.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.