PDFGate MCP Server vs Swiss Case Law
A side-by-side look at the PDFGate MCP Server and Swiss Case Law MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose PDFGate MCP Server for legal work as a local process; choose Swiss Case Law for legal. You can also run both side by side in one mcpServers block.
Which MCP server should you choose?
Choose PDFGate MCP Server when
- You need dedicated capabilities in the Legal domain.
- You prefer a local stdio subprocess transport.
- Its auth model fits you: API key required.
- You have the keys it needs:
PDFGATE_API_KEY. - You want tools like
generate_pdf, upload_file, get_document.
Choose Swiss Case Law when
- You need dedicated capabilities in the Legal domain.
- Its auth model fits you: No auth required.
- You want tools like
search, fetch, search_decisions.
Feature & specification comparison
Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Legal | Legal |
| Quality signal | 61/100 · Good | 59/100 · Good |
| Install command | Confirmed | Not confirmed yet |
| Transport | Local subprocess (stdio) | — |
| Auth | API key required | No auth required |
| Pricing | BYOK (pay the provider) | Free |
| Required env vars | PDFGATE_API_KEY | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 0 | 75 |
| Directory activity | 5 views 0 installs 0 upvotes | 3 views 0 installs 0 upvotes |
| Tools | 24 | 42 |
| Full listing | View PDFGate MCP Server | View Swiss Case Law |
Tools & capabilities
PDFGate MCP Server tools 24
generate_pdfGenerate a PDF from a URL or raw HTML. Provide either 'url' or 'html', not both.upload_fileUpload a PDF to PDFGate so it can be referenced by other operations. Provide either 'filePath' (local path) or 'url'.get_documentRetrieve metadata for a stored PDFGate document by its ID.delete_documentDelete a PDFGate document.flatten_pdfFlatten an interactive PDF into a static, non-editable PDF. Creates a new document; does not overwrite the original.extract_form_dataExtract form field values from a fillable PDF. Returns a JSON object mapping field names to their values.add_form_fieldsAdd interactive form fields to a stored PDF — from placeholder tags (refined via fieldOverrides) and/or explicitly positioned fields.compress_pdfCompress/optimise a PDF to reduce file size without changing visual content.protect_pdfEncrypt a PDF with a password and optional permission restrictions. Produces a new document; the original is unchanged.watermark_pdfApply a text or image watermark to a PDF. For type='text' provide 'text'; for type='image' provide 'watermarkImagePath'.download_fileDownload the raw PDF bytes of a stored document, returned as an embedded resource. For a shareable link instead, use get_document.create_envelopeCreate a signing envelope from one or more existing PDFGate documents. Each recipient is given either as email and name or as the recipientId of a stored recipient. Recipients marked embedded sign inside your application via create_embed_link and receive no emails. Use signingOrder to make recipients sign in sequence. Returns an envelope in 'created' status; call send_envelope to dispatch signing emails.- +12 more on the listing page
Swiss Case Law tools 42
searchMinimal search tool following the deep-research search/fetch convention. Returns a ranked list of Swiss court decisions matching a query, each as {id, title, url, snippet}. Pair with `fetch` to retrieve a decision's full text by id. General (non-deep-research) clients should prefer `search_decisions`, which exposes filters (court, canton, date, language) and richer metadata.fetchMinimal fetch tool following the deep-research search/fetch convention. Fetches one Swiss decision's full text by id, returning {id, title, text, url, metadata}. The id comes from a `search` result (a decision_id like bger_6B_1234_2025; a docket number or BGE reference also resolves). General clients should prefer `get_decision`.search_decisionsUse this tool to find COURT DECISIONS (Rechtsprechung): 1,050,000+ Swiss federal and cantonal decisions plus ~2,800 ECtHR decisions concerning Switzerland. Full-text search with keywords, phrases (in quotes), Boolean operators (AND, OR, NOT), prefix matching (word*), docket lookup (6B_1234/2025) and column-scoped search (regeste:keyword). Filter by court, canton, language, date range, chamber. Results are relevance-ranked and enriched with citation counts, statute references and is_leading_case. Use offset to page. Most recent decisions: empty query + sort='date_desc' + court filter. Newly PUBLISHED decisions (alerts): published_from + sort='published_desc'. Not for statutes (search_laws), commentary (search_scholarship), or administrative guidance (search_practice).get_decisionFetch a single court decision with full text. Look up by decision_id (e.g., bger_6B_1234_2025), docket number (e.g., 6B_1234/2025), or partial match. Full text is truncated at 200,000 characters for very long decisions. Set full_text=false to get only metadata and regeste.get_decisionsUse this tool to fetch SEVERAL decisions at once (1-10 ids) instead of calling get_decision repeatedly. Same data per decision — canonical citation strings, Markdown link, Regeste, metadata — in ONE call. Prefer this whenever you are about to read more than one decision from a search result: it is the difference between one tool call and ten, which matters because clients cap tool calls per turn. full_text defaults to FALSE here (unlike get_decision) because ten full judgments exceed connector response limits; set it true only for a short id list, and each text is excerpted with the cut disclosed. Ids not found are reported individually — the rest of the batch still returns.list_courtsList all available courts with decision counts, date ranges, and language coverage. Use this to discover what data is available.get_statisticsGet aggregate statistics about the dataset. Optionally filter by court, canton, or year.find_citationsGiven a decision_id, show what it cites and what cites it. Uses the reference graph database with 9.65M citation edges. Returns resolved citations with confidence scores and unresolved references.find_appeal_chainTrace the appeal chain (Instanzenzug) for a decision. Shows prior instances (lower courts) and subsequent instances (appeals to higher courts). Reconstructs the full procedural path, e.g. Bezirksgericht → Obergericht → Bundesgericht. Uses the is_prior_instance flag from decision headers.find_leading_casesFind the most-cited decisions for a topic or statute. Authority ranking based on citation graph; a free-text topic ranks decisions whose regeste carries the query terms first (`regeste_match`: share of terms found, null without a regeste). Filter by statute (law_code + article), topic query, court, and date range. Top-3 results auto-attach a `pinpoint` field {e_number, matched_sentence, confidence, url, score, source} anchoring the most-relevant Erwägung (surface it as 'E. <e_number>' when confidence is high or medium). Each result also carries citation_string_{de,fr,it} + canonical_url + is_leading_case + citation_count for ready-to-quote Swiss-format citations. A statute reference inside `query` ("Art. 29 BV") is used as the statute filter. When the query excludes every candidate, the page is relaxed to ranked OR and flagged `filters_relaxed: true` with a `note` — nearest neighbours, not on-point authority.analyze_legal_trendYear-by-year decision counts showing jurisprudence evolution. Use with a statute reference (law_code + article), a text query, or both. Returns yearly counts with visual bar chart.draft_mock_decisionBuild a research-only mock decision outline from user facts. Combines relevant Swiss case law retrieval with statute references. If possible, enriches statutes with Fedlex text excerpts. IMPORTANT: The tool may return clarification questions (high/medium priority). High-priority clarifications must be answered (via the clarifications parameter) before the tool will provide a conclusion. Call again with clarifications to get the full analysis.- +30 more on the listing page
Ready-to-paste client configs
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
PDFGate MCP Server
{
"mcpServers": {
"mcp-server-37": {
"command": "npx",
"args": [
"-y",
"@pdfgate/mcp-server"
],
"env": {
"PDFGATE_API_KEY": "YOUR_PDFGATE_API_KEY_HERE"
}
}
}
}
Swiss Case Law
No confirmed install command for Swiss Case Law yet — follow the setup steps linked from its listing page rather than a guessed package name.
Frequently asked questions
PDFGate MCP Server is categorized under Legal and uses a local stdio subprocess. Swiss Case Law belongs to Legal and uses an install path we have not confirmed yet. Pick PDFGate MCP Server for legal work and Swiss Case Law for legal.
Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client. Swiss Case Law has no confirmed install command yet — follow its own setup instructions.
PDFGate MCP Server is bring-your-own-key: usage is billed by the API provider you supply a key for. Auth: api key required. Swiss Case Law is listed as free. Auth: no auth required. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.
Yes. MCP clients support multiple servers: add mcp-server-37 and swiss-case-law as separate keys in the same mcpServers object, and your assistant will call tools from either one.
On AllMCPs, PDFGate MCP Server has a quality signal of 61/100 (Good) with 5 views, 0 installs and 0 GitHub stars. Swiss Case Law has 59/100 (Good) with 3 views, 0 installs and 75 GitHub stars.