open-index/open-npm huggingface dataset:
npm package: @kurly-hchan/mcp-server
Description: 팀 RAG 봇 MCP 서버
Author: kurly-hchan
Latest version: 1.0.3

# 팀 RAG 봇 MCP 서버

OpenAI Assistant API를 활용한 팀 RAG 봇을 MCP(Model Context Protocol) 서버 패키지로 구현한 프로젝트입니다.

## 기능

- OpenAI Assistant API를 통한 질문 응답 기능
- MCP 프로토콜을 통한 쉬운 접근
- 대화 스레드 관리
- 파일 첨부 지원
- 조직 내 누구나 쉽게 설정하고 사용 가능

## 설치 방법

### npm 패키지 설치 (사용자)

```bash
npm install -g @your-org/mcp-server-rag-bot
```

또는 npx로 직접 실행:

```bash
npx @your-org/mcp-server-rag-bot
```

### 개발 환경 설정 (개발자)

1. 저장소 클론

```bash
git clone <repository-url>
cd mcp-server-rag-bot
```

2. 의존성 설치

```bash
npm install
```

3. 환경 변수 설정

`.env.example` 파일을 `.env`로 복사하고 필요한 값을 설정합니다:

```bash
cp .env.example .env
```

`.env` 파일을 열고 다음 값들을 설정합니다:

- `OPENAI_API_KEY`: OpenAI API 키
- `ASSISTANT_ID`: OpenAI Assistant ID

## 실행 방법

```bash
npm start
```

또는

```bash
node index.js
```

## MCP 서버 구성 방법

조직 내 사용자들은 `.mcprc.json` 파일을 통해 쉽게 MCP 서버를 구성할 수 있습니다:

```json
{
  "mcpServers": {
    "rag-bot": {
      "command": "npx",
      "args": ["-y", "@your-org/mcp-server-rag-bot"],
      "env": {
        "OPENAI_API_KEY": "YOUR_API_KEY_HERE",
        "ASSISTANT_ID": "YOUR_ASSISTANT_ID_HERE"
      }
    }
  }
}
```

## 사용 방법

MCP를 지원하는 AI 도구(예: Cascade)에서 `rag-bot`을 MCP 서버로 선택하면 팀 RAG 봇의 기능을 사용할 수 있습니다.

### 함수

현재 다음 함수가 구현되어 있습니다:

- `ask_question`: 질문에 대한 응답을 가져옵니다.
  - 파라미터:
    - `question`: 사용자 질문 (필수)
    - `thread_id`: 기존 대화 스레드 ID (선택사항)
    - `file_ids`: 첨부할 파일 ID 목록 (선택사항)
    - `temperature`: 응답의 창의성 조절 (0.0~2.0, 선택사항)

## GitHub 패키지 레지스트리에 배포

### 1. 접근 토큰 설정

```bash
echo "//npm.pkg.github.com/:_authToken=YOUR_GITHUB_TOKEN" > ~/.npmrc
echo "@your-org:registry=https://npm.pkg.github.com" >> ~/.npmrc
```

### 2. 패키지 배포

```bash
npm publish
```

## 라이선스

MIT
npm package: @kurly-lfd/add-separator
Description: 자연수 혹은 자연수로 변환될 수 있는 문자열에 구분자를 추가하는 기능
Author: 임진호
Latest version: 1.0.8

# `addSeparator`

## 내용

자연수 혹은 자연수로 변환될 수 있는 데이터에 구분자를 추가하는 기능

## 개발할 때

### 설치

설치 시 오류가 발생할 경우 node와 npm을 최신으로 업데이트 해주세요.

```
npm install
```

### 사용

포트는 3030을 사용합니다.

```
npm run start
```

### 테스트

작성된 spec에 맞춰 콘솔에 해당 내용을 출력합니다.

```
npm run test:unit
```

### TDD

TDD 모드를 별도로 제공합니다. 아래의 명령어를 입력하면 TDD 모드를 실행할 수 있습니다.

```
npm run test:tdd
```

### 빌드

생성된 lib 디렉토리의 .js를 이용합니다.

```
npm run build
```

## 사용할 때

### npm package 설치

```
npm install @kurly-lfd/add-separator --save
```

### 개발환경에서 모듈형태로 사용할 경우

```
import { addSeparator } from '@kurly-lfd/add-separator';
```

### lib/add-separator.js 파일을 직접 로드하여 사용할 경우

```
KurlyAddSep.addSeparator(10000); // 10,000
```

혹은

```
const { addSeparator } = KurlyAddSep;
addSeparator(100000); // 100,000
```

## 확장

아래와 같은 형태로 통화 표기 시 사용할 수 있습니다.

```
<!-- 모듈 import 방식으로 설명합니다 -->
import { addSeparator } from '@kurly-lfd/add-separator';

const addWonAtTheMostRight = (num) => {
  return `${addSeparator(num) 원}`
}

addWonAtTheMostRight(200000);
```

## 설명

| 프로퍼티 / 메서드  | 역할                                                                     | 프로퍼티 / 파라미터                                                    |
| ------------------ | ------------------------------------------------------------------------ | ---------------------------------------------------------------------- |
| RULES              | 상수로 관리하는 규칙                                                     | MIN_LENGTH, MAX_LENGTH                                                 |
| addSeparator       | 넘겨지는 매개변수 조합을 연산하여 구분자가 추가된 문자열로 반환하는 함수 | num, unit = 3, sep = ',' / 변환할 데이터, 구분할 자릿 수(3), 구분자(,) |
| checkIsNumber      | 숫자형 데이터인지 검증하는 함수                                          | num / 변환할 데이터                                                    |
| checkIsValidLength | 매개변수 num이 유효한 길이인지 검증하는 함수                             | num / 변환할 데이터                                                    |
| splitNum           | 매개변수 num을 배열 형태로 반환하는 함수                                 | num / 변환할 데이터                                                    |
| toStringOfNumber   | 매개변수 num을 문자열 형태로 반환하는 함수                               | num / 변환할 데이터                                                    |
npm package: @kurly-lfd/logger
Description: 등록한 이벤트를 감시하여 해당 정보를 전달받은 곳에 전송하는 기능
Author: 임진호
Latest version: 1.0.1

# `KurlyLogger`

## 내용

내용 설명

## 개발할 때

### 설치

설치 시 오류가 발생할 경우 node와 npm을 최신으로 업데이트 해주세요.

```
npm install
```

### 사용

포트는 3030을 사용합니다.

```
npm run start
```

### 테스트

작성된 spec에 맞춰 콘솔에 해당 내용을 출력합니다.

```
npm run test:unit
```

### TDD

TDD 모드를 별도로 제공합니다. 아래의 명령어를 입력하면 TDD 모드를 실행할 수 있습니다.

```
npm run test:tdd
```

### 빌드

생성된 lib 디렉토리의 logger.js를 이용합니다.

```
npm run build
```

## 사용할 때

### npm package 설치

```
npm install @kurly-lfd/logger --save
```

### 개발환경에서 모듈형태로 사용할 경우

```
index.html 참고
```

### lib/logger.js 파일을 직접 로드하여 사용할 경우

```
index.html 참고
```

## 설명

| 매개변수   | 역할                       | 비고                                |
| ---------- | -------------------------- | ----------------------------------- |
| URL        | 데이터를 전송할 목적지 URL | 문자열                              |
| CATEGORIES | 감시할 대상 이벤트         | 객체 { 이벤트: [항목, 항목, 항목] } |
| initialize | 초기화                     | 전달할 값을 전달해줄 콜백 함수      |
| sendData   | 커스텀 이벤트 호출 함수    | '항목', '전달할 값'                 |
npm package: @kurly-lfd/remove-separator
Description: 콤마 등의 구분자를 제거하여 숫자로 반환해주는 기능
Author: 임진호
Latest version: 1.0.2

# `removeSeparator`

## 내용

콤마 등의 구분자를 제거하여 숫자로 반환해주는 기능

## 개발할 때

### 설치

설치 시 오류가 발생할 경우 node와 npm을 최신으로 업데이트 해주세요.

```
npm install
```

### 사용

포트는 3030을 사용합니다.

```
npm run start
```

### 테스트

작성된 spec에 맞춰 콘솔에 해당 내용을 출력합니다.

```
npm run test:unit
```

### TDD

TDD 모드를 별도로 제공합니다. 아래의 명령어를 입력하면 TDD 모드를 실행할 수 있습니다.

```
npm run test:tdd
```

### 빌드

생성된 lib 디렉토리의 .js를 이용합니다.

```
npm run build
```

## 사용할 때

### npm package 설치

```
npm install @kurly-lfd/remove-separator --save
```

### 개발환경에서 모듈형태로 사용할 경우

```
import { removeSeparator } from '@kurly-lfd/remove-separator';
```

### lib/change-name.js 파일을 직접 로드하여 사용할 경우

```
KurlyRemSep.removeSeparator('100,000'); // 100000
```

혹은

```
const { removeSeparator } = KurlyRemSep;
removeSeparator('100,000'); // 100000
```

## 주의사항

아래와 같은 경우에는 오류가 발생합니다.

- 구분자가 일정한 간격을 유지하지 않았을 경우

```
removeSeparator('1,000,00') -> 0
0
```

- 구분자가 두개 이상인 경우

```
removeSeparator('1,000.00') -> 0
0
```

- 구분자가 두번 이상 연속될 경우

```
removeSeparator('1,,000') -> 0
0
```

- 구분자로 시작하거나 끝날 경우

```
removeSeparator(',100,000') -> 0
0
```

## 설명

| 프로퍼티 / 메서드 | 역할                                                               | 프로퍼티 / 파라미터               |
| ----------------- | ------------------------------------------------------------------ | --------------------------------- |
| RULES             | 상수로 관리하는 규칙과 메시지                                      | MIN_LENGTH, MAX_LENGTH, ERROR_MSG |
| checkValidString  | 값의 초기 유효성 검증 / 빈값, 엣지케이스 등                        | strOfNum                          |
| filterString      | 주어진 값을 순회하며 구분자 검증 및 숫자만 모아서 문자열로 전달    | strOfNum                          |
| checkValidLen     | 반환된 문자열이 숫자로 변환되어도 문제가 발생하지 않는 값인지 판단 | filteredStr                       |
| passValidNumber   | 주어진 값을 숫자로 변형하여 전달                                   | valStr                            |
| removeSeparator   | 상기 열거된 모든 기능을 통해 전달된 값을 안전한 숫자로 반환        | strOfNum                          |
npm package: @kurniawanw0194/apollo-absinthe-upload-link
Description: A network interface for Apollo that enables file-uploading to Absinthe back ends.
Author: William Kurniawan
Latest version: 1.0.0

[![Build Status](https://semaphoreci.com/api/v1/ihorkatkov/apollo-absinthe-upload-link/branches/master/badge.svg)](https://semaphoreci.com/ihorkatkov/apollo-absinthe-upload-link)

# Apollo-Absinthe-Upload-Link

A network interface for Apollo that enables file-uploading to Absinthe back
ends.

## Usage

Install via yarn or npm and then use `createLink` from the package
in the construction of your `ApolloClient`-instance.

```js
import ApolloClient from "apollo-client";
import { createLink } from "apollo-absinthe-upload-link";

const client = new ApolloClient({
    link: createLink({
        uri: "/graphql"
    })
});
```

### Custom headers

Custom headers can be passed through options of the link. 

```js
import ApolloClient from "apollo-client";
import { createLink } from "apollo-absinthe-upload-link";

const headers = { authorization: 1234 } 
const client = new ApolloClient({
    link: createLink({
        uri: "/graphql"
    }),
    headers,
});
```

### Custom fetch

You can use the fetch option when creating an apollo-absinthe-upload-link to do a lot of custom networking. This is useful if you want to modify the request based on the calculated headers or calculate the uri based on the operation.

```js
import ApolloClient from "apollo-client";
import { createLink } from "apollo-absinthe-upload-link";

const customFetch = (uri, options) => {
  const { header } = Hawk.client.header(
    "http://example.com:8000/resource/1?b=1&a=2",
    "POST",
    { credentials: credentials, ext: "some-app-data" }
  );
  options.headers.Authorization = header;
  return fetch(uri, options);
};

const headers = { authorization: 1234 } 
const client = new ApolloClient({
    link: createLink({
        uri: "/graphql"
    }),
    headers,
    fetch: customFetch
});
```

### Usage with React Native

Substitute [`File`](https://developer.mozilla.org/en/docs/Web/API/File) with [`ReactNativeFile`](https://github.com/bytewitchcraft/apollo-absinthe-upload-link/blob/master/src/validators.js):

```js
import { ReactNativeFile } from 'apollo-absinthe-upload-link'

const file = new ReactNativeFile({
  uri: '…',
  type: 'image/jpeg',
  name: 'photo.jpg'
})

const files = ReactNativeFile.list([
  {
    uri: '…',
    type: 'image/jpeg',
    name: 'photo-1.jpg'
  },
  {
    uri: '…',
    type: 'image/jpeg',
    name: 'photo-2.jpg'
  }
])
```

## License

MIT (see LICENSE)

## Acknowledgements

* @labtwentyfive's [`apollo-absinthe-upload-client`](https://github.com/labtwentyfive/apollo-absinthe-upload-client)
* @jaydenseric [`apollo-upload-client`](https://github.com/jaydenseric/apollo-upload-client)
npm package: @kuro-chan/argument-parser
Description: ## Installation
Author: hota1024
Latest version: 0.0.0

# @kuro-chan/argument-parser

## Installation

```bash
yarn add @kuro-chan/argument-parser
# or
npm install @kuro-chan/argument-parser
```

## Usage

```typescript
import { ArgumentParser } from '@kuro-chan/argument-parser'

const parser = new ArgumentParser({
  stringChars: [`'`, `"`],
  escapeChars: [`\\`],
  separatorChars: [' '],
  trueStrings: [`true`],
  falseStrings: [`false`]
})
const args = parser.parse(`text 'text' "text" text\\ text \\'text\\' \\"text\\" 0 10 0xff true false`)

console.log(args) //[ 'text', 'text', 'text', 'text text', '\'text\'', '"text"', 0, 10, 255, true, false ]
```
npm package: @kuro-chan/framework
Description: KuroFramework is a [discord.js](https://discord.js.org/) framework.
Author: hota1024
Latest version: 0.2.29

# KuroFramework

KuroFramework is a [discord.js](https://discord.js.org/) framework.

## [WIP] Examples

[WIP]

## Standard Plugin

[kuro-chan-bot/standard-plugin](https://github.com/kuro-chan-bot/standard-plugin)

## LICENSE

MIT
npm package: @kuro-chan/standard-plugin
Description: Standard plugin for KuroFramework.
Latest version: 0.0.19

# KuroFramework Standard Plugin

`@kuro-chan/standard-plugin` is a plugin for [KuroFramework](https://www.npmjs.com/package/@kuro-chan/framework).

## Installation

```bash
yarn add @kuro-chan/standard-plugin
# or
npm install @kuro-chan/standard-plugin
```

```TypeScript
import { Bot } from '@kuro-chan/framework'
import { StandardPlugin } from '@kuro-chan/standard-plugin'

const bot = new Bot({
  plugins: [
    new StandardPlugin()
  ]
})
```