Skip to main content
Glama
Tech-curator

Korean Patent MCP

by Tech-curator

πŸ‡°πŸ‡· Korean Patent MCP

ν•œκ΅­μ–΄ λ¬Έμ„œλŠ” μ•„λž˜μ— μžˆμŠ΅λ‹ˆλ‹€ / Korean documentation below

MCP (Model Context Protocol) server for KIPRIS (Korean Intellectual Property Rights Information Service) API.

English Documentation

Overview

This MCP server enables AI assistants (Claude Desktop, Cursor, Windsurf, etc.) to search and analyze Korean patents through natural language queries. It connects to the official KIPRIS Plus Open API provided by the Korean Intellectual Property Office (KIPO).

Features

Tool

Description

kipris_search_patents

Search patents by applicant name

kipris_get_patent_detail

Get detailed patent information by application number

kipris_get_citing_patents

Find patents that cite a specific patent

Quick Start

# Install via Smithery (recommended)
npx -y @smithery/cli install korean-patent-mcp --client claude

# Or install via uv
uv pip install git+https://github.com/Tech-curator/korean-patent-mcp.git

Requirements

Configuration

Set the KIPRIS_API_KEY environment variable:

export KIPRIS_API_KEY="your_api_key_here"

Or add to your MCP client configuration:

{
  "mcpServers": {
    "korean-patent": {
      "command": "uv",
      "args": ["run", "korean-patent-mcp"],
      "env": {
        "KIPRIS_API_KEY": "your_api_key_here"
      }
    }
  }
}

Example Queries

  • "Search for Samsung Electronics' registered patents"

  • "Get details for patent application number 1020200123456"

  • "Find patents that cite application 1020180056789"


Related MCP server: .KCI MCP Server (ν•œκ΅­ν•™μˆ μ§€μΈμš©μƒ‰μΈ)

ν•œκ΅­μ–΄ λ¬Έμ„œ

ν•œκ΅­ νŠΉν—ˆμ •λ³΄ κ²€μƒ‰μ„œλΉ„μŠ€(KIPRIS) APIλ₯Ό μœ„ν•œ MCP(Model Context Protocol) μ„œλ²„μž…λ‹ˆλ‹€.

Claude Desktop, Cursor, Windsurf λ˜λŠ” λ‹€λ₯Έ MCP ν΄λΌμ΄μ–ΈνŠΈμ™€ μ—°λ™ν•˜μ—¬ μžμ—°μ–΄λ‘œ ν•œκ΅­ νŠΉν—ˆλ₯Ό κ²€μƒ‰ν•˜κ³  뢄석할 수 μžˆμŠ΅λ‹ˆλ‹€.

Smithery

✨ κΈ°λŠ₯

Core Tools

Tool

μ„€λͺ…

kipris_search_patents

μΆœμ›μΈλͺ…μœΌλ‘œ νŠΉν—ˆ 검색

kipris_get_patent_detail

μΆœμ›λ²ˆν˜Έλ‘œ νŠΉν—ˆ 상세 정보 쑰회

kipris_get_citing_patents

νŠΉμ • νŠΉν—ˆλ₯Ό μΈμš©ν•œ ν›„ν–‰ νŠΉν—ˆ 쑰회

Extended Tools (ν–₯ν›„ κ΅¬ν˜„ μ˜ˆμ •)

  • kipris_get_cpc_codes - CPC λΆ„λ₯˜ μ½”λ“œ 쑰회

  • kipris_get_inventors - 발λͺ…μž 정보 쑰회

  • kipris_check_rejection - 거절 μ—¬λΆ€ 확인

  • kipris_analyze_rejection_reason - 거절 μ‚¬μœ  뢄석

πŸš€ μ„€μΉ˜ 방법

방법 1: Smitheryλ₯Ό ν†΅ν•œ μ„€μΉ˜ (ꢌμž₯)

# Smithery CLI μ„€μΉ˜ (처음 ν•œ 번만)
npm install -g @smithery/cli

# Korean Patent MCP μ„œλ²„ μ„€μΉ˜
smithery install korean-patent-mcp --client claude

방법 2: uvλ₯Ό μ‚¬μš©ν•œ 둜컬 μ„€μΉ˜

# μ €μž₯μ†Œ 클둠
git clone https://github.com/khreat/korean-patent-mcp.git
cd korean-patent-mcp

# uv둜 μ„€μΉ˜ (ꢌμž₯)
uv pip install -e .

# λ˜λŠ” pip으둜 μ„€μΉ˜
pip install -e .

μš”κ΅¬μ‚¬ν•­

πŸ”§ μ„€μ •

API ν‚€ μ„€μ •

.env νŒŒμΌμ„ μƒμ„±ν•˜κ³  API ν‚€λ₯Ό μ„€μ •ν•©λ‹ˆλ‹€:

echo "KIPRIS_API_KEY=your_api_key_here" > .env

λ˜λŠ” ν™˜κ²½λ³€μˆ˜λ‘œ μ„€μ •:

export KIPRIS_API_KEY="your_api_key_here"

πŸ”Œ ν΄λΌμ΄μ–ΈνŠΈ 연동

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) λ˜λŠ” %APPDATA%\Claude\claude_desktop_config.json (Windows) νŒŒμΌμ„ νŽΈμ§‘ν•©λ‹ˆλ‹€:

{
  "mcpServers": {
    "korean-patent": {
      "command": "uv",
      "args": ["run", "korean-patent-mcp"],
      "env": {
        "KIPRIS_API_KEY": "your_api_key_here"
      }
    }
  }
}

Cursor / Windsurf

MCP μ„€μ •μ—μ„œ λ‹€μŒμ„ μΆ”κ°€ν•©λ‹ˆλ‹€:

{
  "korean-patent": {
    "command": "uv",
    "args": ["run", "korean-patent-mcp"],
    "env": {
      "KIPRIS_API_KEY": "your_api_key_here"
    }
  }
}

πŸ“– μ‚¬μš© μ˜ˆμ‹œ

Claude Desktopμ—μ„œ λ‹€μŒκ³Ό 같이 μ§ˆλ¬Έν•  수 μžˆμŠ΅λ‹ˆλ‹€:

νŠΉν—ˆ 검색

μ‚Όμ„±μ „μžκ°€ μΆœμ›ν•œ νŠΉν—ˆ 쀑 λ“±λ‘λœ 것듀을 λ³΄μ—¬μ€˜
μΆ©λΆλŒ€ν•™κ΅ μ‚°ν•™ν˜‘λ ₯λ‹¨μ˜ 졜근 νŠΉν—ˆλ₯Ό κ²€μƒ‰ν•΄μ€˜

νŠΉν—ˆ 상세 정보

μΆœμ›λ²ˆν˜Έ 1020200123456의 νŠΉν—ˆ 상세 정보λ₯Ό μ•Œλ €μ€˜

인용 νŠΉν—ˆ 뢄석

μΆœμ›λ²ˆν˜Έ 1020180056789λ₯Ό μΈμš©ν•œ νŠΉν—ˆλ“€μ„ μ°Ύμ•„μ€˜

πŸ§ͺ 개발 & ν…ŒμŠ€νŠΈ

MCP Inspector둜 ν…ŒμŠ€νŠΈ

npx @modelcontextprotocol/inspector uv run korean-patent-mcp

Smithery Dev λͺ¨λ“œ

smithery dev

πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰

korean-patent-mcp/
β”œβ”€β”€ pyproject.toml          # νŒ¨ν‚€μ§€ μ„€μ • (uv/pip ν˜Έν™˜)
β”œβ”€β”€ smithery.yaml           # Smithery 배포 μ„€μ •
β”œβ”€β”€ README.md
β”œβ”€β”€ .env.example
└── src/
    └── korean_patent_mcp/
        β”œβ”€β”€ __init__.py
        β”œβ”€β”€ server.py       # MCP μ„œλ²„ & Tool μ •μ˜
        └── kipris_api.py   # KIPRIS API ν΄λΌμ΄μ–ΈνŠΈ

πŸ” API 응닡 ν˜•μ‹

λͺ¨λ“  Tool은 response_format νŒŒλΌλ―Έν„°λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€:

  • markdown (κΈ°λ³Έκ°’): μ‚¬λžŒμ΄ 읽기 쒋은 ν˜•μ‹

  • json: ν”„λ‘œκ·Έλž˜λ° μ²˜λ¦¬μ— μ ν•©ν•œ κ΅¬μ‘°ν™”λœ ν˜•μ‹

⚠️ μ£Όμ˜μ‚¬ν•­

  • KIPRIS APIλŠ” 호좜 μ œν•œμ΄ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€

  • λŒ€λŸ‰ 검색 μ‹œ νŽ˜μ΄μ§€λ„€μ΄μ…˜μ„ ν™œμš©ν•˜μ„Έμš”

  • API ν‚€λŠ” μ ˆλŒ€ 곡개 μ €μž₯μ†Œμ— μ»€λ°‹ν•˜μ§€ λ§ˆμ„Έμš”

πŸ“ λΌμ΄μ„ μŠ€

MIT License

🀝 κΈ°μ—¬

버그 리포트, κΈ°λŠ₯ μ œμ•ˆ, PR λͺ¨λ‘ ν™˜μ˜ν•©λ‹ˆλ‹€!

πŸ“ž Contact


Made with ❀️ for Korean patent research

Available Tools

3 tools
kipris_get_citing_patentsC

νŠΉμ • νŠΉν—ˆλ₯Ό μΈμš©ν•œ ν›„ν–‰ νŠΉν—ˆλ“€μ„ μ‘°νšŒν•©λ‹ˆλ‹€.

Args:
    application_number: κΈ°μ€€ νŠΉν—ˆμ˜ μΆœμ›λ²ˆν˜Έ (ν•„μˆ˜)
    response_format: 응닡 ν˜•μ‹ ('markdown' λ˜λŠ” 'json')
ParametersJSON Schema
NameRequiredDescriptionDefault
application_numberYes
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves data (쑰회), implying a read-only operation, but does not address permissions, rate limits, error handling, or response behavior beyond the response_format parameter. For a tool with no annotations, this leaves significant gaps in understanding its operational traits.

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 and well-structured: a clear purpose statement followed by an 'Args' section listing parameters with brief explanations. It avoids redundancy and is front-loaded with the main function. However, the 'Args' section could be integrated more smoothly into the narrative.

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?

Given the tool has an output schema (which should cover return values), the description's focus on purpose and parameters is adequate. However, with no annotations and low schema coverage, it lacks details on behavioral aspects like error cases or performance. It meets minimum viability but has clear gaps in context for safe and effective use.

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?

The description adds some semantic context: it explains that application_number is for the 'κΈ°μ€€ νŠΉν—ˆ' (base patent) and is required, and response_format specifies the output format with options. However, schema description coverage is 0%, so parameters are undocumented in the schema. The description compensates partially by clarifying meanings but does not fully detail constraints or examples, such as the format of application_number.

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 clearly states the tool's purpose: 'νŠΉμ • νŠΉν—ˆλ₯Ό μΈμš©ν•œ ν›„ν–‰ νŠΉν—ˆλ“€μ„ μ‘°νšŒν•©λ‹ˆλ‹€' (Retrieve patents that cite a specific patent). It specifies the verb (쑰회/retrieve) and resource (ν›„ν–‰ νŠΉν—ˆλ“€/citing patents), and distinguishes from siblings like kipris_get_patent_detail (which gets details) and kipris_search_patents (which searches). However, it doesn't explicitly contrast with siblings beyond the inherent difference in function.

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?

The description provides no guidance on when to use this tool versus alternatives. It does not mention sibling tools or other contexts, nor does it specify prerequisites or exclusions. The usage is implied by the purpose but lacks explicit direction.

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

kipris_get_patent_detailC

μΆœμ›λ²ˆν˜Έλ‘œ νŠΉν—ˆμ˜ 상세 정보λ₯Ό μ‘°νšŒν•©λ‹ˆλ‹€.

Args:
    application_number: μΆœμ›λ²ˆν˜Έ (ν•„μˆ˜, 예: '1020200123456')
    response_format: 응닡 ν˜•μ‹ ('markdown' λ˜λŠ” 'json')
ParametersJSON Schema
NameRequiredDescriptionDefault
application_numberYes
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/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 burden of behavioral disclosure. It states it's a retrieval operation ('μ‘°νšŒν•©λ‹ˆλ‹€'), implying read-only behavior, but doesn't address permissions, rate limits, error handling, or response structure. The mention of response formats ('markdown' or 'json') hints at output behavior, but overall, it lacks critical details for a tool with no annotation coverage.

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 appropriately sized and front-loaded, with the purpose stated first, followed by parameter details. It uses two sentences efficiently, with no redundant information. However, the parameter section could be slightly more integrated into the flow, but overall, it's concise and well-structured.

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?

Given the tool's moderate complexity (2 parameters, no annotations, but with an output schema), the description is partially complete. It covers the basic purpose and parameters but lacks usage guidelines and behavioral context. The presence of an output schema reduces the need to explain return values, but without annotations, more behavioral details would improve completeness for a retrieval tool.

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?

The description adds some semantic value beyond the input schema, which has 0% description coverage. It explains 'application_number' as 'μΆœμ›λ²ˆν˜Έ (ν•„μˆ˜, 예: '1020200123456')' (application number, required, example) and 'response_format' as '응닡 ν˜•μ‹ ('markdown' λ˜λŠ” 'json')' (response format, 'markdown' or 'json'), providing meaning and examples. However, it doesn't fully compensate for the schema's lack of descriptions, as it misses details like format constraints or default behavior for 'response_format'.

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 clearly states the tool's purpose: 'μΆœμ›λ²ˆν˜Έλ‘œ νŠΉν—ˆμ˜ 상세 정보λ₯Ό μ‘°νšŒν•©λ‹ˆλ‹€' (Retrieve detailed information of a patent by application number). It specifies the verb 'μ‘°νšŒν•©λ‹ˆλ‹€' (retrieve) and resource 'νŠΉν—ˆμ˜ 상세 정보' (detailed patent information), making the action and target explicit. However, it doesn't differentiate from sibling tools like 'kipris_search_patents' (which likely searches broadly) or 'kipris_get_citing_patents' (which retrieves citing patents), so it misses full sibling distinction.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'kipris_search_patents' for broader searches or 'kipris_get_citing_patents' for related patents, nor does it specify prerequisites, exclusions, or contextual cues. Usage is implied only by the purpose statement, lacking explicit when/when-not instructions.

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

kipris_search_patentsB

μΆœμ›μΈλͺ…μœΌλ‘œ ν•œκ΅­ νŠΉν—ˆλ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€.

Args:
    applicant_name: μΆœμ›μΈλͺ… (ν•„μˆ˜, 예: 'μ‚Όμ„±μ „μž', 'μΉ΄μΉ΄μ˜€λ±…ν¬')
    page: νŽ˜μ΄μ§€ 번호 (κΈ°λ³Έκ°’: 1)
    page_size: νŽ˜μ΄μ§€λ‹Ή κ²°κ³Ό 수 (κΈ°λ³Έκ°’: 20, μ΅œλŒ€: 100)
    status: μƒνƒœ ν•„ν„° ('A': 곡개, 'R': 등둝, 'J': 거절, None: 전체)
    response_format: 응닡 ν˜•μ‹ ('markdown' λ˜λŠ” 'json')
ParametersJSON Schema
NameRequiredDescriptionDefault
applicant_nameYes
pageNo
page_sizeNo
statusNo
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/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 burden of behavioral disclosure. It mentions pagination (page, page_size) and response format options, which are useful. However, it lacks critical details like rate limits, authentication needs, error handling, or whether this is a read-only operation. For a search tool with 5 parameters, this leaves significant behavioral gaps.

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 appropriately sized and front-loaded: the first sentence states the purpose, followed by a structured parameter list. Each sentence earns its place by providing essential details. It could be slightly more concise by integrating the parameter explanations more seamlessly, but overall it's efficient.

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?

Given the tool's moderate complexity (5 parameters, 1 required), no annotations, and the presence of an output schema, the description is reasonably complete. It covers all parameters with semantics and examples, and the output schema likely handles return values. However, it lacks behavioral context like rate limits or error cases, which slightly reduces completeness.

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 description adds substantial meaning beyond the input schema, which has 0% description coverage. It explains each parameter in Korean with examples (e.g., 'μ‚Όμ„±μ „μž' for applicant_name), default values, and constraints (e.g., 'μ΅œλŒ€: 100' for page_size). This compensates well for the schema's lack of descriptions, though it doesn't fully clarify the 'status' parameter's enum values beyond the listed codes.

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 clearly states the tool's purpose: 'μΆœμ›μΈλͺ…μœΌλ‘œ ν•œκ΅­ νŠΉν—ˆλ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€' (Search Korean patents by applicant name). It specifies the verb ('κ²€μƒ‰ν•©λ‹ˆλ‹€' - search) and resource ('ν•œκ΅­ νŠΉν—ˆ' - Korean patents), though it doesn't explicitly differentiate from sibling tools like 'kipris_get_citing_patents' or 'kipris_get_patent_detail' beyond the search focus.

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?

The description provides no guidance on when to use this tool versus its siblings. It mentions no alternatives, exclusions, or contextual prerequisites. The only implied usage is for searching patents by applicant name, but this is redundant with the purpose statement and offers no decision-making help.

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 updates
    • First observedkipris_get_citing_patents
    • First observedkipris_get_patent_detail
    • First observedkipris_search_patents

TDQS

B3.2/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: one retrieves patents citing a specific patent, another gets detailed information for a single patent, and the third searches patents by applicant name. The descriptions clearly differentiate these functions, making tool selection unambiguous for an agent.

Naming Consistency5/5

All tool names follow a consistent 'kipris_verb_noun' pattern (kipris_get_citing_patents, kipris_get_patent_detail, kipris_search_patents). This uniform naming convention makes the tool set predictable and easy to understand, with no deviations in style or structure.

Tool Count3/5

With only 3 tools, the set feels thin for a patent domain that typically involves more operations like updating, deleting, or analyzing patents. While the tools cover basic retrieval and search, the count is borderline low for comprehensive patent management, limiting agent capabilities.

Completeness2/5

The tool surface has significant gaps for a patent server, lacking essential operations such as creating, updating, or deleting patents, as well as advanced features like patent analysis or filtering by other criteria. This incompleteness will likely cause agent failures in handling full patent workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers