Skip to main content
Glama

IP-MCP

License: MIT Python 3.12+ MCP CI GitHub release

Английский · 日本語

Запрашивайте японские патенты на естественном языке через Claude. IP-MCP оборачивает официальный «Patent Information Retrieval API» Японского патентного ведомства в MCP-сервер, поэтому Claude Desktop, Claude Code и iPhone Claude могут определять номера патентов, проверять статус регистрации, получать цитаты и просматривать семейства патентов пяти ведомств — 12 инструментов официального API плюс 1 намеренно изолированный инструмент поиска по ключевым словам.


Что можно спросить у Claude за 30 секунд

Вы: «Расскажи статус регистрации и уровень техники для JP-2010-228687».

Claude (под капотом):

  1. jpo_convert_patent_number → номер заявки 2009080841

  2. jpo_get_patent_registration → регистрация 5094774, Hitachi Ltd., истекает 2029-03-30, действует

  3. jpo_get_patent_citations → 20 ссылок на предшествующий уровень техники

Ответ: «Train Control Ground Equipment and System» (Hitachi Ltd.) был зарегистрирован как JP5094774 2012-09-28, в настоящее время действует, срок до 2029-03-30. 20 ссылок на предшествующий уровень техники из отчёта о поиске и оснований отказа — все патентная литература (непатентной нет)…

Поиск по ключевым словам вынесен в отдельный инструмент (external_search_patents_by_keyword, Google Patents XHR). LLM никогда не сможет случайно переключиться с официального API на неофициальный источник — каждый ответ содержит явное поле source.


Related MCP server: Patent Intelligence MCP

Как это сравнивается

J-PlatPat (ручной веб-интерфейс)

Собственная Flask-обёртка

IP-MCP

Прямой доступ к Google Patents

Источник данных

Официальный (JPO)

Официальный (JPO)

Официальный (JPO) + внешний (необ.)

Неофициальный

Преобразование номеров / ход / регистрация / цитаты

✓ (вручную)

Поиск по ключевым словам

△ (изолированный внешний инструмент)

Непосредственный вызов из LLM

❌ (REST + разбор нужен)

✅ нативный MCP

△ (нужен разбор HTML/JSON)

Различие официального и неофициального

единый источник

✅ обязательное поле source

Автоматический fallback

❌ запрещён (решает LLM)

Аутентификация

сессия

env

env или OAuth 2.1 (DCR + PKCE)

нет

Развёртывание

DIY

Docker Compose

Почему для поиска по ключевым словам предусмотрена отдельная категория инструментов?

Официальный JPO API ориентирован только на поиск по номеру — каждый эндпоинт принимает номер заявки / публикации / регистрации, код заявителя или точное совпадение имени заявителя. Поиск по ключевым словам / IPC / F-term / диапазону дат / частичному имени в спецификации отсутствует. Поэтому:

  • tools_official/ — имена начинаются с jpo_*, ответ {"source": "jpo_official", …}

  • tools_external/ — имена начинаются с external_*, ответ {"source": "google_patents_unofficial", …}

  • Пограничный тест запрещает любой import из tools_external/ в tools_official/. Запрещено автоматическое переключение — решает только LLM.


Архитектура

flowchart LR
    User["Claude Desktop /<br/>Claude Code /<br/>iPhone Claude"]
    CF["Cloudflare<br/>(Edge TLS + Tunnel)"]
    Caddy["Caddy<br/>(CF Origin Cert)"]

    User -->|"HTTPS + OAuth"| CF
    CF -->|"outbound from home<br/>via cloudflared"| Caddy
    Caddy -->|"http+SSE"| MCP

    subgraph Docker["Docker container (Python 3.12 + FastMCP)"]
      MCP["MCP server<br/>:8765"]
      Official["tools_official/<br/>(jpo_* 12 tools)"]
      External["tools_external/<br/>(external_* 1 tool)"]
      OAuth["OAuth 2.1<br/>SQLite-backed"]
      MCP --> Official
      MCP --> External
      MCP -.->|"persisted"| OAuth
    end

    Official -->|"OAuth2 password grant"| JPO[("JPO Patent API")]
    External -->|"3s spacing + 503 backoff"| GP[("Google Patents XHR")]

    classDef boundary stroke-dasharray: 5 5
    class External,GP boundary

Основные правила проектирования:

  • tools_official/ (официальный JPO) и tools_external/ (неофициальный Google Patents) полностью разделены на уровне иерархии кода, вызовов и логирования. Пограничный тест блокирует любой import из tools_external/ в tools_official/.

  • Повторная попытка допускается только в пределах одного источника данных (401 → обновление токена; 303 → экспоненциальная задержка). Автоматический переход между источниками при сбое запрещён — решает LLM.

  • Каждый ответ содержит {"source": "jpo_official"} или {"source": "google_patents_unofficial"}.


Быстрый старт

Локальная разработка

cp .env.example .env          # Fill in JPO_USERNAME / JPO_PASSWORD
chmod 600 .env
docker compose up -d --build

Развёртывание в LAN (без аутентификации)

Создайте docker-compose.override.yml, чтобы привязаться к вашему LAN-интерфейсу (в репозитории есть docker-compose.override.yml.example):

services:
  ip-mcp:
    ports:
      - "YOUR_SERVER_IP:8765:8765"   # your LAN IP

Конфигурация Claude Desktop / Code:

{
  "mcpServers": {
    "ip-mcp": {
      "transport": { "type": "sse", "url": "http://YOUR_SERVER_IP:8765/sse" }
    }
  }
}

Codex CLI поддерживает прямое HTTP MCP (codex mcp add --url) и ожидает Streamable HTTP, поэтому при прямом использовании из Codex регистрируйте путь /mcp:

CODEX_HOME=/path/to/codex-home codex mcp add ip-mcp --url https://your-host.example.com/mcp
CODEX_HOME=/path/to/codex-home codex mcp login ip-mcp

SSE-клиенты регистрируют /sse. Чтобы обслуживать и прямое HTTP-подключение Codex, и SSE-клиенты же одного публичного сервера, запускайте с MCP_TRANSPORT=both, чтобы открыть /mcp и /sse под одним OAuth-конфигом. Для одного клиента также подойдут MCP_TRANSPORT=sse (по умолчанию) или MCP_TRANSPORT=streamable-http.

iPhone Claude / claude.ai (публично, OAuth 2.1)

Для публичного доступа рекомендуется связка Cloudflare Tunnel + Caddy (CF Origin Cert) — cloudflared устанавливает исходящее соединие из вашей домашней сети к границе CF, поэтому проброс портов на роутере не нужен, а hairpin NAT не создаёт проблем. Традиционный обратный прокси с Let's Encrypt и прямым 443-портобразом также работает. В любом случае задайте MCP_OAUTH_MASTER_PASSWORD и MCP_OAUTH_ISSUER_URL, чтобы включить OAuth 2.1 (DCR + PKCE + мастер-пароль). Выданные клиентские токены сохраняются к SQLite и переживают перезапуски контейнера.

MCP_OAUTH_MASTER_PASSWORD=<24+ chars random>
MCP_OAUTH_ISSUER_URL=https://your-host.example.com
# optional: MCP_OAUTH_DB_PATH=/app/data/oauth.db

Полные детали развёртывания и эксплуатации см. в PLAN.md §9-§10 и OPERATIONS.md (пока на японском).


Список инструментов

Имя

Назначение

jpo_convert_patent_number

Преобразование номеров заявки / публикации / регистрации

jpo_get_patent_progress

Ход экспертизы (полный / упрощённый переключатель)

jpo_get_patent_registration

Информация о регистрации и статус прав

jpo_get_patent_citations

Цитируемые документы предшествующего уровня техники

jpo_get_divisional_apps

Выделенные заявки

jpo_get_priority_apps

Заявки, на которые испрашивается приоритет

jpo_lookup_applicant

Код заявителя ⇄ имя (только точное совпадение)

jpo_fetch plentiful documents

Документы делопроизводства / уведомления / отказы / изменения (работает со встроенными ZIP и подписанными URL)

jpo_get_jpp_url

Канонический URL J-PlatPat

jpo_get_opd_family

Семейство патентов пяти ведомств (JPO / USPTO / EPO / CNIPA / KIPO)

jpo_get_opd_doc_list

Список документов OPD

jpo_fetch_full_record

Составной инструмент высокого уровня, разворачивающийся на несколько официальных эндпоинтов (полностью внутри официалього API)

Ответ: {"ok": true, "source": "jpo_official", "data": {…}, "remaining_today": "…"}

Имя

Назначение

external_search_patents_by_keyword

Поиск японских патентов по свободному тексту / заявителю / IPC / диапазону дат (Google Patents XHR, для справки)

Ответ: {"ok": true, "source": "google_patents_unofficial", "data": {…}}

Изолированный, потому что официальный API не предоставляет поиск по ключевым словам (только по номеру). При сбое возвращает {"ok": false, "kind": "search_unavailable"} и никогда не переходит на официальный инструмент.


Ограничения частоты запросов (эксплуатация)

Официальный API JPO переиспользует оператору ответственность за соблюдение ограничений самим отправителем:

  • Ограничение в минуту: /api/patent/*10 запросов/мин, /opdapi/*5 запр/мин (OPD тарифицируется в собственном бакете).

  • Дневная квота: 30–800/день на эндпоинт (национальные квоты удвоены в марте 2026). Авторитетный счётчик — это result.remainAccessCount, возвращённый в каждом ответе.

  • jpo_fetch_full_record опрашивает 4 официальных эндпоинта параллельно, поэтому один вызов тратит 1 единицу из каждой из 4 отдельных суточных квот (не 4 из одной квоты). Узкое местоположение — наименьшая квота.

Соответствие инструментов эндпоинтам и операционные пороги см. в OPERATIONS.md §JPO API レート制約とクォータ (на японском).


Документация

  • 📐 PLAN.md — План проектирования (архитектура, полныйсписок инструментов, поэтапный план) [JP]

  • 🤖 CLAUDE.md — Руководство по Claude Code (непреложаемые правила проектирования, подводные камни JPO API) [JP]

  • 🔧 OPERATIONS.md — Оперирующая книга (сводка журнала доступа, ротация мастер-пароля, устранение проблем) [JP]


Плейсхолдер

Пример

Как добавить

YOUR_SERVER_IP

192.0.2.10

LAN-IP вашего хоузо развёртывания

<SSH_USER>

youruser

Пользователь SSH на хоусте

your-host.example.com

ваш домен

Публичное хоустnname за Cloudflare / обратным прокси

Привязка порта в docker-compose.yml по умолчанию равна 127.0.0.1:8765 (только для той же машины). Чтобы открыть доступ в LAN, создайте отдельный docker-compose.override.yml (уже находится .gitignore) для внесения изменения.

Лицензия

MIT — см. LICENSE.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
2Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language search of Japan's National Diet Library bibliographic database via Claude Desktop, allowing users to find books and academic materials using intuitive Japanese queries.
    6
  • A
    license
    B
    quality
    D
    maintenance
    Enables Claude Desktop to interact with freee accounting API for expense registration, transaction management, and receipt image processing.
    15
    1
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Appeared in Searches

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/kitepon/IP-MCP'

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