Metadata-Version: 2.4
Name: mcp-hybrid-search
Version: 1.1.7
Summary: Hybrid Search RAG - A Model Context Protocol (MCP) server for RAG-based document search
Author: Jay Pak
Author-email: Jay Pak <jaypark@forestsoft.co.kr>
License: MIT
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: aiohappyeyeballs==2.6.1
Requires-Dist: aiohttp==3.11.14
Requires-Dist: aiosignal==1.3.2
Requires-Dist: annotated-types==0.7.0
Requires-Dist: antlr4-python3-runtime==4.9.3
Requires-Dist: anyio==4.9.0
Requires-Dist: asgiref==3.8.1
Requires-Dist: attrs==25.3.0
Requires-Dist: backoff==2.2.1
Requires-Dist: bcrypt==4.3.0
Requires-Dist: build==1.2.2.post1
Requires-Dist: cachetools==5.5.2
Requires-Dist: certifi==2025.1.31
Requires-Dist: cffi==1.17.1
Requires-Dist: charset-normalizer==3.4.1
Requires-Dist: chroma-hnswlib==0.7.6
Requires-Dist: chromadb==0.6.3
Requires-Dist: click==8.1.8
Requires-Dist: coloredlogs==15.0.1
Requires-Dist: cryptography==44.0.2
Requires-Dist: dataclasses-json==0.6.7
Requires-Dist: deprecated==1.2.18
Requires-Dist: distro==1.9.0
Requires-Dist: durationpy==0.9
Requires-Dist: fastapi==0.115.11
Requires-Dist: filelock==3.18.0
Requires-Dist: flatbuffers==25.2.10
Requires-Dist: frozenlist==1.5.0
Requires-Dist: fsspec==2025.3.0
Requires-Dist: google-auth==2.38.0
Requires-Dist: googleapis-common-protos==1.69.1
Requires-Dist: grpcio==1.71.0
Requires-Dist: h11==0.14.0
Requires-Dist: httpcore==1.0.7
Requires-Dist: httptools==0.6.4
Requires-Dist: httpx==0.28.1
Requires-Dist: httpx-sse==0.4.0
Requires-Dist: huggingface-hub==0.29.3
Requires-Dist: humanfriendly==10.0
Requires-Dist: idna==3.10
Requires-Dist: importlib-metadata==8.6.1
Requires-Dist: importlib-resources==6.5.2
Requires-Dist: jiter==0.9.0
Requires-Dist: jsonpatch==1.33
Requires-Dist: jsonpointer==3.0.0
Requires-Dist: kubernetes==32.0.1
Requires-Dist: langchain==0.3.20
Requires-Dist: langchain-chroma==0.2.2
Requires-Dist: langchain-community==0.3.19
Requires-Dist: langchain-core==0.3.45
Requires-Dist: langchain-openai==0.3.8
Requires-Dist: langchain-text-splitters==0.3.6
Requires-Dist: langgraph==0.3.11
Requires-Dist: langgraph-checkpoint==2.0.20
Requires-Dist: langgraph-prebuilt==0.1.3
Requires-Dist: langgraph-sdk==0.1.57
Requires-Dist: langsmith==0.3.15
Requires-Dist: markdown-it-py==3.0.0
Requires-Dist: marshmallow==3.26.1
Requires-Dist: mcp==1.4.1
Requires-Dist: mdurl==0.1.2
Requires-Dist: mmh3==5.1.0
Requires-Dist: monotonic==1.6
Requires-Dist: mpmath==1.3.0
Requires-Dist: msgpack==1.1.0
Requires-Dist: multidict==6.1.0
Requires-Dist: mypy-extensions==1.0.0
Requires-Dist: numpy==1.26.4
Requires-Dist: oauthlib==3.2.2
Requires-Dist: omegaconf==2.3.0
Requires-Dist: onnxruntime==1.21.0
Requires-Dist: openai==1.66.3
Requires-Dist: opentelemetry-api==1.31.0
Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.31.0
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.31.0
Requires-Dist: opentelemetry-instrumentation==0.52b0
Requires-Dist: opentelemetry-instrumentation-asgi==0.52b0
Requires-Dist: opentelemetry-instrumentation-fastapi==0.52b0
Requires-Dist: opentelemetry-proto==1.31.0
Requires-Dist: opentelemetry-sdk==1.31.0
Requires-Dist: opentelemetry-semantic-conventions==0.52b0
Requires-Dist: orjson==3.10.15
Requires-Dist: overrides==7.7.0
Requires-Dist: packaging==24.2
Requires-Dist: pdfminer-six==20231228
Requires-Dist: pdfplumber==0.11.5
Requires-Dist: pillow==11.1.0
Requires-Dist: posthog==3.20.0
Requires-Dist: propcache==0.3.0
Requires-Dist: protobuf==5.29.3
Requires-Dist: pyasn1==0.6.1
Requires-Dist: pyasn1-modules==0.4.1
Requires-Dist: pycparser==2.22
Requires-Dist: pydantic==2.10.6
Requires-Dist: pydantic-core==2.27.2
Requires-Dist: pydantic-settings==2.8.1
Requires-Dist: pygments==2.19.1
Requires-Dist: pypdf==5.4.0
Requires-Dist: pypdfium2==4.30.1
Requires-Dist: pypika==0.48.9
Requires-Dist: pyproject-hooks==1.2.0
Requires-Dist: python-dateutil==2.9.0.post0
Requires-Dist: python-dotenv==1.0.1
Requires-Dist: pyyaml==6.0.2
Requires-Dist: rank-bm25
Requires-Dist: regex==2024.11.6
Requires-Dist: requests==2.32.3
Requires-Dist: requests-oauthlib==2.0.0
Requires-Dist: requests-toolbelt==1.0.0
Requires-Dist: rich==13.9.4
Requires-Dist: rsa==4.9
Requires-Dist: shellingham==1.5.4
Requires-Dist: six==1.17.0
Requires-Dist: sniffio==1.3.1
Requires-Dist: sqlalchemy==2.0.39
Requires-Dist: sse-starlette==2.2.1
Requires-Dist: starlette==0.46.1
Requires-Dist: sympy==1.13.3
Requires-Dist: tavily-python==0.5.1
Requires-Dist: tenacity==9.0.0
Requires-Dist: tiktoken==0.9.0
Requires-Dist: tokenizers==0.21.1
Requires-Dist: tqdm==4.67.1
Requires-Dist: typer==0.15.2
Requires-Dist: typing-extensions==4.12.2
Requires-Dist: typing-inspect==0.9.0
Requires-Dist: urllib3==2.3.0
Requires-Dist: uvicorn==0.34.0
Requires-Dist: uvloop==0.21.0
Requires-Dist: watchfiles==1.0.4
Requires-Dist: websocket-client==1.8.0
Requires-Dist: websockets==15.0.1
Requires-Dist: wrapt==1.17.2
Requires-Dist: yarl==1.18.3
Requires-Dist: zipp==3.21.0
Requires-Dist: zstandard==0.23.0
Dynamic: license-file

# RAG-based MCP Server

[ENG](#english) | [KOR](#한국어)

---

## English

This package provides an MCP (Model Context Protocol) server that uses a Retrieval Augmented Generation (RAG) approach. It allows you to specify a folder containing PDF files for augmentation, and leverages an OpenAI API key to perform hybrid search.

### Installation

Install the package from PyPI using UV or pip:

```bash
uv pip install mcp-hybrid-search
```

or

```bash
pip install mcp-hybrid-search
```

### Configuration

To run your project in the Claude app, add the following entry to your `claude_desktop_config.json`:

```json
{
  "rag-mcp": {
    "command": "uvx",
    "args": [
      "mcp-hybrid-search",
      "path/to/your/allowed/folder"
    ],
    "env": {
      "OPENAI_API_KEY": "YOUR_OPENAI_API_KEY"
    }
  }
}
```

* Replace `path/to/your/allowed/folder` with the actual path where you want to store and access your data.
* In that folder, create a subfolder named `data` and place any PDF files you want to use for augmentation in this `data` folder.

### Usage

1. Install and configure the server as described above.
2. Start or restart your MCP setup or application to enable the RAG-based MCP server.
3. The server will use the PDF files within the `data` folder to generate context and augment your prompts.

### License

MIT

---

## 한국어

이 패키지는 RAG(Retrieval Augmented Generation) 방식을 사용하는 MCP(Model Context Protocol) 서버를 제공합니다. PDF 파일을 증강 자료로 활용할 수 있도록 설정된 폴더를 지정하고, OpenAI API 키를 이용하여 하이브리드 검색을 수행합니다.

### 설치 방법

UV 또는 pip를 이용하여 PyPI에서 패키지를 설치합니다:

```bash
uv pip install mcp-hybrid-search
```

또는

```bash
pip install mcp-hybrid-search
```

### 설정 방법

Claude 앱에서 프로젝트를 실행하기 위해 `claude_desktop_config.json`에 다음과 같이 설정을 추가하세요:

```json
{
  "rag-mcp": {
    "command": "uvx",
    "args": [
      "mcp-hybrid-search",
      "접근을 허용할 폴더 경로"
    ],
    "env": {
      "OPENAI_API_KEY": "YOUR_OPENAI_API_KEY"
    }
  }
}
```

* `접근을 허용할 폴더 경로` 부분을 실제 PDF 파일을 저장할 경로로 바꾸세요.
* 해당 폴더 안에 `data`라는 이름의 하위 폴더를 만들고, 여기에 증강 자료로 사용할 PDF 파일을 넣으세요.

### 사용 방법

1. 위 설치 및 설정 과정을 완료합니다.
2. MCP 설정을 실행하거나 애플리케이션을 재시작하여 RAG 기반 MCP 서버를 활성화하세요.
3. `data` 폴더 내 PDF 파일을 이용하여 메시지에 대한 맥락을 생성하고 증강된 응답을 받아볼 수 있습니다.

### 라이센스

MIT
