open-index/open-npm huggingface dataset:
npm package: @jonsoku2/mcp-security-scanner
Description: MCP 도구들의 보안 취약점을 검사하는 도구
Author: jonsoku2
Latest version: 1.1.2

# MCP 보안 스캐너

MCP(Model Context Protocol) 보안 스캐너는 MCP 도구들의 보안 취약점을 검사하는 도구입니다. 등록된 MCP 도구들의 설정, 실행 가능 여부, 권한 등을 검사하여 잠재적인 보안 문제를 식별합니다.

## 기능

- MCP 도구 실행 가능 여부 검사
- 도구 설정 유효성 검사
- 필수 환경 변수 검사
- 도구 이름 충돌 검사
- 상세한 보안 리포트 생성

## 아키텍처

```mermaid
graph TD
    A[MCP 클라이언트] -->|요청| B[MCP 서버]
    B --> C[보안 스캐너]
    C --> D[설정 분석기]
    C --> E[실행 테스터]
    C --> F[환경변수 검사기]
    C --> G[이름 충돌 분석기]
    D --> H[취약점 보고서]
    E --> H
    F --> H
    G --> H
    H --> B
    B -->|응답| A
```

## 설치

```bash
npm install @jonsoku2/mcp-security-scanner
```

## 사용 방법

### 1. 명령줄에서 실행

```bash
npx mcp-security-scanner scan --verbose
```

### 2. 프로그래밍 방식으로 사용

```typescript
import { MCPSecurityScanner } from '@jonsoku2/mcp-security-scanner';

const scanner = new MCPSecurityScanner({
  configPath: './config.json'
});

const result = await scanner.scan({ verbose: true });
console.log(result);
```

## 검사 항목

### 1. 설정 관련 취약점
- `INVALID_CONFIG`: 잘못된 도구 설정
- `MISSING_DEPENDENCY`: 누락된 의존성 (환경 변수 등)
- `EXECUTION_ERROR`: 도구 실행 오류

### 2. 도구 설명 관련 취약점
- `SUSPICIOUS_PATTERN`: 의심스러운 패턴
- `HIDDEN_HTML`: 숨겨진 HTML 태그
- `PERMISSION_WORDS`: 권한 관련 민감한 단어
- `LLM_DIRECTION`: LLM 직접 지시 패턴
- `EXCESSIVE_LENGTH`: 과도하게 긴 설명

### 3. 코드 관련 취약점
- `DANGEROUS_FUNCTION`: 위험한 함수 사용
- `COMMAND_INJECTION`: 명령어 삽입 가능성
- `SQL_INJECTION`: SQL 삽입 가능성
- `HARDCODED_SECRET`: 하드코딩된 비밀값
- `PATH_TRAVERSAL`: 경로 탐색 취약점
- `REMOTE_CODE_EXECUTION`: 원격 코드 실행 가능성

### 4. 권한 관련 취약점
- `SENSITIVE_PARAMETER`: 민감한 매개변수
- `HIGH_PRIVILEGE_NAME`: 높은 권한을 암시하는 이름

### 5. 이름 관련 취약점
- `NAME_CONFLICT`: 도구 이름 충돌 또는 유사성

## 의존성

### 주요 의존성
- @modelcontextprotocol/sdk: ^1.0.0
- chalk: ^4.1.2
- commander: ^11.1.0
- semver: ^7.5.4
- zod: ^3.22.4

### 개발 의존성
- TypeScript: ^5.3.3
- Jest: ^29.7.0
- ts-node: ^10.9.2
- rimraf: ^5.0.10

## 스크립트

```bash
# 빌드
npm run build

# 개발 모드 실행
npm run dev

# 패키지 미리보기
npm run pack:preview

# 배포
npm run release:patch  # 패치 버전 배포
npm run release:minor  # 마이너 버전 배포
npm run release:major  # 메이저 버전 배포
```

## 설정

### 취약점 규칙 설정

`vulnerabilityRules.json`:
```json
{
  "minVersions": {
    "node": "14.0.0",
    "npm": "6.0.0"
  },
  "deprecatedVersions": {
    "node": ["<12.0.0"],
    "npm": ["<5.0.0"]
  }
}
```

### 허용된 권한 설정

`allowedPermissions.json`:
```json
{
  "allowedPermissions": [
    "fs.read",
    "net.connect"
  ]
}
```

### 의심스러운 패턴 설정

`suspiciousPatterns.json`:
```json
{
  "patterns": [
    "eval\\(",
    "Function\\(",
    "require\\('child_process'\\)"
  ]
}
```

## 라이선스

MIT

## 기여하기

1. 이 저장소를 포크합니다
2. 새 브랜치를 생성합니다 (`git checkout -b feature/amazing-feature`)
3. 변경사항을 커밋합니다 (`git commit -m 'Add amazing feature'`)
4. 브랜치를 푸시합니다 (`git push origin feature/amazing-feature`)
5. Pull Request를 생성합니다

## 작성자

jonsoku2
npm package: @jonsoku2/mcp-template-ts
Description: MCP(Model Context Protocol) TypeScript 템플릿 - AI 모델과 상호작용하기 위한 서버 템플릿
Author: jonsoku
Latest version: 1.0.17

# MCP Server Template

Model Context Protocol(MCP) 서버를 위한 TypeScript 템플릿 프로젝트입니다.

## 목차

- [빠른 시작](#빠른-시작)
- [프로젝트로 설치](#프로젝트로-설치)
- [프로젝트 구조](#프로젝트-구조)
- [주요 기능](#주요-기능)
- [CLI 옵션](#cli-옵션)
- [환경 변수](#환경-변수)
- [시스템 구조](#시스템-구조)
- [배포 가이드](docs/DEPLOYMENT.md)
- [라이센스](#라이센스)

## 빠른 시작

```bash
# npx로 직접 실행
npx @jonsoku2/mcp-template-ts@latest start

# 디버그 모드로 실행
npx @jonsoku2/mcp-template-ts@latest start -d

# 여러 옵션 조합
npx @jonsoku2/mcp-template-ts@latest start -d --no-middleware
```

## 프로젝트로 설치

### npx로 프로젝트 생성

```bash
# 새 프로젝트 생성 (최신 버전)
npx @jonsoku2/mcp-template-ts@latest init my-mcp-server

# 특정 버전으로 프로젝트 생성
npx @jonsoku2/mcp-template-ts@1.0.8 init my-mcp-server

# 옵션과 함께 프로젝트 생성
npx @jonsoku2/mcp-template-ts@latest init my-mcp-server --template typescript --port 4000

# 생성된 프로젝트로 이동
cd my-mcp-server

# 의존성 설치
npm install
```

### 수동 설치

```bash
# 저장소 클론
git clone https://github.com/jonsoku2/mcp-template-ts.git
cd mcp-template-ts

# 의존성 설치
npm install

# TypeScript 컴파일 및 빌드
npm run build
```

## 프로젝트 구조

```
src/
├── bin/
│   └── cli.ts          # CLI 진입점
├── server.ts           # MCP 서버 코어
├── types/
│   └── index.ts        # 타입 정의
├── tools/
│   └── index.ts        # 도구 모음
└── utils/
    └── logger.ts       # 로깅 유틸리티
```

## 주요 기능

- TypeScript 기반 MCP 서버 구현
- 미들웨어 시스템 지원
- Winston 기반 로깅 시스템
- 디버그 모드 지원
- 환경 변수 기반 설정

## CLI 옵션

서버 시작 시 다음 옵션들을 사용할 수 있습니다:

```bash
# 디버그 모드 활성화
npm start -- -d
# 또는
npm start -- --debug

# 미들웨어 비활성화
npm start -- --no-middleware

# 여러 옵션 조합
npm start -- -d --no-middleware
```

## 환경 변수

서버 실행 시 다음 환경 변수들을 사용할 수 있습니다:

```bash
# 기본 설정
export MCP_PORT=3000          # 서버 포트
export MCP_HOST=localhost     # 서버 호스트
export MCP_LOG_LEVEL=info     # 로그 레벨 (debug, info, warn, error)
export MCP_TIMEOUT=5000       # 타임아웃 (ms)
export MCP_MAX_RETRIES=3      # 최대 재시도 횟수
export MCP_API_KEY=           # API 키 (옵션)
```

## 시스템 구조

### 서버 초기화 및 시작 프로세스

```mermaid
sequenceDiagram
    participant CLI as CLI (bin/cli.ts)
    participant Server as MCPServer
    participant Transport as StdioTransport
    participant Logger as Logger

    CLI->>Server: new MCPServer(options)
    Server->>Server: loadConfig()
    Server->>Logger: info("설정 로드")

    CLI->>Server: initialize(initOptions)
    activate Server
    Server->>Server: setupErrorHandling()
    Server->>Server: setupRequestHandlers()
    
    alt initOptions.middleware exists
        Server->>Server: Register Middleware
        Server->>Logger: info("미들웨어 등록")
    end
    
    Server-->>CLI: Initialization Complete
    deactivate Server

    CLI->>Server: start()
    activate Server
    Server->>Transport: new StdioTransport()
    Server->>Transport: connect()
    Server->>Logger: info("서버 시작됨")
    Server-->>CLI: Server Started
    deactivate Server
```

## 배포

상세한 배포 방법은 [배포 가이드](docs/DEPLOYMENT.md)를 참고하세요.

지원하는 배포 방식:
- Docker 기반 배포 (Kubernetes, ECS, SSH, Heroku)
- Vercel 배포

## 라이센스

MIT
npm package: @jonstuebe/knex
Description: A batteries-included SQL query & schema builder for Postgres, MySQL and SQLite3 and the Browser
Author: Tim Griesser
Latest version: 0.14.6

# [knex.js](http://knexjs.org)

[![npm version](http://img.shields.io/npm/v/knex.svg)](https://npmjs.org/package/knex)
[![Build Status](https://travis-ci.org/tgriesser/knex.svg?branch=master)](https://travis-ci.org/tgriesser/knex)
[![Coverage Status](https://coveralls.io/repos/tgriesser/knex/badge.svg?branch=master)](https://coveralls.io/r/tgriesser/knex?branch=master)
[![Dependencies Status](https://david-dm.org/tgriesser/knex.svg)](https://david-dm.org/tgriesser/knex)
[![Gitter chat](https://badges.gitter.im/tgriesser/knex.svg)](https://gitter.im/tgriesser/knex)

> **A SQL query builder that is _flexible_, _portable_, and _fun_ to use!**

A batteries-included, multi-dialect (MSSQL, MySQL, PostgreSQL, SQLite3, Oracle(including Oracle Wallet Authentication), WebSQL) query builder for
Node.js and the Browser, featuring:

- [transactions](http://knexjs.org/#Transactions)
- [connection pooling](http://knexjs.org/#Installation-pooling)
- [streaming queries](http://knexjs.org/#Interfaces-Streams)
- both a [promise](http://knexjs.org/#Interfaces-Promises) and [callback](http://knexjs.org/#Interfaces-Callbacks) API
- a [thorough test suite](https://travis-ci.org/tgriesser/knex)
- the ability to [run in the Browser](http://knexjs.org/#Installation-browser)

[Read the full documentation to get started!](http://knexjs.org)

For support and questions, join the `#bookshelf` channel on freenode IRC

For an Object Relational Mapper, see: 
- http://bookshelfjs.org
- https://github.com/Vincit/objection.js

To see the SQL that Knex will generate for a given query, see: [Knex Query Lab](http://michaelavila.com/knex-querylab/)

## Examples

We have several examples [on the website](http://knexjs.org). Here is the first one to get you started:

```js
var knex = require('knex')({
  dialect: 'sqlite3',
  connection: {
    filename: './data.db'
  }
});

// Create a table
knex.schema.createTable('users', function(table) {
  table.increments('id');
  table.string('user_name');
})

// ...and another
.createTable('accounts', function(table) {
  table.increments('id');
  table.string('account_name');
  table.integer('user_id').unsigned().references('users.id');
})

// Then query the table...
.then(function() {
  return knex.insert({user_name: 'Tim'}).into('users');
})

// ...and using the insert id, insert into the other table.
.then(function(rows) {
  return knex.table('accounts').insert({account_name: 'knex', user_id: rows[0]});
})

// Query both of the rows.
.then(function() {
  return knex('users')
    .join('accounts', 'users.id', 'accounts.user_id')
    .select('users.user_name as user', 'accounts.account_name as account');
})

// .map over the results
.map(function(row) {
  console.log(row);
})

// Finally, add a .catch handler for the promise chain
.catch(function(e) {
  console.error(e);
});
```
npm package: @jonstuebe/koa-knex
Description: A set of middleware and helper functions to simplify working with Knex inside of Koa.
Author: Jon Stuebe
Latest version: 0.1.0

# Koa Knex

A set of middleware and helper functions to simplify working with Knex inside of Koa.

## Install

using yarn:

```shell
yarn add @jonstuebe/koa-knex
```

or npm:

```shell
npm i --save @jonstuebe/koa-knex
```

## Usage

```javascript
const Koa = require("koa");
const {
  knex,
  requireParams,
  transformParams,
  paginate,
  stringToArray
} = require("@jonstuebe/koa-knex");

const app = new Koa();

app.use(
  knex({
    client: "pg",
    connection: process.env.DATABASE_URL
  })
);

app
  .use(requireParams(["fields"]))
  .use(transformParams("fields", stringToArray))
  .use(async (ctx, next) => {
    ctx.state.knex = {
      base: ctx.knex("users"),
      query: query => {
        return query.select(ctx.state.query.fields);
      }
    };
    await next();
  })
  .use(paginate);

app.listen(3000, () => {
  console.log(`listening at http://localhost:3000`);
});
```
npm package: @jonstuebe/react-native-apple-sign-in
Description: react-native native module for Apple Login
Author: systango-technologies
Latest version: 0.1.1

# react-native-apple-sign-in
This node module is used for authentication using apple id in react native apps.
Apple sign-in only works with ios platform. It doesn't support android and the setup guide is for ios only.

## Getting Started

Run the following command in your project directory:

`$ npm install --save react-native-apple-sign-in`

### Automatic Installation

From react-native version 0.60 we don't need to link any third party module separately but if you found it has not been included with your project then you can run the following:

`$ react-native link react-native-apple-sign-in`

### Manual Installation

#### iOS

1. In XCode, in the project navigator, right click `Libraries` ➜ `Add Files to [your project's name]`
2. Go to `node_modules` ➜ `react-native-apple-sign-in` and add `AppleSignIn.xcodeproj`
3. In XCode, in the project navigator, select your project. Add `libAppleSignIn.a` to your project's `Build Phases` ➜ `Link Binary With Libraries`
4. Run your project (`Cmd+R`)

## Configure Project

## iOS

1. **Sign in with Apple is supportable from `XCode 11` and `iOS 13`. Although you can install XCode 11 on Mac Mojave 10.14.14 and later.** 
2. Before running the project set development team in the `Signing & Capabilities` tab so Xcode can create a provisioning profile that. If you've already created project and provisioning profile then ignore this.
3. **Add the `Sign In with Apple capability` in your project.** This will add an entitlement that lets your app use Sign In with Apple.
4. When you try to sign in, you'll see an `AUTH_ALERT_SIGN_UP_NOT_COMPLETED` error message. Signing in won't work in your application until you create a key with Sign in with Apple enabled in your developer account.
5. To enable Sign In with Apple in your developer account you need to create an `Auth Key` with Sign In with Apple. on your developer account.
6. If you don’t see the Sign in with Apple listed when you create a key the you're probably in an Enterprise team. Just creating the key should sufficent for now, you will only need to download it when you want to support Sign in with Apple from somewhere other than your application.

7. If you're creating a key for grouped app then create a key for your primary App ID in order to implement Sign In with Apple. This key will also be used for any App IDs grouped with the primary. The user will see your primary app's icon at sign in and in their Apple ID account settings.
8. Test this on real iPhone device 

## Usage
```javascript

import { SignInWithAppleButton } from 'react-native-apple-sign-in'
export default class App extends React.Component{

  render(){
    return(
    <View style = {styles.container}>
     {SignInWithAppleButton(styles.appleBtn, this.appleSignIn)}
    </View>)

  }

  appleSignIn = (result) => {
    console.log('Resssult',result);
  };

}


const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center'
  },
  appleBtn: { height: 44, width: 200 }
});
```
npm package: @jonstuebe/react-redux
Description: react-redux that runs on setState and the new react context api
Author: Jonathan Stuebe
Latest version: 0.1.3

# React Redux

Hi, I know you're looking at the name of the repo and thinking that's the same one. Why didn't you come up with a different name? Well because it uses an almost identical api to redux and borrows the same syntax from the original react-redux package. But that's enough of that. On to details:

## Install

npm

```shell
npm i -s @jonstuebe/react-redux
```

or yarn:

```shell
yarn add @jonstuebe/react-redux
```

## Importing

### ES6

```javascript
import { StoreProvider, Connect } from "@jonstuebe/react-redux";
```

### ES5 (CommonJS)

```javascript
const { StoreProvider, Connect } = require("@jonstuebe/react-redux");
```

### ES5 (UMD Build)

```javascript
var StoreProvider = ReactRedux.StoreProvider;
var Connect = ReactRedux.Connect;
```

## Basic Usage

### \<StoreProvider reducer middleware />

As you can see below, you'll still create a root reducer (either object or function) and can attach middleware. I've used almost the same api for the middleware so they should function the same as you're used to with plain old redux. In addition you'll notice that methods like `applyMiddleware` and `combineReducers` are no longer being used. That's because that logic has been moved to inside of the component rather than assembled together to create the store.

**Props:**

* `reducer` rootReducer (either object of reducers or single reducer function)
* `middleware` accepts an array of middlewares

### Example

```javascript
import React from "react";
import { StoreProvider } from "@jonstuebe/react-redux";
import { logger, thunk } from "@jonstuebe/react-redux-middleware";
import rootReducer from "./reducer";

export default () => (
  <StoreProvider reducer={reducer} middleware={[logger, thunk]}>
    <App />
  </StoreProvider>
);
```

### \<Connect mapStateToProps />

Similar API to [react-redux](https://github.com/reactjs/react-redux). mapDispatchToProps is incoming in the next version.

**Props**

* `mapStateToProps` accepts a function with an argument of state that returns an object. (optional)

### Example

```javascript
import React from "react";
import { Connect } from "@jonstuebe/react-redux";

export default () => (
  <Connect
    mapStateToProps={state => {
      return state;
    }}
  >
    {({ state, dispatch }) => <h2>State: {state}</h2>}
  </Connect>
);
```

### Dispatching Actions

```javascript
import React from "react";
import { Connect } from "@jonstuebe/react-redux";
import { increment } from "../actions";

export default () => (
  <Connect>
    {({ dispatch }) => (
      <button
        onClick={() => {
          dispatch(increment());
        }}
      />
    )}
  </Connect>
);
```

## Async Action Creators

As is with the case of redux async action creators can be accomplished through middleware. Borrowed from the redux-thunk package, there is a plug and play version available in the package [`@jonstuebe/react-redux-middleware`](https://github.com/jonstuebe/react-redux/tree/master/packages/react-redux-middleware)
npm package: @jonstuebe/react-redux-middleware
Description: react-redux that runs on setState and the new react context api
Author: Jonathan Stuebe
Latest version: 0.1.3

# React Redux Middleware

This is two basic middlewares for the all React api driven [react-redux](https://github.com/jonstuebe/react-redux/tree/master/packages/react-redux)

## Install

npm

```shell
npm i -s @jonstuebe/react-redux-middleware
```

or yarn

```shell
yarn add @jonstuebe/react-redux-middleware
```

## Importing

### ES6

```javascript
import { logger, thunk } from "@jonstuebe/react-redux-middleware";
```

### ES5 (CommonJS)

```javascript
const { logger, thunk } = require("@jonstuebe/react-redux-middleware");
```

### ES5 (UMD Build)

```javascript
var thunk = ReactReduxMiddleware.thunk;
var logger = ReactReduxMiddleware.logger;
```

## Usage

## thunk

Just like redux, [react-redux](https://github.com/jonstuebe/react-redux/tree/master/packages/react-redux) does not handle async action creators as those can be handled by middleware. Thus thunk.

#### Writing thunks

```javascript
const thunk = (a, b) => {
  return dispatch => {
    setTimeout(() => {
      dispatch({
        type: "TEST",
        a,
        b
      });
    }, 3000);
  };
};
```

## logger

By adding the logger you'll get very basic logging in your console.
npm package: @jonstuebe/regex-named-groups
Description: ## Install ```sh npm install @jonstuebe/regex-named-groups --save ```
Author: Jon Stuebe
Latest version: 0.1.1

# regex-named-groups

## Install
```sh
npm install @jonstuebe/regex-named-groups --save
```

## Usage

```javascript
const regexNamedGroups = require("@jonstuebe/regex-named-groups");

const regex = /^([A-Z_]*?):[\ ]*?([^\ ]*?)$/gm;
const text = `
NODE_ENV:         development
NODE_PATH:        .
DEBUG_MODE:       false
`;

const matches = regexNamedGroups(text, regex, ["key","value"]);
```