github Python re-analysis due

malkreide/swiss-ip-mcp

github

MCP server for Swiss intellectual property data – trademarks, patents, SPC/ESZ via the IGE/IPI Swissreg API

maintainer
malkreide
license
MIT
first seen
2026-06-07
last seen
2026-08-24
releases · 30d
2
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 11 tools
transport stdio · streamable-http · http · sse verified reported listed in the official MCP registry counts 11 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • swiss_ip_get_patent
  • swiss_ip_get_quota
  • swiss_ip_get_trademark
  • swiss_ip_search_patent_publications
  • swiss_ip_search_patents
  • swiss_ip_search_patents_by_applicant
  • swiss_ip_search_recent_filings
  • swiss_ip_search_spc
  • swiss_ip_search_trademarks
  • swiss_ip_search_trademarks_by_class
  • swiss_ip_search_trademarks_by_owner
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit d875e17 · analyzer v32 · 1w ago

danger signals1

code evidence vv1.1.6 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 14

filesystem 8

  • fs malkreide-swiss-ip-mcp-d875e17/audits/gen_findings.py :14 from pathlib import Path
  • fs (weak) malkreide-swiss-ip-mcp-d875e17/scripts/check_version_sync.py :35 from pathlib import Path
  • fs (weak) malkreide-swiss-ip-mcp-d875e17/scripts/classify_live_run.py :55 from pathlib import Path
  • fs (weak) malkreide-swiss-ip-mcp-d875e17/scripts/record_fixtures.py :59 from pathlib import Path
  • fs (weak) malkreide-swiss-ip-mcp-d875e17/scripts/update_tool_manifest.py :14 import pathlib
  • fs (weak) malkreide-swiss-ip-mcp-d875e17/tests/test_adressen.py :15 from pathlib import Path
  • fs (weak) malkreide-swiss-ip-mcp-d875e17/tests/test_classify_live_run.py :21 from pathlib import Path
  • fs (weak) malkreide-swiss-ip-mcp-d875e17/tests/test_server.py :865 import pathlib # noqa: E402

network 3

  • net (weak) malkreide-swiss-ip-mcp-d875e17/scripts/record_fixtures.py :61 import httpx
  • net malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :23 from urllib.parse import urlparse
  • net (weak) malkreide-swiss-ip-mcp-d875e17/tests/test_server.py :153 import httpx

secrets 2

  • secrets (weak) malkreide-swiss-ip-mcp-d875e17/scripts/record_fixtures.py :202 if not os.environ.get("IGE_PASSWORD"):
  • secrets malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :138 password = os.getenv("IGE_PASSWORD", "")

tool registrations 11

  • swiss_ip_search_trademarks malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :704
  • swiss_ip_search_trademarks_by_owner malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :741
  • swiss_ip_get_trademark malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :781
  • swiss_ip_search_trademarks_by_class malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :822
  • swiss_ip_search_patents malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :873
  • swiss_ip_get_patent malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :910
  • swiss_ip_search_patents_by_applicant malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :950
  • swiss_ip_search_patent_publications malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :988
  • swiss_ip_search_spc malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :1031
  • swiss_ip_search_recent_filings malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :1071
  • swiss_ip_get_quota malkreide-swiss-ip-mcp-d875e17/src/swiss_ip_mcp/server.py :1123

declared dependencies 9

  • fastmcp@>=2.0.0
  • s@decision.
  • opentelemetry-sdk@>=1.20.0
  • opentelemetry-exporter-otlp-proto-http@>=1.20.0
  • opentelemetry-instrumentation-httpx@>=0.40b0
  • ruff@>=0.4.0
  • pytest@>=8.0.0
  • pytest-asyncio@>=0.23.0
  • respx@>=0.21.0