VOOZH about

URL: https://glama.ai/mcp/servers/sweetcornna/free-search-mcp?locale=ko-KR

⇱ free-search-mcp by sweetcornna | Glama


free-search-mcp

πŸ‘ License
πŸ‘ Python
πŸ‘ MCP

둜컬 μš°μ„ , API ν‚€κ°€ ν•„μš” μ—†λŠ” Model Context Protocol μ„œλ²„μž…λ‹ˆλ‹€. λͺ¨λ“  LLM(Claude, GPT, 둜컬 Ollama λ“±)이 웹을 κ²€μƒ‰ν•˜κ³ , νŽ˜μ΄μ§€λ₯Ό 가져와 μ •λ¦¬ν•˜λ©°, λ¬Έμ„œλ₯Ό 읽을 수 μžˆλŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 검색 APIλ₯Ό μœ„ν•΄ λ³„λ„λ‘œ κ°€μž…ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

이 μ„œλ²„λŠ” μ—¬λŸ¬ μ˜€ν”ˆ μ†ŒμŠ€ MCP의 핡심 아이디어λ₯Ό ν•˜λ‚˜μ˜ Python νŒ¨ν‚€μ§€λ‘œ ν†΅ν•©ν•˜κ³ , 각 ν”„λ‘œμ νŠΈμ—μ„œ λΆ€μ‘±ν–ˆλ˜ LLM μ‚¬μš© νŽΈμ˜μ„±κ³Ό 신뒰성을 λ³΄μ™„ν–ˆμŠ΅λ‹ˆλ‹€.

research("how does reciprocal rank fusion work", depth=3)
 ↓
# Research brief: how does reciprocal rank fusion work
_engines: duckduckgo, mojeek, startpage Β· sources: 3 Β· ~3,400 tokens_

## Sources
- [1] Reciprocal rank fusion | Elasticsearch Reference β€” <https://…>
- [2] Hybrid Search Scoring (RRF) | Microsoft Learn β€” <https://…>
- [3] RRF explained in 4 mins β€” Medium β€” <https://…>

## Documents
…full Markdown bodies of each page, ready for the LLM to read…

단 ν•œ 번의 도ꡬ 호좜. μ„Έ κ°€μ§€ μ†ŒμŠ€. API ν‚€ λΆˆν•„μš”. 검색을 μœ„ν•œ OPENAI_API_KEY와 같은 번거둜운 μ ˆμ°¨λ„ μ—†μŠ΅λ‹ˆλ‹€.


μ™œ 이 ν”„λ‘œμ νŠΈκ°€ ν•„μš”ν•œκ°€μš”?

기쑴의 검색 MCP듀은 각각 ν•œ κ°€μ§€ κΈ°λŠ₯은 잘 μˆ˜ν–‰ν•˜μ§€λ§Œ, 보톡은 κ·Έ λͺ¨λ“  κΈ°λŠ₯이 ν•„μš”ν•©λ‹ˆλ‹€:

닀쀑 μ—”μ§„

API ν‚€ λΆˆν•„μš”

슀마트 폴백

PDF/DOCX

FTS5 μΊμ‹œ

ν•„ν„°

Trafilatura

LLM νŠœλ‹

nickclyde/duckduckgo-mcp-server

βœ—

βœ“

βœ—

βœ—

βœ—

βœ—

βœ—

~

mrkrsl/web-search-mcp

βœ“

βœ“

βœ“

βœ—

βœ—

βœ—

βœ—

~

Aas-ee/open-webSearch

βœ“

βœ“

~

βœ—

βœ—

βœ—

βœ—

~

VincentKaufmann/noapi-google-search-mcp

βœ—

βœ“

βœ“

βœ“

βœ“

βœ—

βœ—

~

free-search-mcp

βœ“

βœ“

βœ“

βœ“

βœ“

βœ“

βœ“

βœ“

μ—¬κΈ°μ„œ "LLM νŠœλ‹"μ΄λž€ λ‹€μŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€: λ§ˆν¬λ‹€μš΄ μš°μ„  좜λ ₯, 토큰 μΆ”μ •, 단락 κ²½κ³„μ—μ„œμ˜ μŠ€λ§ˆνŠΈν•œ 잘림, λͺ¨λΈμ΄ μ˜¬λ°”λ₯Έ 도ꡬλ₯Ό μ„ νƒν•˜λ„λ‘ λ•λŠ” "Best for / Not for / Returns / Common mistakes" λ…μŠ€νŠΈλ§, μ‹€ν–‰ κ°€λŠ₯ν•œ 였λ₯˜ 힌트, MCP ν”„λ‘¬ν”„νŠΈ 및 λ¦¬μ†ŒμŠ€ ν…œν”Œλ¦Ώ, 그리고 κ²€μƒ‰β†’κ°€μ Έμ˜€κΈ°β†’κ°€μ Έμ˜€κΈ°β†’κ°€μ Έμ˜€κΈ°λ₯Ό 단일 ν„΄μœΌλ‘œ μ••μΆ•ν•˜λŠ” 원샷 research() κΈ°λŠ₯.

"Trafilatura"λŠ” trafilaturaλ₯Ό μ‚¬μš©ν•˜μ—¬ μ£Όμš” μ½˜ν…μΈ λ₯Ό μΆ”μΆœν•¨μ„ μ˜λ―Έν•©λ‹ˆλ‹€. μ΄λŠ” Bevendorff 2023 ROUGE λ²€μΉ˜λ§ˆν¬μ—μ„œ μš°μŠΉν•œ λ„κ΅¬μž…λ‹ˆλ‹€(λ‹¨μˆœ λ³΄μΌλŸ¬ν”Œλ ˆμ΄νŠΈ 제거 μ‹œ ~0.55 λŒ€λΉ„ ~0.85). κ°€μ Έμ˜¨ 각 νŽ˜μ΄μ§€λŠ” author, published_date, sitename을 무료둜 λ°˜ν™˜ν•©λ‹ˆλ‹€.

"ν•„ν„°"λŠ” 검색/쑰사 μ‹œ freshness, include_domains, exclude_domains, category (news/pdf/github/paper/forum/blog), include_text, exclude_textλ₯Ό 지원함을 μ˜λ―Έν•©λ‹ˆλ‹€.


Related MCP server: TOOL4LM

도ꡬ

도ꡬ

μ„€λͺ…

search(query, engines?, max_results?, use_cache?, max_age_hours?, freshness?, include_domains?, exclude_domains?, category?, include_text?, exclude_text?, format?)

Reciprocal Rank Fusion을 톡해 λ³‘ν•©λœ 닀쀑 μ—”μ§„ 검색

research(question, depth?, engines?, fetch?, use_cache?, max_age_hours?, freshness?, include_domains?, exclude_domains?, category?, include_text?, exclude_text?, format?)

원샷: 검색 + μƒμœ„ N개 κ°€μ Έμ˜€κΈ° + λ§ˆν¬λ‹€μš΄ μš”μ•½ λ°˜ν™˜

fetch(url, render?, force_refresh?, max_age_hours?, format?)

νŽ˜μ΄μ§€λ₯Ό 가져와 리더 λͺ¨λ“œ λ§ˆν¬λ‹€μš΄μœΌλ‘œ λ°˜ν™˜ (trafilatura둜 μΆ”μΆœ, μž‘μ„±μž/λ‚ μ§œ/μ‚¬μ΄νŠΈλͺ… 포함)

fetch_batch(urls, render?, format?)

λ™μ‹œ 닀쀑 URL κ°€μ Έμ˜€κΈ°

read_doc(source, start?, length?, format?)

νŽ˜μ΄μ§€ 맀김을 μ§€μ›ν•˜λŠ” PDF / DOCX / HTML / TXT / MD νŒŒμ‹±

cache_search(query, limit?, format?)

이전에 κ°€μ Έμ˜¨ νŽ˜μ΄μ§€λ“€μ— λŒ€ν•œ FTS5 검색

engines()

searchμ—μ„œ μ‚¬μš© κ°€λŠ₯ν•œ μ—”μ§„ λͺ©λ‘

λ˜ν•œ 2개의 MCP ν”„λ‘¬ν”„νŠΈ (Research thoroughly, Fact-check claim)와 μΊμ‹œλœ νŽ˜μ΄μ§€λ₯Ό λ‹€μ‹œ κ°€μ Έμ˜€μ§€ μ•Šκ³  μ»¨ν…μŠ€νŠΈλ‘œ 뢈러올 수 μžˆλŠ” λ¦¬μ†ŒμŠ€ ν…œν”Œλ¦Ώ (cache://page/{url})이 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

ν•„ν„° (search / research)

λ§€κ°œλ³€μˆ˜

κ°’

효과

freshness

day / week / month / year

졜근 N κΈ°κ°„ λ‚΄μ˜ 결과만 ν‘œμ‹œ

include_domains

["python.org", "djangoproject.com"]

ν•΄λ‹Ή λ„λ©”μΈμœΌλ‘œ μ œν•œ

exclude_domains

["pinterest.com"]

ν•΄λ‹Ή 도메인 μ œμ™Έ

category

news / pdf / github / paper / forum / blog

μ½˜ν…μΈ  μœ ν˜• λ°”λ‘œκ°€κΈ° (paper = arxiv/acm/ieee/…, forum = reddit/HN/SE λ“±)

include_text

"async"

제λͺ©/μŠ€λ‹ˆνŽ«μ— ν•„μˆ˜ 포함될 λ¬Έμžμ—΄

exclude_text

"beginner"

κΈˆμ§€ν•  λ¬Έμžμ—΄

max_age_hours

24

이 ν˜ΈμΆœμ— λŒ€ν•΄ 7일 κΈ°λ³Έ μΊμ‹œ TTL μž¬μ •μ˜

λͺ¨λ“  λ„κ΅¬λŠ” 기본적으둜 format="markdown"을 μ‚¬μš©ν•©λ‹ˆλ‹€. μ΄λŠ” JSON보닀 읽기 쉽고 토큰을 μ•½ 40% 적게 μ‚¬μš©ν•˜λ©°, μΆœμ²˜μ™€ 토큰 μ˜ˆμ‚° 헀더λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€. κ΅¬μ‘°ν™”λœ 데이터가 ν•„μš”ν•˜λ©΄ format="json"을 μ „λ‹¬ν•˜μ„Έμš”.

도ꡬ 주석

λͺ¨λ“  λ„κ΅¬λŠ” μ˜¬λ°”λ₯Έ readOnlyHint, idempotentHint, openWorldHint 주석을 μ œκ³΅ν•˜μ—¬ MCP ν΄λΌμ΄μ–ΈνŠΈκ°€ 이λ₯Ό λ ˆμ΄λΈ”λ§ν•˜κ³  κΆŒν•œμ΄ ν•„μš”ν•œ μž‘μ—…μ„ μ œμ–΄ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

μ—”μ§„

κΈ°λ³Έ μ„ΈνŠΈ (λͺ¨λ‘ μ‹ λ’°ν•  수 있으며 반볡 호좜 μ‹œ μΊ‘μ°¨ μ—†μŒ): duckduckgo, mojeek, startpage.

옡트인 (ν—€λ“œλ¦¬μŠ€ ν΄λΌμ΄μ–ΈνŠΈμ— 간헐적인 μ±Œλ¦°μ§€ λ°œμƒ): brave, bing, baidu.

Brave/Bing/BaiduλŠ” λͺ‡ 번의 호좜 ν›„ ν—€λ“œλ¦¬μŠ€ λΈŒλΌμš°μ €λ₯Ό μ°¨λ‹¨ν•©λ‹ˆλ‹€(PoW μΊ‘μ°¨, "something went wrong" νŽ˜μ΄μ§€, λ¦¬λ‹€μ΄λ ‰νŠΈ 래퍼 λ“±). κΈ°λ³Έ μ—”μ§„μœΌλ‘œ μ›ν•˜λŠ” κ²°κ³Όλ₯Ό 찾을 수 없을 λ•Œλ§Œ engines=["brave"] 등을 μ „λ‹¬ν•˜μ„Έμš”.


μ„€μΉ˜

git clone https://github.com/ymylive/free-search-mcp.git
cd free-search-mcp
uv sync
uv run playwright install chromium

λ…λ¦½ν˜• μ„œλ²„λ‘œ μ‹€ν–‰ (stdio 전솑):

uv run search-mcp

라이브 ν…ŒμŠ€νŠΈ μ‹€ν–‰ (μ‹€μ œ 웹에 접속 β€” ν™˜κ²½ λ³€μˆ˜ μ„€μ • ν•„μš”):

SEARCH_MCP_TEST_NETWORK=1 uv run pytest -v

μ˜€ν”„λΌμΈ ν…ŒμŠ€νŠΈλŠ” 기본적으둜 μ‹€ν–‰λ˜λ©° λ„€νŠΈμ›Œν¬μ— μ ‘μ†ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.


Claude Desktop에 μ—°κ²°

~/Library/Application Support/Claude/claude_desktop_config.json(macOS) λ˜λŠ” ν•΄λ‹Ή ν”Œλž«νΌμ˜ λ™μΌν•œ κ²½λ‘œμ— λ‹€μŒμ„ μΆ”κ°€ν•˜μ„Έμš”:

{
 "mcpServers": {
 "search": {
 "command": "uv",
 "args": ["--directory", "/absolute/path/to/free-search-mcp", "run", "search-mcp"]
 }
 }
}

Claude Desktop을 μž¬μ‹œμž‘ν•˜μ„Έμš”. μœ„μ˜ 7κ°€μ§€ 도ꡬ가 도ꡬ μ„œλžμ— λ‚˜νƒ€λ‚©λ‹ˆλ‹€.

λ‹€λ₯Έ ν΄λΌμ΄μ–ΈνŠΈμ— μ—°κ²°

이 μ„œλ²„λŠ” stdioλ₯Ό 톡해 ν‘œμ€€ MCPλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. MCPλ₯Ό μ§€μ›ν•˜λŠ” λͺ¨λ“  ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μž‘λ™ν•©λ‹ˆλ‹€:

  • Claude Code (claude mcp add search uv --directory /…/free-search-mcp run search-mcp)

  • Cursor / Continue / Cline (μœ„μ˜ JSON μŠ€λ‹ˆνŽ« μ‚¬μš©)

  • 곡식 MCP SDKλ₯Ό μ‚¬μš©ν•˜λŠ” μ»€μŠ€ν…€ Python / TypeScript ν΄λΌμ΄μ–ΈνŠΈ


μ„€μ •

λͺ¨λ“  섀정은 SEARCH_MCP_ 접두사가 뢙은 ν™˜κ²½ λ³€μˆ˜λ‘œ μž¬μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

λ³€μˆ˜

κΈ°λ³Έκ°’

의미

SEARCH_MCP_DEFAULT_ENGINES

["duckduckgo","mojeek","startpage"]

JSON λͺ©λ‘

SEARCH_MCP_MAX_RESULTS_PER_ENGINE

10

SEARCH_MCP_RATE_LIMIT_PER_MINUTE

30

μ—”μ§„λ‹Ή

SEARCH_MCP_FETCH_RATE_LIMIT_PER_MINUTE

20

곡유 fetch 버킷

SEARCH_MCP_CACHE_DIR

~/.cache/search-mcp

SEARCH_MCP_CACHE_TTL_SECONDS

604800

7일

SEARCH_MCP_FETCH_STRATEGY

auto

auto / http / browser

SEARCH_MCP_BROWSER_HEADLESS

true

SEARCH_MCP_BROWSER_POOL_SIZE

2

λ™μ‹œ νŽ˜μ΄μ§€

SEARCH_MCP_MAX_CONTENT_CHARS

50000

κ²°κ³Όλ‹Ή 잘림


μ•„ν‚€ν…μ²˜

 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚ FastMCP server (stdio) β”‚
 β”‚ tools: search / research / fetch / fetch_batch / β”‚
 β”‚ read_doc / cache_search / engines β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 β”‚
 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚ aggregator β”‚ β”‚ fetcher β”‚
 β”‚ - parallel engines β”‚ β”‚ - httpx fast path β”‚
 β”‚ - reciprocal rank β”‚ β”‚ - playwright fallback β”‚
 β”‚ fusion β”‚ β”‚ - markdownify β”‚
 β”‚ - search cache (FTS5) β”‚ β”‚ - page cache (FTS5) β”‚
 β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 β”‚ β”‚
 β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚ engines/ β”‚ β”‚ browser pool β”‚
 β”‚ duckduckgo.py β”‚ β”‚ - persistent context β”‚
 β”‚ mojeek.py β”‚ β”‚ - stealth init script β”‚
 β”‚ startpage.py β”‚ β”‚ - shared cookies β”‚
 β”‚ brave.py (opt) β”‚ β”‚ - semaphore-bounded pagesβ”‚
 β”‚ bing.py (opt) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 β”‚ baidu.py (opt) β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚ documents/ β”‚ β”‚ ratelimit β”‚
 β”‚ pypdf, python-docx, β”‚ β”‚ token bucket β”‚
 β”‚ markdownify β”‚ β”‚ per engine β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚ formatting β”‚ β”‚ research β”‚
 β”‚ token estimate β”‚ β”‚ composed β”‚
 β”‚ smart truncation β”‚ β”‚ workflow β”‚
 β”‚ markdown renderers β”‚ β”‚ β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

μ—”μ§„ μ–΄λŒ‘ν„° νŒ¨ν„΄

src/search_mcp/engines/의 각 엔진은 λ‹€μŒμ„ κ΅¬ν˜„ν•©λ‹ˆλ‹€:

class Engine:
 name: str
 needs_browser: bool # Force Playwright?
 wait_selector: str | None # CSS to wait for in browser mode

 def build_url(self, query: str, max_results: int) -> str: ...
 def parse(self, html: str) -> list[SearchResult]: ...

κΈ°λ³Έ ν΄λž˜μŠ€λŠ” 전솑(httpx β†’ Playwright 폴백), 속도 μ œν•œ, 그리고 HTTPκ°€ κ²°κ³Ό λŒ€μ‹  μΊ‘μ°¨ 셸을 λ°˜ν™˜ν•˜λŠ” 경우(λΈŒλΌμš°μ €λ₯Ό ν†΅ν•œ μžλ™ μž¬μ‹œλ„)λ₯Ό μ²˜λ¦¬ν•©λ‹ˆλ‹€.


ν¬λ ˆλ”§

이 ν”„λ‘œμ νŠΈλŠ” λ‹€μŒ ν”„λ‘œμ νŠΈλ“€μ˜ 도움을 λ°›μ•˜μŠ΅λ‹ˆλ‹€:

  • mrkrsl/web-search-mcp β€” μŠ€λ§ˆνŠΈν•œ httpx-then-Playwright κ°€μ Έμ˜€κΈ° μ „λž΅, 닀쀑 μ—”μ§„ 폴백 체인

  • Aas-ee/open-webSearch β€” 닀쀑 μ—”μ§„ λ²”μœ„(Bing/DDG/Baidu/Brave/Startpage)

  • VincentKaufmann/noapi-google-search-mcp β€” 탐지 λ°©μ§€ νŒ¨ν„΄(navigator.webdriver, UA, μΏ ν‚€), SQLite FTS5 μΊμ‹œ 아이디어, 닀쀑 ν˜•μ‹ read_document

  • nickclyde/duckduckgo-mcp-server β€” 엔진별 속도 μ œν•œ, LLM μΉœν™”μ μΈ μ½˜ν…μΈ  정리

  • Mojeek β€” User-Agentλ₯Ό μ°¨λ‹¨ν•˜μ§€ μ•ŠλŠ” 독립적인 검색 인덱슀

  • Model Context Protocol 및 곡식 Python SDK


λΌμ΄μ„ μŠ€

MIT β€” LICENSEλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

A
license - permissive license
A
quality
A
maintenance

Maintenance

–Maintainers
–Response time
2wRelease cycle
2Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sweetcornna/free-search-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server