Context7
Up-to-date docs for AI agents
제작자가 쓴 설명(영어 원문)
Check whether a name is already a registered or pending trademark in the US or the EU.
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
USPTO_TSDR_API_KEY_FILE, EUIPO_CLIENT_ID_FILE, EUIPO_CLIENT_SECRET_FILE필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"trademarks": {
"command": "npx",
"args": [
"-y",
"@foreverworks/mcp-trademarks"
],
"env": {
"USPTO_TSDR_API_KEY_FILE": "your-value",
"EUIPO_CLIENT_ID_FILE": "your-value",
"EUIPO_CLIENT_SECRET_FILE": "your-value"
}
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add trademarks --env USPTO_TSDR_API_KEY_FILE=your-value --env EUIPO_CLIENT_ID_FILE=your-value --env EUIPO_CLIENT_SECRET_FILE=your-value -- npx -y @foreverworks/mcp-trademarks실행하기 전에 빈 값을 채워 주세요.
프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"trademarks": {
"command": "npx",
"args": [
"-y",
"@foreverworks/mcp-trademarks"
],
"env": {
"USPTO_TSDR_API_KEY_FILE": "your-value",
"EUIPO_CLIENT_ID_FILE": "your-value",
"EUIPO_CLIENT_SECRET_FILE": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"trademarks": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@foreverworks/mcp-trademarks"
],
"env": {
"USPTO_TSDR_API_KEY_FILE": "your-value",
"EUIPO_CLIENT_ID_FILE": "your-value",
"EUIPO_CLIENT_SECRET_FILE": "your-value"
}
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
USPTO_TSDR_API_KEY_FILE envEUIPO_CLIENT_ID_FILE envEUIPO_CLIENT_SECRET_FILE env이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검
레지스트리 이름이 도메인 foreverworks.com 기준으로 확인되었어요(레지스트리가 도메인 소유를 확인해요)
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.1.2)은 4일 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.
같은 카테고리에는: Context7, Codebase Memory, Exa
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
Up-to-date docs for AI agents
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
Check from your AI assistant whether a name is already a registered or pending trademark in the US (USPTO) and the EU (EUIPO), by Nice class and by the words of a mark's goods and services, before you buy the domain or draw the logo. Read one mark, and follow a US mark's file step by step, its documents saved as a PDF. Every tool only reads public registers: nothing is filed, and the one file written is that PDF, in the server's own outbox.
You need nothing to search the US: no account and no key. A US mark's history and documents need a free USPTO TSDR API key. EU marks need an EUIPO app's client id and secret with a Trademark Search subscription, which EUIPO approves by hand (allow a week or more). Romania's OSIM, WIPO and the other national offices are not searched, and every result says so.
With Claude Code:
claude mcp add trademarks -- npx -y @foreverworks/mcp-trademarks
Claude Desktop (Settings, Developer, Edit Config) and most other clients read the same command as JSON:
{
"mcpServers": { "trademarks": { "command": "npx", "args": ["-y", "@foreverworks/mcp-trademarks"] } } }
Each runs the published package on Node 22.19 or newer. VS Code and the Claude Desktop bundle ask for each setting as they add the server; leave an optional one empty. Cursor reads each from your environment instead (${env:USPTO_TSDR_API_KEY_FILE} and so on), so set them before you start Cursor. Every setting is optional; Configuration says which ones you need for which tools.
git clone https://github.com/foreverworks/mcps.git && cd mcps
npm ci && npm run build claude mcp add trademarks -- node "$PWD/servers/trademarks/dist/index.js"
In a JSON configuration, the command is node and its one argument the full path of servers/trademarks/dist/index.js. To share one running copy between several clients over HTTP, see docs/deploying.md.
Every setting is optional. A missing credential never stops the server: its source shows as not_configured in health, a search marks its office as not searched, and the TSDR tools answer a config failure, each with the remedy.
| Variable | Required | Meaning |
|---|---|---|
USPTO_TSDR_API_KEY_FILE | for US files | File holding a USPTO TSDR API key (USPTO_TSDR_API_KEY for a local run). |
EUIPO_CLIENT_ID_FILE, EUIPO_CLIENT_SECRET_FILE | for EM | Files holding the EUIPO app's client id and secret (EUIPO_CLIENT_ID and EUIPO_CLIENT_SECRET for a local run). |
EUIPO_ENVIRONMENT | no | production (unset) or sandbox, which holds test data. |
TRADEMARKS_SOURCES | no | Which sources run, comma-separated: uspto, euipo, tsdr. Unset is all three. |
TRADEMARKS_OUTBOX_DIR | no | Where download_mark_documents saves its PDFs; default outbox/ in the state folder. Files are 0640, so a deployment can share the folder with the user's group. |
TRADEMARKS_STATE_DIR | no | The state folder; the default is in docs/configuration.md. |
TRADEMARKS_USPTO_URL | no | The USPTO search backend's base; unset is https://tmsearch.uspto.gov/prod-stage-v1-0-0/. |
TRADEMARKS_TSDR_URL | no | TSDR's base; unset is https://tsdrapi.uspto.gov/ts/cd. |
What each tool needs:
| Tools | Office | Needs |
|---|---|---|
search_marks, get_mark | US | Nothing. |
search_marks, get_mark | EM | The EUIPO client id and secret, with an approved subscription. |
mark_history, mark_documents, download_mark_documents | US | The TSDR API key. |
USPTO_TSDR_API_KEY_FILE at it. A key expires after a year; the manager shows when, and renews it.health shows EM as pending.The server reaches tmsearch.uspto.gov, tsdrapi.uspto.gov, api.euipo.europa.eu and euipo.europa.eu (the token endpoint), and, when the sandbox is used, api-sandbox.euipo.europa.eu and auth-sandbox.euipo.europa.eu; a deployment that sets MCP_EGRESS_ALLOW must allow them. The variables every server shares (transport, limits, egress) are in docs/configuration.md.
health check: each source's state, with what it needs. ok is true when at least one source searches and no configured source fails, so pending and not_configured do not fail a deployment's health check.Every tool is read: it changes nothing anywhere, and download_mark_documents writes only into the server's own outbox.
| Tool | Access | What it does |
|---|---|---|
health | read | Each source's state (ok, not_configured with what it needs, pending while the register approves access, failing), whether it is an official API, what similar reaches there, and the offices no source covers, with the reason. |
search_marks | read | One name in every office at once (or the ones named). Per office: the marks found, closest first, with status, owners, classes, filing date, the office's link and a similarity score, and counts per relation. One request per office. |
get_mark | read | One mark by office and number: status, owners, each class's goods and services (cut at 600 characters), and the dates the office publishes (filing and registration from both; the status date and expiry from EUIPO only, since USPTO's search gives neither). |
mark_history | read | A US mark's status in USPTO's words, with its code and date, and every step of its file, newest first, from USPTO's official TSDR API. |
mark_documents | read | The documents in a US mark's file, newest first: date, type code, description, incoming or outgoing, pages. |
download_mark_documents | read | The documents a type code and a date window pick, as one PDF in the outbox, with its path, SHA-256 and size. Without a filter it is the whole file, hundreds of pages for an old mark. USPTO allows 4 a minute. |
search_marks takes the name as written (a name, not a pattern: no *); offices (EM, US, RO, WO, default all four, so those not searched say so); classes (Nice classes 1 to 45, default every class); goods, words that must appear together, in order, in a mark's goods and services; match: exact (the mark is the name), word (it contains the name) or similar (the default: also what sounds alike or is a letter off); status: live (the default: registered and pending) or all; and limit, the marks listed per office (1 to 100, default 20).
An office says `searched: false`. Read its reason or error. RO and WO are never searched here, and the reason says where a person can look; EM with a config error means no EUIPO credentials yet. An office not searched is not clear.
`config` from the TSDR tools. There is no TSDR key: get one (above), or read the mark's file by hand at tsdr.uspto.gov.
`auth`. From TSDR: check in the API key manager that the key is a TSDR API key (an Open Data Portal key is refused) and has not expired. From EUIPO: compare the client id and secret with the app's, under Apps at dev.euipo.europa.eu.
`subscription`, or EM `pending` in `health`. EUIPO accepted the app but not the call: its Trademark Search subscription is missing or still waiting for approval (step 3). Until then, search EU marks by hand at https://euipo.europa.eu/eSearch.
`not_found`. A USPTO serial number has 8 digits, an EUIPO application number 9, leading zeros included.
`unsupported`. That office has no source here, or EM was asked for a mark's file, which EUIPO's API does not give. The message says where to look.
`rate_limited`. The register was still throttling after three tries (TSDR allows 60 reads a minute and 4 document downloads): wait a minute and ask for less at a time.
`api`. A refusal, a server error that outlived its retries, or no connection (status 0). Retry in a minute; if it persists, run health. A 401 or 403 from USPTO's search may mean it now requires its page's browser challenge, which this server never answers.
`drift`. The register answered in a shape this server does not know, or re
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요