open-index/open-npm huggingface dataset:
npm package: @krisdevs/xmcp
Description: The MCP framework
Author: Basement Studio
Latest version: 0.0.5

<div align="center">
  <a href="https://xmcp.dev">
    <picture>
      <source media="(prefers-color-scheme: dark)" srcset="https://assets.basehub.com/bf7c3bb1/303b8a62053c9d86ca3b972b5597ab5c/x.png">
      <img alt="XMCP logo" src="https://assets.basehub.com/bf7c3bb1/303b8a62053c9d86ca3b972b5597ab5c/x.png" height="128">
    </picture>
  </a>
  <h1>xmcp</h1>

<a href="https://basement.studio"><img alt="xmcp logo" src="https://img.shields.io/badge/MADE%20BY%20basement.studio-000000.svg?style=for-the-badge&labelColor=000"></a>
<a href="https://www.npmjs.com/package/xmcp"><img alt="NPM version" src="https://img.shields.io/npm/v/xmcp.svg?style=for-the-badge&labelColor=000000"></a>
<a href="https://github.com/basementstudio/xmcp/blob/main/license.md"><img alt="License" src="https://img.shields.io/npm/l/xmcp.svg?style=for-the-badge&labelColor=000000"></a>

</div>

> **⚠️ NOTICE: This is a fork of the original xmcp project**
>
> **For production use, please use the official package instead:**
> ```bash
> npm install xmcp
> ```
> 
> **Official repository:** https://github.com/basementstudio/xmcp
> 
> This fork is for development purposes only and may contain experimental changes that are not suitable for production use.

## The TypeScript MCP Framework

`xmcp` is a framework for building and shipping MCP applications with TypeScript. Designed with DX in mind, it streamlines development and lowers the barrier to entry for anyone looking to create and deploy powerful tools on top of the Model Context Protocol ecosystem.

## Getting Started

Bootstrap your first `xmcp` application with:

```bash
npx create-xmcp-app@latest
```

or initialize `xmcp` on an existing Next.js or Express project with:

```bash
npx init-xmcp@latest
```

## Features

⊹ **File System Routing** - Tools are auto-registered from a `tools` directory\
⊹ **Hot Reloading** - Instant development feedback\
⊹ **Middlewares** - Toolkit for shipping authentication and custom middlewares\
⊹ **Extensible Configuration** - Customizable configuration for your MCP server\
⊹ **Deploy Anywhere** - Flexible deployment across any platform\
⊹ **Vercel Support** - Deploy-ready for Vercel out of the box

## Learn more

⊹ Visit [xmcp.dev](https://xmcp.dev) to learn more about the project.\
⊹ Visit [xmcp.dev/docs](https://xmcp.dev/docs) to view the full documentation.

## Security

If you believe you have found a security vulnerability, we encourage you to let us know right away.

We will investigate all legitimate reports and do our best to quickly fix the problem.

Please report any vulnerabilities in our open source repositories to [security@basement.studio](mailto:security@basement.studio).
npm package: @krisell/better-arguments
Description: Improved JavaScript function arguments
Author: Martin Krisell
Latest version: 1.2.0

# Improved JavaScript function arguments
Enables a combination of named arguments, default values and order-defined values, for easy-to-read function invocation.

better-arguments is an extremely small and simple library to allow a function to take both an options object (named arguments) as well as primitive arguments where their indices map to specific option properties.

This enables any method to be called in the preferred way. For instance an XHR-function might accept an object specifying url and method, but sometimes you might want to pass in the url as a string as the first argument.

# Installation
You can pull in the code through npm, or just copy the contents and importing the code manually.

## Through npm
```npm install @krisell/better-arguments```

## By importing code
Include lib/index.js in your project however you like. If you don't use ES6-modules, leave out the "export default BetterArguments". The library do use ES6-syntax however and transpilation may be needed.

# How to use
1. Use the rest-operator (```...```) to gather all arguments that are passed to your function in a specifications-array.

2. Call ```BetterArguments.build({})``` with an object containing the following properties:
     * specs: The array of arguments to your function, built by the rest-operator.
     * defaultOptions: An object with any default options you would like to use.
     * namedOptions: An array which names the special arguments in the expected order.

# Template
```js
function doSomething (...specs) {
  const options = BetterArguments.build({
    specs,
    defaultOptions: { key: value },
    namedOptions: ['argOneKey', 'argTwoKey', 'argThreeKey']
  })

  // Implement function with access to options.property
}
```

Now, options consists of a merge between the default options, any options passed in as an object and most importantly, if the first argument was not an object it's value will be set in the argOneKey-property of options, and similar for the rest.
    
You may pass several objects with option-properties, but you should always pass the primitive arguments first, and end with one or more ojects. You can not pass objects as a specific named options, since it will be treated as an options object.

# An example
```js
function xhr (...specs) {
  const options = BetterArguments.build({
    specs,
    defaultOptions: { 
        method: 'get',
        responseType: 'json',
    },
    namedOptions: ['url', 'method', 'responseType']
  })

  // Implementation ...
}
```

xhr may now be called in any of the following ways, yielding the exact same result.
```js
xhr({
    method: 'get',
    url: 'api/users',
    responseType: 'json',
})

xhr('api/users', 'get', 'json')

xhr('api/users')

xhr('api/users', 'get', {
    responseType: 'json'
})
```
npm package: @krisell/file-cache
Description: File based cache for fast access between invocations.
Author: Martin Krisell
Latest version: 2.0.1

# File based cache for Node.js
This package provides a simple filesystem based caching layer for Node.js-applications.

## Usage

```js
import FileCache from '@krisell/file-cache'

const cache = new FileCache('/tmp')

cache.remember(key, ttl, () => {
  // Do whatever you want, and return a promise which resolves to the data you like to cache.
  // The data is kept in cache and this callback will not be executed again until the cache has expired.

  // If your data can be retreived synchronously, you still need to return a promise and
  // can do this using return Promise.resolve(data)

  // ttl is given in seconds
})

// Example
cache.remember('tts-token', 30, () => {
  return Promise.resolve('result-of-heavy-db-query-or-api-call')
}).then(data => console.log(data))
```

## Example use cases
API-calls that require a call to issue a token that is valid for 10 minutes. Use this cache to only perform this request at most every 9 minutes.
npm package: @krisell/options-handler
Description: JavaScript function options handler
Author: Martin Krisell
Latest version: 1.1.0

# JavaScript function options handler
Enables a combination of named parameters, default values and order-defined values, for easy-to-read function invocation.

OptionsHandler is an extremely small and simple library to allow a function to take both an options object (named parameters) as well as primitive arguments where their indices map to specific option properties.

This enables any method to be called in the preferred way. For instance an XHR-function might accept an object specifying url and method, but sometimes you might want to pass in the url as a string as the first argument.

# Installation
You can pull in the code through npm, or just copy the contents and importing the code manually.

## Through npm
```npm install @krisell/options-handler```

## By importing code
Include OptionsHandler.js in your project however you like. If you don't use ES6-modules, leave out the "export default OptionsHandler". The library do use ES6-syntax however and transpilation may be needed.

# How to use
1. Use the rest-operator (```...```) to gather all arguments that are passed to your function in a specifications-array.

2. Call ```OptionsHandler.build({})``` with an object containing the following properties:
     * specs: The array of arguments to your function, built by the rest-operator.
     * defaultOptions: An object with any default options you would like to use.
     * namedOptions: An array which names the special arguments in the expected order.

# Template
```js
function doSomething (...specs) {
  const options = OptionsHandler.build({
    specs,
    defaultOptions: { key: value },
    namedOptions: ['argOneKey', 'argTwoKey', 'argThreeKey']
  })

  // Implement function with access to options.property
}
```

Now, options consists of a merge between the default options, any options passed in as an object and most importantly, if the first argument was not an object it's value will be set in the argOneKey-property of options, and similar for the rest.
    
You may pass several objects with option-properties, but you should always pass the primitive arguments first, and end with one or more ojects. You can not pass objects as a specific named options, since it will be treated as an options object.

# An example
```js
function xhr (...specs) {
  const options = OptionsHandler.build({
    specs,
    defaultOptions: { 
        method: 'get',
        responseType: 'json',
    },
    namedOptions: ['url', 'method', 'responseType']
  })

  // Implementation ...
}
```

xhr may now be called in any of the following ways, yielding the exact same result.
```js
xhr({
    method: 'get',
    url: 'api/users',
    responseType: 'json',
})

xhr('api/users', 'get', 'json')

xhr('api/users')

xhr('api/users', 'get', {
    responseType: 'json'
})
```
npm package: @krisell/parser
Description: Simple wrapper around JSON.parse for specifying default behaviour.
Author: Martin Krisell
Latest version: 1.0.3

# JSON parser wrapper
Simple wrapper for ```JSON.parse()``` with the option to set default data type, in case of parse error (e.g. empty string).

# Installation
```npm install @krisell/parser```

# How to use
```Parser.json(stringifiedData)```  will return ```{}``` if ```stringifiedData``` can't be parsed, whereas ```Parser.json(stringifiedData, 'array')``` will return ```[]```. 

The data and type settings can also be provided with an options object.

```JavaScript
Parser.json({
    serialized: stringifiedData,
    type: 'array'
})
```

That's all there is to it.
npm package: @krisell/query-string
Description: Read URL query string data
Author: Martin Krisell
Latest version: 1.0.0

# QueryString
This packages makes it easy to read URL query string data, and to specify default values, in a very simple way.

# Installation
```npm install @krisell/query-string```

# How to use
```js
import QueryString from '@krisell/query-string'

// The following will return query string value of name, or Martin if the value is not set or is empty.
QueryString.get('name', 'Martin')
```
npm package: @krisell/random
Description: Generate random data. Not for cryptographic purpose.
Author: Martin Krisell
Latest version: 1.1.1

# Generate random data – Not for cryptographic purpose

# Installation
```npm install @krisell/random```

# How to use
```js
import Random from '@krisell/random'

Random.randomString() // Gives a random 20 character long string
Random.randomString(30) // Gives a random 30 character long string
Random.randomDigits(4) // Gives a random 4 digit code
Random.integerBetween(12, 36) // Gives random integers in the interval [12, 36], i.e. including 12 and 36
```

The intended distribution is uniform (all outcomes equally likely), but the used random function is not cryptographically secure. *Do not use* this for chryptographic purposes.
npm package: @krisell/semver-comparison
Description: Invoke actions on web pages by typing specific words
Author: Martin Krisell
Latest version: 1.2.0

# SemverComparison
Compare semantic versioning strings.

## Install
```bash
npm i @krisell/semver-comparison
```

## How to use
```js
import SemverComparison from '@krisell/semver-comparison'

let requiredVersion = new SemverComparison('2.1.3')
if (requiredVersion.isNewerThan(versionRunning)) {
  // The current version is too old
}

if (someVersion.isEqualTo(versionRunning)) {
  // Exaclty the same version
}

if (someVersion.isNewerThanOrEqualTo(versionRunning)) {
  // The union of the two above
}
```

## Licence
MIT
npm package: @krisell/type-trigger
Description: Invoke actions on web pages by typing specific words
Author: Martin Krisell
Latest version: 1.0.8

# TypeTrigger
Invoke actions on web pages by typing specific words. **Zero** runtime dependencies and `< 1KB` using Brotli compression.

## Install
```bash
npm i @krisell/type-trigger
```

## How to use
```js
import TypeTrigger from '@krisell/type-trigger'

TypeTrigger.register('beta', () => {
  // Whatever action you want, for instance `this.showBeta = true` in a Vue app
})

TypeTrigger.register('localtesting', () => {
  // Whatever other action you want, for instance `apiURL = 'http://localhost:5000'`
})
```

As soon as you type `beta` or `localtesting` on the keyboard, the actions will be invoked.
As soon as an unrecognized pattern is written, the detection is reset, i.e. typing `bettabeetaSomeRandombeta` will trigger on the last four characters, not before. Typing `monkeycode` would trigger both `monkey` and `keycode`.

## Use cases
 * Activate beta features
 * Redirect requests to local/testing domains
 * Show debug information (nothing secret though)
 * Administrative work, e.g. login as other user (of course provided user has authorization)

The trigger words are not intended to be secret or sensitive, just undocumented. It's easier to add a trigger word than having to create a custom admin interface, or forcing someone to add a custom LocalStorage value or add a query parameter for testing purposes.

## Notes
TypeTrigger listens for keypress events on `window.document`. Changing this to a specified dom element could be a future addition, feel free to add an issue or send in a PR. Note however that it only listens after the first registration, i.e. only importing the package does not activate it or add the listener. It uses one listener in total, not one per registration.

If you stop the propagation of keypress events, it will not reach this package.

## Licence
MIT
npm package: @krish-dev/cordova-plugin-k-usb-nfc
Description: Cordova USB NFC card reader
Author: Krishnendu Sekhar Das
Latest version: 0.0.2

# USB CCID NFC Reader Cordova plugin
Cordova plugin to communication with USB CCID NFC Reader via USB (OTG).

## Platform Support
* android

## Tested Device
* ACS ACR122U
* HID OMNIKEY 5022 CL

# Usage

## How to add plugin
Type following command from CLI to add this plugin

```
    cordova plugin add cordova-plugin-k-usb-nfc
```

The plugin creates the object `KUsbNfc` into DOM.

## Methods

- [KUsbNfc.connect](#connect)
- [KUsbNfc.disconnect](#disconnect)


## connect

### Description

This method should call once while platform get ready. Once it get connected, then the device information will return into the success callback. Tag information also return into same success callback while tag is present into device.

### Types

```
connect(
    callbackSuccess: (res: any) => void, 
    callbackError: (err: any) => void
    ): void;
```

## disconnect

### Description

This method should invoke to close the usb port for device.

### Types

```
disconnect(
    callbackSuccess: (res: any) => void,
    callbackError: (err: any) => void
    ): void;
```
npm package: @krishanjinbo/vue-markdown-stream
Description: Stream markdown content with Vue 3 component blocks — powered by markdown-it-container
Author: hanlang123
Latest version: 1.0.0

# vue-markdown-stream

> 流式 Markdown 渲染 + Vue 3 组件块，基于 `markdown-it-container`

[![npm](https://img.shields.io/npm/v/@krishanjinbo/vue-markdown-stream)](https://www.npmjs.com/package/@krishanjinbo/vue-markdown-stream)
[![license](https://img.shields.io/badge/license-MIT-blue)](./LICENSE)

在 AI 流式输出场景中，将 `:::alert`、`:::card` 等 Markdown 容器块实时渲染为真实 Vue 3 组件，支持响应式 props 和 slot 内容。

**📖 [完整文档](https://hanlang123.github.io/vue-markdown-stream/) · [在线演示](https://hanlang123.github.io/vue-markdown-stream/demo)**

## 特性

- ⚡ **流式打字机渲染** — 逐字追加，自动补全未闭合 `:::` 块
- 🧩 **Vue 组件块** — `:::alert` / `:::card` 渲染为真实 Vue 组件（响应式 props + slot）
- 🔌 **完全可扩展** — 5 行代码注册任意自定义块组件
- 🪶 **轻量** — 基于 `DOMParser` + `h()` VNode 树，无运行时编译，bundle 增量约 40KB

## 安装

```bash
npm install @krishanjinbo/vue-markdown-stream markdown-it markdown-it-container
```

## 快速上手

```vue
<script setup lang="ts">
import { computed } from 'vue'
import { MarkdownRenderer, useStreamingText } from '@krishanjinbo/vue-markdown-stream'

const { text, isStreaming, startStream, resetStream } = useStreamingText()
const display = computed(() => isStreaming.value ? text.value + '▍' : text.value)
</script>

<template>
  <button @click="startStream">开始流式输出</button>
  <button @click="resetStream">重置</button>
  <MarkdownRenderer :content="display" />
</template>
```

## Markdown 语法

```markdown
::: alert info
**提示**：这是一个 Info 告警块。
:::

::: alert warning
注意：`未闭合的块`在流式中间态会被自动补全。
:::

::: card 数据卡片标题
| 列A | 列B |
|-----|-----|
| 值1 | 值2 |
:::
```

## 渲染架构

```
流式 chunk
  → autoCloseContainers()       补全未闭合 ::: 块
  → markdown-it + container     输出含 <vue-block> 的 HTML
  → DOMParser                   HTML → DOM 树
  → h() VNode 构建              <vue-block> → Vue 组件 VNode
  → MarkdownRenderer            渲染输出
```

## 本地开发

```bash
npm install
npm run dev          # http://localhost:5173/
npm run build        # App 构建
npm run build:lib    # 库构建（dist/）
npm run docs:dev     # 文档本地预览
npm run docs:build   # 文档构建
```

## License

[MIT](./LICENSE) © 2026 hanlang123
npm package: @krishanmarco/mantine-core
Description: React components library focused on usability, accessibility and developer experience
Author: Vitaly Rtishchev
Latest version: 8.3.10

# Mantine core

[![npm](https://img.shields.io/npm/dm/@mantine/core)](https://www.npmjs.com/package/@mantine/core)

Mantine core components library.

[View documentation](https://mantine.dev/)

## Installation

```bash
# With yarn
yarn add @mantine/core @mantine/hooks

# With npm
npm install @mantine/core @mantine/hooks
```

## License

MIT
npm package: @krishkrosh/repl-auth
Description: Easy Repl Auth Functions
Author: Krish Shah
Latest version: 1.0.2

# Repl Authentication
Repl Authentication is a simple way to allow users to log in, and access their information.

## Get started
```js
const express = require('express'); 
const { getUserInfo } = require('../index.js')

const app = express();
app.use(express.static('public'));

app.get('/', async function(req, res) {
  const userInfo = getUserInfo(req)
  console.log(userInfo)
}
```

## Docs

> `getUserInfo(Request req)`

Gets all user info. Returns object.
```js
const userInfo = getUserInfo(req)
```

## Tests
```sh
npm run test
```
Then login and assure that it says "server tests passed"
npm package: @krishna.kommuri/cryptlib
Description: CryptLib uses AES 256 for encryption or decryption. This library can be used for encryption and decryption of strings using Node on iOS, Android and Windows
Author: Abdul Khan
Latest version: 1.0.3

# cryptlib [![Build Status](https://travis-ci.org/invalidred/cryptlib.svg?branch=master)](https://travis-ci.org/invalidred/cryptlib)

A module to encrypt/decrypt string in Node, written in ES6 (src folder) and transpiled using Babel to ES5(dist folder).

Using companion framework libraries, you should be able to encrypt/decrypt between node, iOS, Android and Windows platforms.

Companion libs can be found here: [Cross Platform AES Encryption](https://github.com/Pakhee/Cross-platform-AES-encryption)


## Installation

`npm install cryptlib --save`

## Usage

### Encrypt

```javascript
var cryptLib = require('cryptlib'),
    iv = cryptLib.generateRandomIV(16), //16 bytes = 128 bit
    key = cryptLib.getHashSha256('my secret key', 32), //32 bytes = 256 bits
    encryptedText = cryptLib.encrypt('This is the text to be encrypted', key, iv);
```

### Decrypt

```javascript
var cryptLib = require('cryptlib'),
    iv = 'iv vector used for encryption',
    key = cryptLib.getHashSha256('my secret key', 32), //32 bytes = 256 bits
    originalText = cryptLib.decrypt('M2rfrn9DqNHJe3Hev9nMxKKgIHoqUsc7FJM+tBGxIrl3Wk9UeKIQ5fRUUZF3q2i5', key, iv);
```

## Run Code Sample

`npm start`

## Tests

`npm test`

## Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style.
Add unit tests for any new or changed functionality. Lint and test your code.

## Release History

* 2015-09-14	1.0.3 fixed issue with Package.json
* 2015-07-31    1.0.2 Integrated travis ci
* 2015-07-30    1.0.1 Few basic structure changes
* 2015-07-26    1.0.0 Initial release

## License

MIT license; see [LICENSE](./LICENSE).

(c) 2015 by Abdul Khan and Alexey Novak