Turkish Legal Databases MCP server

Integrates with Turkish legal databases to provide unified search and retrieval of court decisions from Yargitay, Danistay, Constitutional Court, and UYAP Emsal systems in Markdown format.
Back to servers
Provider
Said Surucu
Release date
May 22, 2025
Stats
255 stars

This MCP server provides programmatic access to various Turkish legal databases through a standardized interface, allowing LLM applications like Claude Desktop or 5ire to search and retrieve legal documents from courts including the Court of Cassation, Council of State, Constitutional Court, and more.

Installation

Installation for 5ire and Other MCP Clients

Prerequisites

  • Python: Install Python 3.11 or higher. Make sure to check "Add Python to PATH" during installation. Download Python
  • Git (Windows users): Install Git for Windows by downloading the "Git for Windows/x64 Setup" option
  • Microsoft Visual C++ Redistributable (Windows users): Required for certain Python packages. Download here

Install the uv Package Manager

  • Windows (PowerShell): Run in CMD:
    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
    
  • Mac/Linux (Terminal): Run:
    curl -LsSf https://astral.sh/uv/install.sh | sh
    

Configure in 5ire

  1. Install 5ire for your operating system
  2. Open 5ire and add your LLM service API key in Workspace → Providers
  3. Go to Tools menu and click +Local or New
  4. Enter the following information:
    • Tool Key: yargimcp
    • Name: Yargı MCP
    • Command:
      uvx --from git+https://github.com/saidsurucu/yargi-mcp yargi-mcp
      
  5. Click Save
  6. Activate the tool by clicking the button next to "Yargı MCP" in the Tools list (it should turn green)

Manual Installation for Claude Desktop

  1. Ensure Python, uv, and (for Windows) Microsoft Visual C++ Redistributable are installed as described above
  2. Open Claude Desktop and go to Settings → Developer → Edit Config
  3. Add the following to the mcpServers section in the claude_desktop_config.json file:
    {
      "mcpServers": {
        "Yargı MCP": {
          "command": "uvx",
          "args": [
            "--from", "git+https://github.com/saidsurucu/yargi-mcp",
            "yargi-mcp"
          ]
        }
      }
    }
    
  4. Restart Claude Desktop

Available Tools

Court of Cassation (Yargıtay) Tools

Main API

  • Search Decisions:

    search_yargitay_detailed(arananKelime, birimYrgKurulDaire, ...)
    

    Searches Court of Cassation decisions with detailed criteria and 52 chamber/board filtering options

  • Get Document:

    get_yargitay_document_markdown(id: str)
    

    Retrieves the text of a specific Court of Cassation decision in Markdown format

Bedesten API (Alternative)

  • Search Decisions:

    search_yargitay_bedesten(phrase, birimAdi, kararTarihiStart, kararTarihiEnd, ...)
    

    Searches using Bedesten API with date filtering and exact phrase search

  • Get Document:

    get_yargitay_bedesten_document_markdown(documentId: str)
    

    Retrieves decision text from Bedesten converted to Markdown

Council of State (Danıştay) Tools

Main APIs

  • Keyword Search:

    search_danistay_by_keyword(andKelimeler, orKelimeler, ...)
    

    Searches Council of State decisions using keywords

  • Detailed Search:

    search_danistay_detailed(daire, esasYil, ...)
    

    Searches with detailed criteria

  • Get Document:

    get_danistay_document_markdown(id: str)
    

    Retrieves the text of a specific decision in Markdown format

Bedesten API (Alternative)

  • Search Decisions:

    search_danistay_bedesten(phrase, birimAdi, kararTarihiStart, kararTarihiEnd, ...)
    

    Searches using Bedesten API with 27 chamber/board options, date filtering, and exact phrase search

  • Get Document:

    get_danistay_bedesten_document_markdown(documentId: str)
    

    Retrieves decision text from Bedesten

Other Courts (Bedesten API)

Local Civil Courts

  • Search Decisions:

    search_yerel_hukuk_bedesten(phrase, kararTarihiStart, kararTarihiEnd, ...)
    

    Searches local civil court decisions with date and exact phrase search

  • Get Document:

    get_yerel_hukuk_bedesten_document_markdown(documentId: str)
    

    Retrieves decision text

Appellate Civil Courts

  • Search Decisions:

    search_istinaf_hukuk_bedesten(phrase, kararTarihiStart, kararTarihiEnd, ...)
    

    Searches appellate court decisions with date and exact phrase search

  • Get Document:

    get_istinaf_hukuk_bedesten_document_markdown(documentId: str)
    

    Retrieves decision text

Extraordinary Appeal (KYB)

  • Search Decisions:

    search_kyb_bedesten(phrase, kararTarihiStart, kararTarihiEnd, ...)
    

    Searches extraordinary appeal decisions with date and exact phrase search

  • Get Document:

    get_kyb_bedesten_document_markdown(documentId: str)
    

    Retrieves decision text

Precedent (Emsal) Decisions Tools

  • Search Decisions:

    search_emsal_detailed_decisions(search_query: EmsalSearchRequest) -> CompactEmsalSearchResult
    

    Searches precedent (UYAP) decisions with detailed criteria

  • Get Document:

    get_emsal_document_markdown(id: str) -> EmsalDocumentMarkdown
    

    Retrieves the text of a specific precedent decision in Markdown format

Conflict Court (Uyuşmazlık Mahkemesi) Tools

  • Search Decisions:

    search_uyusmazlik_decisions(search_params: UyusmazlikSearchRequest) -> UyusmazlikSearchResponse
    

    Searches Conflict Court decisions with various form criteria

  • Get Document:

    get_uyusmazlik_document_markdown_from_url(document_url: HttpUrl) -> UyusmazlikDocumentMarkdown
    

    Retrieves a Conflict Court decision from its URL in Markdown format

Constitutional Court (Norm Review) Tools

  • Search Decisions:

    search_anayasa_norm_denetimi_decisions(search_query: AnayasaNormDenetimiSearchRequest) -> AnayasaSearchResult
    

    Searches Constitutional Court norm review decisions with comprehensive criteria

  • Get Document:

    get_anayasa_norm_denetimi_document_markdown(document_url: str, page_number: Optional[int] = 1) -> AnayasaDocumentMarkdown
    

    Retrieves a Constitutional Court norm review decision by URL with paginated content

Constitutional Court (Individual Application) Tools

  • Search Decisions:

    search_anayasa_bireysel_basvuru_report(search_query: AnayasaBireyselReportSearchRequest) -> AnayasaBireyselReportSearchResult
    

    Creates a "Decision Search Report" for Constitutional Court individual applications

  • Get Document:

    get_anayasa_bireysel_basvuru_document_markdown(document_url_path: str, page_number: Optional[int] = 1) -> AnayasaBireyselBasvuruDocumentMarkdown
    

    Retrieves a Constitutional Court individual application decision by URL path with paginated content

Public Procurement Authority (KİK) Tools

  • Search Decisions:

    search_kik_decisions(search_query: KikSearchRequest) -> KikSearchResult
    

    Searches Public Procurement Authority decisions

  • Get Document:

    get_kik_document_markdown(karar_id: str, page_number: Optional[int] = 1) -> KikDocumentMarkdown
    

    Retrieves a Public Procurement Authority decision using its Base64-encoded ID with paginated content

Competition Authority Tools

  • Search Decisions:

    search_rekabet_kurumu_decisions(KararTuru: Literal[...], ...) -> RekabetSearchResult
    

    Searches Competition Authority decisions using user-friendly names for decision types

  • Get Document:

    get_rekabet_kurumu_document(karar_id: str, page_number: Optional[int] = 1) -> RekabetDocument
    

    Retrieves a Competition Authority decision by ID, extracting the requested page from the original PDF and returning it in Markdown format

Advanced Features

Search Capabilities

  • Chamber Filtering: 79 options (52 for Court of Cassation, 27 for Council of State)
  • Date Filtering: ISO 8601 format (YYYY-MM-DDTHH:MM:SS.000Z) in 5 Bedesten API tools
  • Exact Phrase Search: Use double quotes in format "\"exact phrase\"" for precise searches

How to add this MCP server to Cursor

There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json file so that it is available in all of your projects.

If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json file.

Adding an MCP server to Cursor globally

To add a global MCP server go to Cursor Settings > MCP and click "Add new global MCP server".

When you click that button the ~/.cursor/mcp.json file will be opened and you can add your server like this:

{
    "mcpServers": {
        "cursor-rules-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "cursor-rules-mcp"
            ]
        }
    }
}

Adding an MCP server to a project

To add an MCP server to a project you can create a new .cursor/mcp.json file or add it to the existing one. This will look exactly the same as the global MCP server example above.

How to use the MCP server

Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.

The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.

You can also explictly ask the agent to use the tool by mentioning the tool name and describing what the function does.

Want to 10x your AI skills?

Get a free account and learn to code + market your apps using AI (with or without vibes!).

Nah, maybe later