j-platpat-mcp
MCP server that wraps the official JPO patent information API to enable retrieval of patent, trademark, and design records for known case numbers.
README
j-platpat-mcp
j-platpat-mcp is a public MCP server scaffold for the official JPO patent information acquisition API (特許情報取得API).
This repository intentionally wraps the official API layer and does not scrape the J-PlatPat web UI. It also does not use unofficial Google Patents scraping or fallback endpoints.
What This Repo Is
- A stdio MCP server for local MCP clients such as Codex, Claude Desktop, Cline, and similar tools.
- A retrieval-oriented wrapper around the official JPO endpoints for patent, trademark, and selected shared utilities.
- A starting point for an internal-first architecture where search is handled by a separate bulk-data index.
What This Repo Is Not
- Not a J-PlatPat browser automation project.
- Not a full-text patent search engine.
- Not a Google Patents scraper or metadata enrichment proxy.
- Not a substitute for reading and complying with the JPO / INPIT terms of use.
Why This Shape
The official API is strongest when you already know a case number, applicant, or document family you want to retrieve. It is not a drop-in replacement for J-PlatPat's interactive UI search.
That makes a practical architecture look like this:
- Use the official JPO API as the evidence-grade retrieval layer.
- Add a separate internal search/index layer later for natural-language or broader discovery workflows.
This repository implements step 1 cleanly so step 2 can be added later without throwing away the MCP interface.
For a direct map of MCP tools to wrapped JPO endpoints, see docs/tool-coverage.md. For contribution and maintenance guidance, see CONTRIBUTING.md and docs/repository-settings.md.
Included Tools
The current scaffold exposes these MCP tools:
lookup_number_relationget_patent_progressget_patent_progress_simpleget_patent_citationsget_patent_documentsget_patent_registrationget_patent_divisional_app_infoget_patent_familyget_patent_family_listget_patent_global_cite_classget_patent_global_doc_listget_patent_global_documentget_patent_jp_documentget_patent_pct_national_phase_application_numberget_patent_priority_right_app_infoget_design_progressget_design_progress_simpleget_design_registrationget_design_documentsget_design_priority_right_app_infoget_trademark_progressget_trademark_progress_simpleget_trademark_registrationget_trademark_documentsget_trademark_priority_right_app_inforesolve_applicant_codeget_jplatpat_permalink
The document tools map the official split endpoints into one MCP tool with a documentKind switch:
opinion_amendmentrefusal_reasonrefusal_reason_decision
Features
- Password grant and refresh-token grant support against
https://ip-data.jpo.go.jp/auth/token - Automatic bearer token handling
- In-memory cache for repeated reads
- Simple minimum-interval throttling per process
- Mock smoke test for auth / retry / cache behavior without live JPO credentials
- TypeScript + current MCP TypeScript SDK scaffold
Practical Use Cases
This server is most useful after a person has already identified a target case and wants to retrieve official records quickly.
- Patent or trademark teams checking prosecution progress for a known application number
- Attorney or paralegal workflows that need registration details and official document bundles
- Internal tools that want a stable J-PlatPat permalink for case handoff or record review
- Applicant-name or applicant-code resolution before pulling detailed case data
In other words, this repository is realistic as a retrieval MCP for known cases. It is not yet a replacement for exploratory prior-art search or similar-mark search.
Requirements
- Node.js 20+
- A registered JPO API account
- JPO-issued ID and password
Official registration and documents:
利用申請
この MCP は J-PlatPat の画面をスクレイピングせず、特許庁の公式 特許情報取得API を使います。
利用には、特許庁から発行される ID / パスワードが必要です。2026年3月11日時点では、特許庁の案内ページにある利用申込書を記入し、PA0630@jpo.go.jp へメール送付して申請します。
申請案内:
技術資料:
認証まわりの要点:
- トークン取得先は
https://ip-data.jpo.go.jp/auth/token grant_type=passwordでアクセストークン取得grant_type=refresh_tokenでアクセストークン再取得- アクセストークンは 1 時間
- リフレッシュトークンは 8 時間
Setup
Install dependencies:
npm install
Copy the example environment file:
Copy-Item .env.example .env
Fill in your credentials in .env:
JPO_USERNAME=your-issued-id
JPO_PASSWORD=your-issued-password
JPO_BASE_URL=https://ip-data.jpo.go.jp
JPO_API_BASE_PATH=/api
JPO_AUTH_PATH=/auth/token
JPO_USER_AGENT=j-platpat-mcp/0.1.0
JPO_CACHE_TTL_MS=300000
JPO_MIN_INTERVAL_MS=250
JPO_REQUEST_TIMEOUT_MS=30000
Run in development:
npm run dev:local
dev:local and start:local will load .env from the repository root when present, and otherwise continue with the current process environment.
The built-in .env loader accepts common UTF-8 .env files, including files with a UTF-8 BOM from Windows editors.
If credentials are not configured, the server can still start and expose tool metadata, but JPO-backed tool calls will return a clear configuration error instead of failing during startup.
Invalid JPO_BASE_URL, JPO_API_BASE_PATH, or JPO_AUTH_PATH values now fail fast during startup with a configuration message.
Build for production:
npm run build
Run the mock smoke test without real JPO credentials:
npm run test:mock
Run an MCP-level smoke test that validates tool registration and publication-number normalization without real JPO credentials:
npm run test:mcp
Run a smoke test that verifies the server still starts without credentials and returns a deterministic configuration error on JPO API calls:
npm run test:no-credentials
Run config validation checks for URL settings and UTF-8 BOM .env handling:
npm run test:config
Run non-JSON response checks for auth/API endpoints:
npm run test:non-json
Run endpoint parity check against api_reference.js:
npm run check:coverage
Run parity check against both local and official api_reference.js:
npm run check:api-parity:remote
Run parity check against official reference and create a GitHub issue when drift is found:
npm run check:api-parity:remote:issue
If API coverage drift is detected and you want to automatically open a GitHub issue (when running in CI with GITHUB_TOKEN and GITHUB_REPOSITORY), run:
node scripts/check-api-parity.mjs --create-issue
In this mode, the check generates a stable drift fingerprint and skips creating a duplicate issue when an open issue with the same fingerprint already exists.
To verify the local api_reference.js against the latest official JPO guide reference:
node scripts/check-api-parity.mjs --check-remote
(--check-remote can be combined with --create-issue when run in CI with credentials.)
What this verifies today:
- password-grant login
- refresh-token re-authentication
- bearer-token attachment on API calls
- one retry after
401 - cache hits on repeated reads
Run the built server with local .env loading:
npm run start:local
動作確認
ID / パスワード発行後は、まず .env を埋めてから起動します。
JPO_USERNAME=your-issued-id
JPO_PASSWORD=your-issued-password
最初の確認としては、MCP を経由する前に JPO API 自体へログインできるかを見るのが確実です。
PowerShell 例:
$body = @{
grant_type = "password"
username = "your-issued-id"
password = "your-issued-password"
}
Invoke-RestMethod `
-Method Post `
-Uri "https://ip-data.jpo.go.jp/auth/token" `
-ContentType "application/x-www-form-urlencoded" `
-Body $body
access_token が返れば認証成功です。
その後、このリポジトリの MCP を起動します。
npm run dev:local
このサーバは次のような「番号が分かっている案件」の取得に向いています。
get_patent_progressget_design_progressget_patent_registrationget_design_registrationget_trademark_progresslookup_number_relation
例えば get_patent_progress では、10桁の出願番号を渡して公式 API の patent/v1/app_progress/{出願番号} を呼びます。
利用上の注意
このリポジトリは検索 UI の代替ではありません。公式 API は取得系が中心なので、自由語検索や探索的な検索は別途インデックス層を足す前提です。
また、アクセス数は ID 単位で管理されるため、キャッシュと簡易レート制御を入れています。
MCP Client Example
Most MCP clients want explicit environment variables in their config. Example:
{
"mcpServers": {
"j-platpat": {
"command": "node",
"args": [
"C:/path/to/j-platpat-mcp/dist/index.js"
],
"env": {
"JPO_USERNAME": "your-issued-id",
"JPO_PASSWORD": "your-issued-password",
"JPO_BASE_URL": "https://ip-data.jpo.go.jp",
"JPO_API_BASE_PATH": "/api",
"JPO_AUTH_PATH": "/auth/token",
"JPO_USER_AGENT": "j-platpat-mcp/0.1.0",
"JPO_CACHE_TTL_MS": "300000",
"JPO_MIN_INTERVAL_MS": "250",
"JPO_REQUEST_TIMEOUT_MS": "30000"
}
}
}
}
Compliance Notes
- This repository is designed around the official JPO API, not J-PlatPat screen scraping.
- Unofficial J-PlatPat session endpoints and Google Patents scraping paths are intentionally out of scope for this server.
- You must obtain credentials and follow the API terms and handbook.
- Access counts are managed per ID, so cache and rate control are enabled by default.
resolve_applicant_codeuses exact-match applicant names because that is how the official endpoint works.
If you plan to publish a third-party SaaS or multi-tenant service, review the JPO terms very carefully before doing so.
Current Limits
- No bulk-data ingestion layer yet
- No free-text search index yet
- No fixture-based tests yet
- No live verification against a JPO-issued production account in this repository
Validation Status
This repository has not yet been verified in a live production JPO API environment.
What has been validated locally:
npm run checknpm run buildnpm run test:mocknpm run test:mcpnpm run test:no-credentialsnpm run test:confignpm run test:non-jsonnpm run check:coverage- stdio MCP startup with and without configured JPO credentials
What still needs a real JPO account:
- live
/auth/tokenverification - response-shape confirmation against production data
- access-count behavior under real usage
- end-to-end checks for each wrapped endpoint
Roadmap
- Add bulk-data ingestion for
特許情報標準データ/ download service snapshots - Build a separate search index layer for natural-language and exploratory workflows
- Add coverage for any remaining official endpoint families not in the public endpoint list
- Add response fixtures and regression tests
- Add optional Streamable HTTP transport for remote internal deployment
Publishing Checklist
- Adjust
package.jsonauthor metadata if you want a different display name - Update the MCP client path example for your actual install path
- Decide whether you want MIT as-is or another license
- Add your own issue templates, CI gates, and release process
Official References
These are the main sources this scaffold follows:
Notable confirmed details reflected in this scaffold:
- Access tokens are obtained at
/auth/token - Refresh uses the same
/auth/tokenendpoint withgrant_type=refresh_token - Access token validity is 1 hour and refresh token validity is 8 hours
- The official notice dated 2026-03-02 states domestic API access limits were relaxed
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。