Skip to main content

MCP server for the BHt (Biblia Hebraica transcripta) Hebrew Bible database

Project description

bht-mcp

MCP server for the BHt (Biblia Hebraica transcripta) Hebrew Bible database at LMU Munich.

Ask your AI assistant to search, analyze, and compare 489,000+ morphologically analyzed Hebrew Bible tokens โ€” directly from your chat interface.

You:  "Using BHt, compare the use of root BRสพ (create) in Genesis vs Isaiah"
AI:   [calls bht_search with Wurzel filter for each book, then bht_token_detail
       on selected tokens โ€” returns morphological breakdowns, verbal stems,
       and syntactic contexts from both books]

๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด


About BHt

BHt (Biblia Hebraica transcripta) is a digital transcription of the Hebrew Bible maintained at LMU Munich under the direction of Prof. Wolfgang Richter. It features:

  • 489,437 tokens with full morphological analysis
  • Richter transcription system โ€” Latin-script phonemic representation (e.g., barฤ(สพ) for ื‘ึธึผืจึธื)
  • 5-class part-of-speech system (Hauptwortart, Nebenwortart, Fรผgwortart, etc.)
  • Syntactic trees at word-level (Wortfรผgungsebene) and sentence-level (Satzfรผgungsebene)
  • Textual criticism annotations with Greek/Masoretic manuscript variant data
  • 8 Sirach manuscript fragments (Ben Sira, from Cairo Genizah and Masada)

Table of Contents


How It Works

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  stdio  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  cache miss  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  MCP Client  โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’โ”‚  bht-mcp         โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’โ”‚  BHt Website โ”‚
โ”‚  (Claude,    โ”‚ โ†โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚  (local process) โ”‚ โ†โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚ (LMU Munich) โ”‚
โ”‚  local LLM,  โ”‚         โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚  etc.)       โ”‚         โ”‚  โ”‚ ~/.bht/    โ”‚  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ”‚  โ”‚ cache.db   โ”‚  โ”‚  โ† local SQLite cache
                         โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
                         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  • Runs entirely on your machine. No remote server, no API keys, no cost.
  • Progressive caching. The first search for a book fetches all its tokens in one request. After that, searches in the same book are instant โ€” zero network calls.
  • Respectful. Built-in rate limits (1 req/s, 150 HTML pages/day) protect the university server. The tool never bulk-scrapes.

Installation & Setup

Option A: Using uv (recommended)

With uv, you don't install bht-mcp yourself. Your MCP client runs uvx bht-mcp, and uvx automatically downloads it from PyPI, creates an isolated environment, and launches the server โ€” all at runtime.

You only need to install uv itself (one-time):

Platform Command
macOS brew install uv
Windows powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
Linux curl -LsSf https://astral.sh/uv/install.sh | sh

Then go directly to Setting Up Your MCP Client below.

Updating (uv): uvx caches packages locally. To get the latest version:

uv cache clean bht-mcp

Then restart your MCP client.

Option B: Using pip

Install bht-mcp manually, then point your MCP client to it:

pip install bht-mcp

Updating (pip):

pip install --upgrade bht-mcp

Requires Python 3.11+. If Python is not installed: python.org/downloads (Windows: check "Add Python to PATH"). macOS: brew install python. Linux: sudo apt install python3 python3-pip.


Setting Up Your MCP Client

MCP (Model Context Protocol) lets AI assistants use external tools. Choose your client below:

Claude Desktop

Edit your MCP settings (Settings โ†’ Developer โ†’ MCP Servers) and add:

If you installed with uv:

{
  "mcpServers": {
    "bht": {
      "command": "uvx",
      "args": ["bht-mcp"]
    }
  }
}

If you installed with pip:

{
  "mcpServers": {
    "bht": {
      "command": "python",
      "args": ["-m", "bht_mcp"]
    }
  }
}

Claude Code

claude mcp add bht -- uvx bht-mcp

Or with pip:

claude mcp add bht -- python -m bht_mcp

Local LLMs (Open WebUI, llama.cpp, Ollama, etc.)

If your local LLM setup supports MCP, configure it to launch bht-mcp as a stdio subprocess:

With uv:

{
  "mcpServers": {
    "bht": {
      "command": "uvx",
      "args": ["bht-mcp"]
    }
  }
}

With pip:

{
  "mcpServers": {
    "bht": {
      "command": "python",
      "args": ["-m", "bht_mcp"]
    }
  }
}

Note: MCP tool calling requires a model that supports function/tool calling. Most 7B+ instruction-tuned models work (Llama 3, Mistral, Qwen, etc.).

Other MCP-compatible clients

Any client that supports MCP stdio transport can use bht-mcp. Use uvx bht-mcp or python -m bht_mcp as the server command.

After adding, restart your client. You should see 7 BHt tools available.


Research Scenarios

Tip: Always mention "BHt" or "BHt database" in your prompt to ensure the AI uses the BHt tools instead of answering from its own knowledge. For example, say "Using BHt, show me..." rather than just "Show me...".

Note: The tool call sequences shown below are representative โ€” the actual steps may vary depending on the AI model's reasoning. The AI may explore deeper, take different paths, or combine steps differently. This is expected behavior.

1. Verse analysis โ€” word by word

"Using BHt, show me Genesis 1:1 word by word with grammatical analysis"

Step 1  AI calls bht_search โ†’ finds 11 tokens in Gen 1:1 (with beleg_nr for each)
Step 2  AI calls bht_token_detail(beleg_nr=N) for each token โ†’ retrieves full morphology

Results:

  Token          Part of Speech        Person  Gender  Number  Stem  Root
  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€
  bห™             Praeposition          โ€”       โ€”       โ€”       โ€”     โ€”
  rฤ“(สพ)ลกฤซt      Substantiv            โ€”       F       S       โ€”     Rสพลก
  barฤ(สพ)        Suffixkonjugation     3       M       S       Qal   BRสพ
  สพรฏlล*hฤซm      Substantiv            Abs     M       P       โ€”     สพL
  สพศงt            Praeposition          โ€”       โ€”       โ€”       โ€”     โ€”
  ha             Artikel               โ€”       โ€”       โ€”       โ€”     โ€”
  ลกamaym         Substantiv            โ€”       M       P       โ€”     ล MM
  wห™             Konjunktion           โ€”       โ€”       โ€”       โ€”     โ€”
  สพศงt            Praeposition          โ€”       โ€”       โ€”       โ€”     โ€”
  ha             Artikel               โ€”       โ€”       โ€”       โ€”     โ€”
  สพarแนฃ           Substantiv            โ€”       F       S       โ€”     สพRแนข

  BHt requests: 1 JSON search + 11 HTML token details = 12 total
  On repeat: 0 (all cached locally)

2. Cross-book root comparison

"Using BHt, compare the use of root BRสพ (create) in Genesis vs Isaiah"

Step 1  AI calls bht_search with Wurzel=BRสพ, buch=Gen โ†’ 17 tokens
        (server auto-resolves transcription "BRสพ" to betacode "%B%R%@")
Step 2  AI calls bht_search with Wurzel=BRสพ, buch=Jes โ†’ 21 tokens
Step 3  AI calls bht_token_detail(beleg_nr=N) on selected tokens

Results:

  Genesis โ€” 17 occurrences (11 verb BRสพ 1 "create" + 6 adj BRสพ 2 "fat"):
    Qal SK:    barฤ(สพ) โ€” "he created" (narrative perfect)
    Qal PK:    yibrฤ(สพ) โ€” wayyiqtol narrative
    Niphal:    hibbarรฏสพ-a โ€” passive infinitive

  Isaiah โ€” 21 occurrences (all verb BRสพ 1 "create"):
    Qal PTZ:   bลrฤ“(สพ) โ€” participle "Creator" (10 of 21 โ€” divine title)
    Qal SK 1cs: bศงrฤ(สพ)tฤซ โ€” "I created" (divine self-declaration)
    Niphal SK:  nibrศงสพลซ โ€” "they were created"

  First run:  2 JSON searches + ~8 HTML token details = ~10 total
  On full repeat: 0 (all cached)

3. Syntactic structure comparison

"Using BHt, compare the syntax of Genesis 1:1 and Exodus 2:1"

Step 1  AI calls bht_syntax_tree for Gen 1:1 (satz omitted โ†’ returns all sentences)
Step 2  AI calls bht_syntax_tree for Ex 2:1 (satz omitted โ†’ returns all sentences)

Results:

  Gen 1:1 โ€” 2 sentences (P, PR):
    P:  PV โ†’ [PRAEP: bห™, SUB: rฤ“(สพ)ลกฤซt]
    PR: KOORDV โ†’ [PV โ†’ [PRAEP, ATKV], KONJS โ†’ [KONJ, PV โ†’ [PRAEP, ATKV]]]

  Ex 2:1 โ€” 2 sentences (a, b):
    a: KONJV โ†’ [KONJ: wa, PK: yilik]
    b: KONJV โ†’ [KONJ: wa, PK: yiqqaแธฅ]

  First run:  2 syntax tree calls (each resolves internally) = ~6 HTML total
  On full repeat: 0 (all cached)

4. Textual criticism

"Using BHt, check for textual criticism annotations in Genesis 1"

Step 1  AI calls bht_text_annotations for Gen chapter 1

Results:

  Location       Token    Type  Annotation
  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  Gen 1,7c (3)   kin      TS    als 6d in G; G + 7c text added
  Gen 1,9b (9)   maqลm   T     G reads miqwวŸ, MT reads miqwฤ“-m?
  Gen 1,9d (3)   kin      TS    G + 9e text added
  Gen 1,20c (11) ลกamaym   TS    G + d text added

  Types: TS = text security note, T = text variant
  Manuscripts: G = Greek (Septuagint), MT = Masoretic Text

  First run:  1 HTML page (all annotations for entire chapter in one call)
  On repeat: 0 (cached)

5. Aramaic section detection in Daniel

"Using BHt, which parts of Daniel are in Aramaic rather than Hebrew?"

Step 1  AI calls bht_field_info for "sprache" โ†’ discovers language codes
Step 2  AI calls bht_search with buch=Dan, sprache=fa:f+ โ†’ Aramaic tokens
Step 3  AI calls bht_search with buch=Dan, sprache=fh:f+ โ†’ Hebrew tokens

Results:

  Language  Chapters        Token count
  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  Hebrew    1:1โ€“2:4a        ~250 tokens
  Aramaic   2:4bโ€“7:28       ~4,800 tokens
  Hebrew    8:1โ€“12:13       ~2,100 tokens

  The AI identifies the well-known bilingual structure of Daniel
  directly from the linguistic data โ€” no manual chapter lookup needed.

  First run:  1 JSON autocomplete + 2 JSON searches (Aramaic + Hebrew) = 3 total
  On repeat: 0 (all cached)

Tool Reference

Tool Purpose BHt Requests
bht_list_books List all 47 books with codes and chapter counts 0
bht_field_info Get valid values for any of 42 search fields 0โ€“1
bht_search Search tokens by location or morphological filters 0โ€“1
bht_token_detail Full morphological analysis of a single token 0โ€“1
bht_syntax_tree Word-level syntactic tree (Wortfรผgungsebene) 0โ€“2
bht_sentence_analysis Sentence-level analysis (Satzfรผgungsebene) 0โ€“2
bht_text_annotations Textual criticism annotations for a chapter 0โ€“1

Typical workflow: bht_search โ†’ bht_token_detail(beleg_nr) โ†’ bht_syntax_tree

Every response includes a quota field showing daily usage:

{
  "data": [...],
  "quota": {"daily_html_used": 12, "daily_html_limit": 150, "daily_html_remaining": 138}
}

Rate Limits

This tool accesses a university research server. Built-in limits protect it:

Limit Value Reason
Request interval 1 req/s Server capacity protection
Daily HTML requests 150/day Token detail, syntax, sentence, annotation pages
Daily JSON requests Unlimited Search API is lightweight

These limits are comparable to a researcher manually browsing the site (typically 25โ€“100 pages/day). The daily limit resets at midnight.

When the limit is reached, cached data remains fully accessible โ€” only new HTML fetches are blocked.


License

Code: MIT

BHt data: CC BY-SA 4.0 (LMU Munich)


๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด

AI ์–ด์‹œ์Šคํ„ดํŠธ์—๊ฒŒ ํžˆ๋ธŒ๋ฆฌ์–ด ์„ฑ๊ฒฝ 489,000๊ฐœ ์ด์ƒ์˜ ํ˜•ํƒœ๋ก  ๋ถ„์„ ํ† ํฐ์„ ๊ฒ€์ƒ‰, ๋ถ„์„, ๋น„๊ตํ•˜๋„๋ก ์š”์ฒญํ•˜์„ธ์š” โ€” ์ฑ„ํŒ… ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ๋ฐ”๋กœ.

์‚ฌ์šฉ์ž: "BHt์—์„œ ์ฐฝ์„ธ๊ธฐ์™€ ์ด์‚ฌ์•ผ์˜ ์–ด๊ทผ BRสพ(์ฐฝ์กฐํ•˜๋‹ค) ์‚ฌ์šฉ์„ ๋น„๊ตํ•ด์ค˜"
AI:    [๊ฐ ์ฑ…์—์„œ ์–ด๊ทผ ํ•„ํ„ฐ๋กœ bht_search๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , ์„ ํƒ๋œ ํ† ํฐ์— ๋Œ€ํ•ด
        bht_token_detail์„ ํ˜ธ์ถœ โ€” ๋‘ ์ฑ…์˜ ํ˜•ํƒœ๋ก  ๋ถ„์„, ๋™์‚ฌ ์–ด๊ฐ„,
        ํ†ต์‚ฌ์  ๋งฅ๋ฝ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค]

BHt ์†Œ๊ฐœ

BHt (Biblia Hebraica transcripta)๋Š” ๋ฎŒํ—จ ๋Œ€ํ•™๊ต(LMU Munich)์—์„œ Wolfgang Richter ๊ต์ˆ˜์˜ ์ง€๋„ ์•„๋ž˜ ๊ด€๋ฆฌ๋˜๋Š” ํžˆ๋ธŒ๋ฆฌ์–ด ์„ฑ๊ฒฝ ๋””์ง€ํ„ธ ์ „์‚ฌ๋ณธ์ž…๋‹ˆ๋‹ค.

  • 489,437๊ฐœ ํ† ํฐ โ€” ์™„์ „ํ•œ ํ˜•ํƒœ๋ก  ๋ถ„์„ ํฌํ•จ
  • Richter ์ „์‚ฌ ์ฒด๊ณ„ โ€” ๋ผํ‹ด ๋ฌธ์ž ๊ธฐ๋ฐ˜ ์Œ์†Œ ํ‘œ๊ธฐ (์˜ˆ: barฤ(สพ) = ื‘ึธึผืจึธื)
  • 5๋ถ„๋ฅ˜ ํ’ˆ์‚ฌ ์ฒด๊ณ„ (Hauptwortart, Nebenwortart, Fรผgwortart ๋“ฑ)
  • ํ†ต์‚ฌ ํŠธ๋ฆฌ โ€” ๋‹จ์–ด ์ˆ˜์ค€(Wortfรผgungsebene) ๋ฐ ๋ฌธ์žฅ ์ˆ˜์ค€(Satzfรผgungsebene)
  • ํ…์ŠคํŠธ ๋น„ํ‰ ์ฃผ์„ โ€” ๊ทธ๋ฆฌ์Šค์–ด/๋งˆ์†Œ๋ผ ์‚ฌ๋ณธ ์ด๋ณธ ๋ฐ์ดํ„ฐ
  • ์‹œ๋ผํฌ ์‚ฌ๋ณธ ๋‹จํŽธ 8์ข… (๋ฒค ์‹œ๋ผ, ์นด์ด๋กœ ๊ฒŒ๋‹ˆ์ž ๋ฐ ๋งˆ์‚ฌ๋‹ค ์ถœํ† )

์ž‘๋™ ๋ฐฉ์‹

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  stdio  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  cache miss  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  MCP Client  โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’โ”‚  bht-mcp         โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’โ”‚  BHt Website โ”‚
โ”‚  (Claude,    โ”‚ โ†โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚  (local process) โ”‚ โ†โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”‚ (LMU Munich) โ”‚
โ”‚  local LLM,  โ”‚         โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚  etc.)       โ”‚         โ”‚  โ”‚ ~/.bht/    โ”‚  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜         โ”‚  โ”‚ cache.db   โ”‚  โ”‚  โ† local SQLite cache
                         โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
                         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  • ์™„์ „ํžˆ ๋กœ์ปฌ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์›๊ฒฉ ์„œ๋ฒ„ ์—†์Œ, API ํ‚ค ์—†์Œ, ๋น„์šฉ ์—†์Œ.
  • ์ ์ง„์  ์บ์‹ฑ. ํŠน์ • ์ฑ…์„ ์ฒ˜์Œ ๊ฒ€์ƒ‰ํ•˜๋ฉด ํ•ด๋‹น ์ฑ…์˜ ์ „์ฒด ํ† ํฐ์„ 1ํšŒ ์š”์ฒญ์œผ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ดํ›„ ๊ฐ™์€ ์ฑ…์˜ ๊ฒ€์ƒ‰์€ ์ฆ‰์‹œ โ€” ๋„คํŠธ์›Œํฌ ์š”์ฒญ 0ํšŒ.
  • ์„œ๋ฒ„ ๋ณดํ˜ธ. ๋‚ด์žฅ ์†๋„ ์ œํ•œ(์ดˆ๋‹น 1์š”์ฒญ, ์ผ์ผ HTML 150๊ฑด)์ด ๋Œ€ํ•™ ์„œ๋ฒ„๋ฅผ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋Ÿ‰ ์Šคํฌ๋ž˜ํ•‘์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์„ค์น˜ ๋ฐ ์„ค์ •

๋ฐฉ๋ฒ• A: uv ์‚ฌ์šฉ (๊ถŒ์žฅ)

uv๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด bht-mcp๋ฅผ ์ง์ ‘ ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. MCP ํด๋ผ์ด์–ธํŠธ๊ฐ€ uvx bht-mcp๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, uvx๊ฐ€ ์ž๋™์œผ๋กœ PyPI์—์„œ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜์—ฌ ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

uv๋งŒ ์„ค์น˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค (์ตœ์ดˆ 1ํšŒ):

ํ”Œ๋žซํผ ๋ฐฉ๋ฒ•
macOS brew install uv
Windows powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
Linux curl -LsSf https://astral.sh/uv/install.sh | sh

์„ค์น˜ ํ›„ ์•„๋ž˜ MCP ํด๋ผ์ด์–ธํŠธ ์„ค์ •์œผ๋กœ ๋ฐ”๋กœ ์ง„ํ–‰ํ•˜์„ธ์š”.

์—…๋ฐ์ดํŠธ (uv): uvx๋Š” ํŒจํ‚ค์ง€๋ฅผ ๋กœ์ปฌ์— ์บ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์„ ๋ฐ›์œผ๋ ค๋ฉด:

uv cache clean bht-mcp

์ดํ›„ MCP ํด๋ผ์ด์–ธํŠธ๋ฅผ ์žฌ์‹œ์ž‘ํ•˜์„ธ์š”.

๋ฐฉ๋ฒ• B: pip ์‚ฌ์šฉ

bht-mcp๋ฅผ ์ง์ ‘ ์„ค์น˜ํ•œ ํ›„ MCP ํด๋ผ์ด์–ธํŠธ์—์„œ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹:

pip install bht-mcp

์—…๋ฐ์ดํŠธ (pip):

pip install --upgrade bht-mcp

Python 3.11 ์ด์ƒ ํ•„์š”. Python์ด ์—†๋Š” ๊ฒฝ์šฐ: python.org/downloads (Windows: "Add Python to PATH" ์ฒดํฌ). macOS: brew install python. Linux: sudo apt install python3 python3-pip.


MCP ํด๋ผ์ด์–ธํŠธ ์„ค์ •

MCP (Model Context Protocol)๋Š” AI ์–ด์‹œ์Šคํ„ดํŠธ๊ฐ€ ์™ธ๋ถ€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ ์‚ฌ์šฉ ์ค‘์ธ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ ํƒํ•˜์„ธ์š”:

Claude Desktop

MCP ์„ค์ •์„ ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค (Settings โ†’ Developer โ†’ MCP Servers):

uv๋กœ ์„ค์น˜ํ•œ ๊ฒฝ์šฐ:

{
  "mcpServers": {
    "bht": {
      "command": "uvx",
      "args": ["bht-mcp"]
    }
  }
}

pip์œผ๋กœ ์„ค์น˜ํ•œ ๊ฒฝ์šฐ:

{
  "mcpServers": {
    "bht": {
      "command": "python",
      "args": ["-m", "bht_mcp"]
    }
  }
}

Claude Code

claude mcp add bht -- uvx bht-mcp

pip ์‚ฌ์šฉ ์‹œ:

claude mcp add bht -- python -m bht_mcp

๋กœ์ปฌ LLM (Open WebUI, llama.cpp, Ollama ๋“ฑ)

๋กœ์ปฌ LLM ํ™˜๊ฒฝ์ด MCP๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ, bht-mcp๋ฅผ stdio ์„œ๋ธŒํ”„๋กœ์„ธ์Šค๋กœ ์„ค์ •ํ•˜์„ธ์š”:

uv ์‚ฌ์šฉ:

{
  "mcpServers": {
    "bht": {
      "command": "uvx",
      "args": ["bht-mcp"]
    }
  }
}

pip ์‚ฌ์šฉ:

{
  "mcpServers": {
    "bht": {
      "command": "python",
      "args": ["-m", "bht_mcp"]
    }
  }
}

์ฐธ๊ณ : MCP tool calling์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํ•จ์ˆ˜/๋„๊ตฌ ํ˜ธ์ถœ์„ ์ง€์›ํ•˜๋Š” ๋ชจ๋ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ 7B+ instruction-tuned ๋ชจ๋ธ์ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค (Llama 3, Mistral, Qwen ๋“ฑ).

๊ธฐํƒ€ MCP ํ˜ธํ™˜ ํด๋ผ์ด์–ธํŠธ

MCP stdio ์ „์†ก์„ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ ๋ช…๋ น์–ด๋Š” uvx bht-mcp ๋˜๋Š” python -m bht_mcp์ž…๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ํ›„ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์žฌ์‹œ์ž‘ํ•˜๋ฉด 7๊ฐœ์˜ BHt ๋„๊ตฌ๊ฐ€ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.


์—ฐ๊ตฌ ์‹œ๋‚˜๋ฆฌ์˜ค

ํŒ: ํ”„๋กฌํ”„ํŠธ์— ํ•ญ์ƒ "BHt" ๋˜๋Š” "BHt ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค"๋ฅผ ์–ธ๊ธ‰ํ•˜์„ธ์š”. AI๊ฐ€ ์ž์ฒด ์ง€์‹ ๋Œ€์‹  BHt ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์œ ๋„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: "BHt์—์„œ ~๋ฅผ ํ™•์ธํ•ด์ค˜".

์ฐธ๊ณ : ์•„๋ž˜์˜ ๋„๊ตฌ ํ˜ธ์ถœ ์ˆœ์„œ๋Š” ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค โ€” ์‹ค์ œ ๋‹จ๊ณ„๋Š” AI ๋ชจ๋ธ์˜ ์ถ”๋ก ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AI๊ฐ€ ๋” ๊นŠ์ด ํƒ์ƒ‰ํ•˜๊ฑฐ๋‚˜, ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋ฅผ ํƒํ•˜๊ฑฐ๋‚˜, ๋‹จ๊ณ„๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์กฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ •์ƒ์ ์ธ ๋™์ž‘์ž…๋‹ˆ๋‹ค.

1. ๊ตฌ์ ˆ ๋ถ„์„ โ€” ๋‹จ์–ด๋ณ„ ๋ฌธ๋ฒ•

"BHt์—์„œ ์ฐฝ์„ธ๊ธฐ 1:1์„ ๋‹จ์–ด๋ณ„๋กœ ๋ฌธ๋ฒ• ๋ถ„์„๊ณผ ํ•จ๊ป˜ ๋ณด์—ฌ์ฃผ์„ธ์š”"

๋‹จ๊ณ„ 1  AI๊ฐ€ bht_search ํ˜ธ์ถœ โ†’ Gen 1:1์—์„œ 11๊ฐœ ํ† ํฐ ๋ฐœ๊ฒฌ (๊ฐ ํ† ํฐ์˜ beleg_nr ํฌํ•จ)
๋‹จ๊ณ„ 2  AI๊ฐ€ bht_token_detail(beleg_nr=N) ํ˜ธ์ถœ โ†’ ์™„์ „ํ•œ ํ˜•ํƒœ๋ก  ์กฐํšŒ

๊ฒฐ๊ณผ:

  ํ† ํฐ           ํ’ˆ์‚ฌ                  ์ธ์นญ  ์„ฑ    ์ˆ˜    ์–ด๊ฐ„  ์–ด๊ทผ
  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€
  bห™             ์ „์น˜์‚ฌ(Praeposition)  โ€”     โ€”     โ€”     โ€”     โ€”
  rฤ“(สพ)ลกฤซt      ๋ช…์‚ฌ(Substantiv)      โ€”     F     S     โ€”     Rสพลก
  barฤ(สพ)        ์ ‘๋ฏธํ˜•(Suffixkonj.)   3     M     S     Qal   BRสพ
  สพรฏlล*hฤซm      ๋ช…์‚ฌ(Substantiv)      Abs   M     P     โ€”     สพL
  สพศงt            ์ „์น˜์‚ฌ(Praeposition)  โ€”     โ€”     โ€”     โ€”     โ€”
  ha             ๊ด€์‚ฌ(Artikel)         โ€”     โ€”     โ€”     โ€”     โ€”
  ลกamaym         ๋ช…์‚ฌ(Substantiv)      โ€”     M     P     โ€”     ล MM
  wห™             ์ ‘์†์‚ฌ(Konjunktion)   โ€”     โ€”     โ€”     โ€”     โ€”
  สพศงt            ์ „์น˜์‚ฌ(Praeposition)  โ€”     โ€”     โ€”     โ€”     โ€”
  ha             ๊ด€์‚ฌ(Artikel)         โ€”     โ€”     โ€”     โ€”     โ€”
  สพarแนฃ           ๋ช…์‚ฌ(Substantiv)      โ€”     F     S     โ€”     สพRแนข

  BHt ์š”์ฒญ: JSON ๊ฒ€์ƒ‰ 1ํšŒ + HTML ํ† ํฐ ์ƒ์„ธ 11ํšŒ = ์ด 12ํšŒ
  ๋ฐ˜๋ณต ์‹œ: 0ํšŒ (์ „๋ถ€ ๋กœ์ปฌ ์บ์‹œ)

2. ์ฑ… ๊ฐ„ ์–ด๊ทผ ๋น„๊ต

"BHt์—์„œ ์ฐฝ์„ธ๊ธฐ์™€ ์ด์‚ฌ์•ผ์—์„œ ์–ด๊ทผ BRสพ(์ฐฝ์กฐํ•˜๋‹ค)์˜ ์‚ฌ์šฉ์„ ๋น„๊ตํ•ด์ค˜"

๋‹จ๊ณ„ 1  AI๊ฐ€ bht_search (Wurzel=BRสพ, buch=Gen) ํ˜ธ์ถœ โ†’ 17๊ฐœ ํ† ํฐ
        (์„œ๋ฒ„๊ฐ€ transcription "BRสพ"๋ฅผ betacode "%B%R%@"๋กœ ์ž๋™ ํ•ด์„)
๋‹จ๊ณ„ 2  AI๊ฐ€ bht_search (Wurzel=BRสพ, buch=Jes) ํ˜ธ์ถœ โ†’ 21๊ฐœ ํ† ํฐ
๋‹จ๊ณ„ 3  AI๊ฐ€ bht_token_detail(beleg_nr=N) ํ˜ธ์ถœ โ†’ ์„ ํƒ๋œ ํ† ํฐ์˜ ์–ด๊ฐ„๊ณผ ํ˜•ํƒœ ๋น„๊ต

๊ฒฐ๊ณผ:

  ์ฐฝ์„ธ๊ธฐ โ€” 17ํšŒ ์ถœํ˜„ (๋™์‚ฌ BRสพ 1 "์ฐฝ์กฐํ•˜๋‹ค" 11ํšŒ + ํ˜•์šฉ์‚ฌ BRสพ 2 "์‚ด์ฐ" 6ํšŒ):
    ์นผ(Qal) SK:    barฤ(สพ) โ€” ์„œ์‚ฌ ์™„๋ฃŒํ˜• "์ฐฝ์กฐํ•˜์˜€๋‹ค"
    ์นผ(Qal) PK:    yibrฤ(สพ) โ€” wayyiqtol ์„œ์‚ฌ
    ๋‹ˆํŒ”(Niphal):   hibbarรฏสพ-a โ€” ์ˆ˜๋™ ๋ถ€์ •์‚ฌ

  ์ด์‚ฌ์•ผ โ€” 21ํšŒ ์ถœํ˜„ (์ „๋ถ€ ๋™์‚ฌ BRสพ 1 "์ฐฝ์กฐํ•˜๋‹ค"):
    ์นผ(Qal) ๋ถ„์‚ฌ:  bลrฤ“(สพ) โ€” "์ฐฝ์กฐํ•˜์‹œ๋Š” ๋ถ„" (21ํšŒ ์ค‘ 10ํšŒ โ€” ์‹ ์  ์นญํ˜ธ)
    ์นผ(Qal) SK 1์ธ์นญ: bศงrฤ(สพ)tฤซ โ€” "๋‚ด๊ฐ€ ์ฐฝ์กฐํ–ˆ๋‹ค" (์‹ ์  ์ž๊ธฐ์„ ์–ธ)
    ๋‹ˆํŒ”(Niphal) SK:  nibrศงสพลซ โ€” "์ฐฝ์กฐ๋˜์—ˆ๋‹ค"

  ์ตœ์ดˆ ์‹คํ–‰: JSON ๊ฒ€์ƒ‰ 2ํšŒ + HTML ํ† ํฐ ์ƒ์„ธ ~8ํšŒ = ์ด ~10ํšŒ
  ์ „์ฒด ๋ฐ˜๋ณต ์‹œ: 0ํšŒ (์ „๋ถ€ ์บ์‹œ)

3. ํ†ต์‚ฌ ๊ตฌ์กฐ ๋น„๊ต

"BHt์—์„œ ์ฐฝ์„ธ๊ธฐ 1:1๊ณผ ์ถœ์• ๊ตฝ๊ธฐ 2:1์˜ ํ†ต์‚ฌ ๊ตฌ์กฐ๋ฅผ ๋น„๊ตํ•ด์ฃผ์„ธ์š”"

๋‹จ๊ณ„ 1  AI๊ฐ€ bht_syntax_tree (Gen 1:1) ํ˜ธ์ถœ โ†’ satz ์ƒ๋žต, ๋ชจ๋“  ๋ฌธ์žฅ ์ž๋™ ๋ฐ˜ํ™˜
๋‹จ๊ณ„ 2  AI๊ฐ€ bht_syntax_tree (Ex 2:1) ํ˜ธ์ถœ โ†’ satz ์ƒ๋žต, ๋ชจ๋“  ๋ฌธ์žฅ ์ž๋™ ๋ฐ˜ํ™˜

๊ฒฐ๊ณผ:

  Gen 1:1 โ€” 2๊ฐœ ๋ฌธ์žฅ (P, PR):
    P:  PV โ†’ [PRAEP: bห™, SUB: rฤ“(สพ)ลกฤซt]
    PR: KOORDV โ†’ [PV โ†’ [PRAEP, ATKV], KONJS โ†’ [KONJ, PV โ†’ [PRAEP, ATKV]]]

  Ex 2:1 โ€” 2๊ฐœ ๋ฌธ์žฅ (a, b):
    a: KONJV โ†’ [KONJ: wa, PK: yilik]
    b: KONJV โ†’ [KONJ: wa, PK: yiqqaแธฅ]

  ์ตœ์ดˆ ์‹คํ–‰: syntax tree 2ํšŒ ํ˜ธ์ถœ (๊ฐ๊ฐ ๋‚ด๋ถ€ ํ•ด์„ ํฌํ•จ) = HTML ~6ํšŒ
  ์ „์ฒด ๋ฐ˜๋ณต ์‹œ: 0ํšŒ (์ „๋ถ€ ์บ์‹œ)

4. ํ…์ŠคํŠธ ๋น„ํ‰

"BHt์—์„œ ์ฐฝ์„ธ๊ธฐ 1์žฅ์˜ ํ…์ŠคํŠธ ๋น„ํ‰ ์ฃผ์„์„ ํ™•์ธํ•ด์ฃผ์„ธ์š”"

๋‹จ๊ณ„ 1  AI๊ฐ€ bht_text_annotations (Gen, 1์žฅ) ํ˜ธ์ถœ

๊ฒฐ๊ณผ:

  ์œ„์น˜            ํ† ํฐ     ์œ ํ˜•  ์ฃผ์„
  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  Gen 1,7c (3)    kin      TS    6d๋กœ์„œ G์—; G์— 7c ํ…์ŠคํŠธ ์ถ”๊ฐ€
  Gen 1,9b (9)    maqลm   T     G๋Š” miqwวŸ, MT๋Š” miqwฤ“-m?
  Gen 1,9d (3)    kin      TS    G์— 9e ํ…์ŠคํŠธ ์ถ”๊ฐ€
  Gen 1,20c (11)  ลกamaym   TS    G์— d ํ…์ŠคํŠธ ์ถ”๊ฐ€

  ์œ ํ˜•: TS = ํ…์ŠคํŠธ ํ™•์‹ค์„ฑ ์ฃผ์„, T = ํ…์ŠคํŠธ ์ด๋ณธ
  ์‚ฌ๋ณธ: G = ๊ทธ๋ฆฌ์Šค์–ด(70์ธ์—ญ), MT = ๋งˆ์†Œ๋ผ ๋ณธ๋ฌธ

  ์ตœ์ดˆ ์‹คํ–‰: HTML 1ํšŒ (์žฅ ์ „์ฒด ์ฃผ์„์„ ํ•œ ๋ฒˆ์— ์กฐํšŒ)
  ๋ฐ˜๋ณต ์‹œ: 0ํšŒ (์บ์‹œ)

5. ๋‹ค๋‹ˆ์—˜์„œ ์•„๋žŒ์–ด ๊ตฌ๊ฐ„ ์‹๋ณ„

"BHt์—์„œ ๋‹ค๋‹ˆ์—˜์„œ์˜ ์•„๋žŒ์–ด ๊ตฌ๊ฐ„์„ ์‹๋ณ„ํ•ด์ฃผ์„ธ์š”"

๋‹จ๊ณ„ 1  AI๊ฐ€ bht_field_info ("sprache") ํ˜ธ์ถœ โ†’ ์–ธ์–ด ์ฝ”๋“œ ๋ฐœ๊ฒฌ
๋‹จ๊ณ„ 2  AI๊ฐ€ bht_search (buch=Dan, sprache=fa:f+) ํ˜ธ์ถœ โ†’ ์•„๋žŒ์–ด ํ† ํฐ
๋‹จ๊ณ„ 3  AI๊ฐ€ bht_search (buch=Dan, sprache=fh:f+) ํ˜ธ์ถœ โ†’ ํžˆ๋ธŒ๋ฆฌ์–ด ํ† ํฐ

๊ฒฐ๊ณผ:

  ์–ธ์–ด     ์žฅ               ํ† ํฐ ์ˆ˜
  โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  ํžˆ๋ธŒ๋ฆฌ์–ด  1:1โ€“2:4a         ~250๊ฐœ
  ์•„๋žŒ์–ด    2:4bโ€“7:28        ~4,800๊ฐœ
  ํžˆ๋ธŒ๋ฆฌ์–ด  8:1โ€“12:13        ~2,100๊ฐœ

  AI๊ฐ€ ์ž˜ ์•Œ๋ ค์ง„ ๋‹ค๋‹ˆ์—˜์„œ์˜ ์ด์ค‘ ์–ธ์–ด ๊ตฌ์กฐ๋ฅผ ์–ธ์–ดํ•™ ๋ฐ์ดํ„ฐ์—์„œ
  ์ง์ ‘ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค โ€” ์ˆ˜๋™ ์žฅ ์กฐํšŒ ์—†์ด.

  ์ตœ์ดˆ ์‹คํ–‰: JSON ์ž๋™์™„์„ฑ 1ํšŒ + JSON ๊ฒ€์ƒ‰ 2ํšŒ (์•„๋žŒ์–ด + ํžˆ๋ธŒ๋ฆฌ์–ด) = ์ด 3ํšŒ
  ๋ฐ˜๋ณต ์‹œ: 0ํšŒ (์ „๋ถ€ ์บ์‹œ)

๋„๊ตฌ ์ฐธ์กฐ

๋„๊ตฌ ์šฉ๋„ BHt ์š”์ฒญ ์ˆ˜
bht_list_books 47๊ฐœ ์ฑ… ๋ชฉ๋ก (์ฝ”๋“œ์™€ ์žฅ ์ˆ˜ ํฌํ•จ) 0
bht_field_info 42๊ฐœ ๊ฒ€์ƒ‰ ํ•„๋“œ์˜ ์œ ํšจํ•œ ๊ฐ’ ์กฐํšŒ 0โ€“1
bht_search ์œ„์น˜ ๋˜๋Š” ํ˜•ํƒœ๋ก  ํ•„ํ„ฐ๋กœ ํ† ํฐ ๊ฒ€์ƒ‰ 0โ€“1
bht_token_detail ๋‹จ์ผ ํ† ํฐ์˜ ์™„์ „ํ•œ ํ˜•ํƒœ๋ก  ๋ถ„์„ 0โ€“1
bht_syntax_tree ๋‹จ์–ด ์ˆ˜์ค€ ํ†ต์‚ฌ ํŠธ๋ฆฌ (Wortfรผgungsebene) 0โ€“2
bht_sentence_analysis ๋ฌธ์žฅ ์ˆ˜์ค€ ๋ถ„์„ (Satzfรผgungsebene) 0โ€“2
bht_text_annotations ์žฅ ๋‹จ์œ„ ํ…์ŠคํŠธ ๋น„ํ‰ ์ฃผ์„ 0โ€“1

์ผ๋ฐ˜์ ์ธ ์›Œํฌํ”Œ๋กœ์šฐ: bht_search โ†’ bht_token_detail(beleg_nr) โ†’ bht_syntax_tree

๋ชจ๋“  ์‘๋‹ต์— ์ผ์ผ ์‚ฌ์šฉ๋Ÿ‰์„ ๋ณด์—ฌ์ฃผ๋Š” quota ํ•„๋“œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค:

{
  "data": [...],
  "quota": {"daily_html_used": 12, "daily_html_limit": 150, "daily_html_remaining": 138}
}

์‚ฌ์šฉ ์ œํ•œ

์ด ๋„๊ตฌ๋Š” ๋Œ€ํ•™ ์—ฐ๊ตฌ ์„œ๋ฒ„์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค. ๋‚ด์žฅ๋œ ์ œํ•œ์ด ์„œ๋ฒ„๋ฅผ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค:

์ œํ•œ ๊ฐ’ ์ด์œ 
์š”์ฒญ ๊ฐ„๊ฒฉ ์ดˆ๋‹น 1ํšŒ ์„œ๋ฒ„ ์šฉ๋Ÿ‰ ๋ณดํ˜ธ
์ผ์ผ HTML ์š”์ฒญ 150๊ฑด/์ผ ํ† ํฐ ์ƒ์„ธ, ํ†ต์‚ฌ, ๋ฌธ์žฅ, ์ฃผ์„ ํŽ˜์ด์ง€
์ผ์ผ JSON ์š”์ฒญ ๋ฌด์ œํ•œ ๊ฒ€์ƒ‰ API๋Š” ๊ฒฝ๋Ÿ‰

์ด ์ œํ•œ์€ ์—ฐ๊ตฌ์ž๊ฐ€ ์ง์ ‘ ์‚ฌ์ดํŠธ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ์ˆ˜์ค€(๋ณดํ†ต ํ•˜๋ฃจ 25โ€“100 ํŽ˜์ด์ง€)๊ณผ ๋™๋“ฑํ•ฉ๋‹ˆ๋‹ค. ์ผ์ผ ์ œํ•œ์€ ์ž์ •์— ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.

์ œํ•œ์— ๋„๋‹ฌํ•˜๋ฉด ์บ์‹œ๋œ ๋ฐ์ดํ„ฐ๋Š” ์—ฌ์ „ํžˆ ์™„์ „ํžˆ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค โ€” ์ƒˆ๋กœ์šด HTML ๊ฐ€์ ธ์˜ค๊ธฐ๋งŒ ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค.


๋ผ์ด์„ ์Šค

์ฝ”๋“œ: MIT

BHt ๋ฐ์ดํ„ฐ: CC BY-SA 4.0 (LMU Munich)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bht_mcp-0.3.2.tar.gz (39.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bht_mcp-0.3.2-py3-none-any.whl (45.9 kB view details)

Uploaded Python 3

File details

Details for the file bht_mcp-0.3.2.tar.gz.

File metadata

  • Download URL: bht_mcp-0.3.2.tar.gz
  • Upload date:
  • Size: 39.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.3

File hashes

Hashes for bht_mcp-0.3.2.tar.gz
Algorithm Hash digest
SHA256 f390d1be19a62247710bb428c8368a7f20f61e9c3f52a8637ffa831afd082766
MD5 f33c095c5384d55d60d92d91bfa7b3c5
BLAKE2b-256 50e2f98d05df5d640e63876298a55383619e5f35547be483e1e45284c1dcbf9f

See more details on using hashes here.

File details

Details for the file bht_mcp-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: bht_mcp-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 45.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.3

File hashes

Hashes for bht_mcp-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a47fc43062b2ff53f7154b38b29f36f0f2dbde50f7baf07bfbe1e8bd8b732268
MD5 b7544a4e1369c66fa14fd8e9308908cf
BLAKE2b-256 1aebf8dee2255c68249078afb4266a8f818f9ca445cc9fa543190a967a00e2bb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page