open-index/open-npm huggingface dataset:
npm package: @hanmotec/flex-client-api
Description: ## 使用方法
Author: Henry Feng
Latest version: 0.0.1

# 动态表单和查询客户端API

## 使用方法

### 安装

```shell
npm i -D @aoss/flex-form-client-api
```

### 使用

```typescript

import FlexClientAPI from "@aoss/flex-form-client-api"

const YOUR_PROJECT_CODE = 'your_project_code';
const flexProxy = new RestfulService('http://your-flex-server/', );

let flexClient = FlexClientAPI.initialize(YOUR_PROJECT_CODE, flexProxy);

```

### 读取当前租户的动态查询

```typescript

await flexClient.getQuery(YOUR_QUERY_CODE);

```
npm package: @hanmotec/flex-common-api
Description: ## 卡片字段
Author: Henry Feng
Latest version: 0.1.0

# 动态表单公共api

## 卡片字段

卡片字段用于描述卡片中每个展示的字段，包括类型，标题，大小等。卡片的属性如下：

| 属性         | 名称         | 类型      | 默认值   | 备注                                    |
|------------|------------|---------|-------|---------------------------------------|
| name       | 字段的名称      | string  |       | 字段的名称                                 |
| wrapperKey | 嵌套对象的key   | string  |       | 嵌套对象属性名称，支持多层嵌套属性，用.分割                |
| keyCode    | 字段的属性      | string  |       | 字段对应的属性名称，如果不存在，使用字段名称     |
| label      | 标签         | string  | -     | 字段的标签文字                               |
| required   | 是否必填       | boolean | false | 是否必填，在标签中现在*，同时提交时做校验                 |
| type       | 类型         | string  | -     | 类型，各种类型请参照字段类型实现接口                    |
| dicName    | 数据字典名      | string  | -     | 对于所有使用数据字典展示key-value组的类型定义管理的数据字典编码  |
| isDummy    | 是否虚拟字段     | boolean | true  | 是否虚拟字段，虚拟字段不存储，根据数据计算得出               |
| enable     | 是否可用       | boolean | true  | 是否可用                                  |
| readonly   | 是否只读       | boolean | false | 是否只读字段                                |
| visibility | 是否只读       | enum    | 1     | -1 - 隐藏不占位<br/>0 - 隐藏但是占据位置<br/>1 - 显示 |
| style      | 额外的样式      | string  | -     | 字段的额外样式                               |
| panelAttrs | 字段的布局属性    | object  | -     | 现在仅仅包含span，用于指定占用的列数，未来准备支持rowSpan    |
| attrs      | 字段的属性      | object  | -     | 字段的其他属性，比如下拉框等，每个类型中有处理               |
| onChange   | 值发送变化的事件处理 | string  | -     | 当数据变化时的处理函数名                          |
| onBlur     | 失去焦点的事件    | string  | -     | 当失去焦点时的处理函数名                          |

## 动态卡片

动态卡片请参考[动态卡片文档](./动态卡片.md)

## 动态表单

动态表单请参考[动态表单文档](./动态表单.md)

## 动态脚本编译

### 用法

```typescript
import scriptEngine from "@hanmotec/flex-common-api"

const dicLoader = (dicNames) => {
    //根据数据字典的名称读取对应的数据字典
}

onMount(async () => {
    form = await loadForm(); //从动态表单系统读取表单的脚本和布局
    let formClass = scriptEngine.build(utils, form, dicLoader);
    let bizForm = new formClass(data);
})



```
npm package: @hanmotec/flex-service-api
Description: ## 简述
Author: Henry Feng
Latest version: 0.0.4

# 服务器端api

## 简述

FlexServiceAPI 是一个单例类，用于与后端服务进行交互。它提供了获取查询数据的方法，并使用 MD5 进行签名验证。通过 Axios 发送 HTTP 请求与后端通信。  
这个库用于使用动态表单和查询的服务器端，通过引入这个库，可以调用动态表单服务，获取指定的动态查询语句，然后在项目中执行查询，获取符合条件的数据并返回给客户端。

## 安装

通过npm安装

```shell
npm i -D @anmed/flex-service-api
```

## 用法

### 初始化

在使用 FlexServiceAPI 之前，必须先进行初始化。调用 initialize 方法并传入端点、项目代码和密钥。

```typescript

import FlexServiceAPI from "./FlexServiceAPI";


const endpoint = 'https://api.yourservice.com';
const projectCode = 'your_project_code';
const secretKey = 'your_secret_key';

// 初始化 FlexServiceAPI
FlexServiceAPI.initialize(endpoint, projectCode, secretKey);

```

### 获取实例

在初始化后，可以通过 getInstance 方法获取 FlexServiceAPI 的实例。

```typescript
const api = FlexServiceAPI.getInstance();
```

### 获取查询数据

使用 **getQuery** 方法获取查询数据。

```typescript
const tenantCode = 'your_tenant_code';
const queryCode = 'your_query_code';
const isTrial = true;

let query = api.getQuery(tenantCode, queryCode, isTrial);
```

#### 方法

**static initialize(endpoint: string, projectCode: string, secretKey: string): FlexServiceAPI**
* 初始化 FlexServiceAPI 的实例。
* 参数:
  * endpoint (string): API 端点。
  * projectCode (string): 项目代码。
  * secretKey (string): 密钥。
* 返回值:
  * FlexServiceAPI: 已初始化的 FlexServiceAPI 实例。

**static getInstance(): FlexServiceAPI**
* 获取已初始化的 FlexServiceAPI 实例。
* 返回值:
  * FlexServiceAPI: FlexServiceAPI 实例。

**async getQuery(tenantCode: string, queryCode: string, isTrial: boolean): Promise<any>**
* 获取查询数据。
* 参数:
  * tenantCode (string): 租户代码。
  * queryCode (string): 查询代码。
  * isTrial (boolean): 是否为试用。
* 返回值:
  * Promise<any>: 查询数据。
  
#### 私有方法
**private buildQuery(className: string, query: string): any**
* 构建查询体。
* 参数:
  * className (string): 类名。
  * query (string): 查询脚本。
* 返回值:
  * any: 构建后的查询体。
  
#### 注意事项
* FlexServiceAPI 类是一个单例类，必须先调用 initialize 方法进行初始化，然后才能调用 getInstance 获取实例。
* 初始化多次会抛出错误，确保只初始化一次。
* 在使用任何方法之前，请确保已正确初始化 FlexServiceAPI。 
  
### 结论
FlexServiceAPI 提供了一种便捷的方法来与后端服务进行交互。通过简单的初始化和方法调用，您可以轻松获取查询数据并确保数据的完整性和安全性。
npm package: @hanna.r/mcp-document-reader
Description: MCP server for AI-assisted PDF reading with pagination, search, and page navigation.
Author: hannasdev
Latest version: 1.0.0

# mcp-document-reader

MCP server for AI-assisted PDF reading with pagination, search, and page navigation.

Designed to let AI assistants read large documents without filling the context window from page 1 every time. The model can chunk through a book, jump to any section by keyword, and pick up exactly where it left off.

## Tools

| Tool | Description |
|---|---|
| `list_documents` | List all documents in the configured directory |
| `get_document_info` | Get page count and file size without extracting text |
| `read_document` | Read a page range (default: 50-page chunks) |
| `search_document` | Keyword search — returns page numbers and context snippets |

Every `read_document` response includes a `[Pages X–Y of Z total]` header and a continuation hint so the model knows exactly where to call next.

## Quick start (Claude Desktop / npx)

Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):

```json
{
  "mcpServers": {
    "documents": {
      "command": "npx",
      "args": ["-y", "@hanna.r/mcp-document-reader", "--stdio", "--dir", "/path/to/your/docs"]
    }
  }
}
```

No install needed — `npx` pulls the package on first run.

## Self-hosted (Docker / SSE)

```yaml
# docker-compose.yml
services:
  mcp-document-reader:
    image: node:22-alpine
    working_dir: /app
    command: node index.js
    environment:
      DOC_DIR: /docs
      HTTP_PORT: "3000"
    volumes:
      - ./docs:/docs:ro
    ports:
      - "3000:3000"
```

Register the SSE endpoint in your MCP gateway:
```json
{ "url": "http://mcp-document-reader:3000/sse" }
```

A `GET /healthz` endpoint is available for Docker healthchecks.

## CLI reference

```
node index.js [options]

  --dir <path>    Directory to serve documents from  (default: $DOC_DIR or cwd)
  --port <n>      HTTP port for SSE mode             (default: $HTTP_PORT or 3000)
  --stdio         Use stdio transport instead of SSE
```

## Environment variables

| Variable | Default | Description |
|---|---|---|
| `DOC_DIR` | `.` | Document directory |
| `HTTP_PORT` | `3000` | SSE server port |
| `MCP_TRANSPORT` | — | Set to `stdio` to use stdio transport |

## Supported formats

- PDF (`.pdf`)

## Requirements

Node.js >= 18
npm package: @hanna84/mcp-document-reader
Description: MCP server for AI-assisted PDF reading with pagination, search, and page navigation.
Author: hannasdev
Latest version: 1.0.0

# mcp-document-reader

MCP server for AI-assisted PDF reading with pagination, search, and page navigation.

Designed to let AI assistants read large documents without filling the context window from page 1 every time. The model can chunk through a book, jump to any section by keyword, and pick up exactly where it left off.

## Tools

| Tool | Description |
|---|---|
| `list_documents` | List all documents in the configured directory |
| `get_document_info` | Get page count and file size without extracting text |
| `read_document` | Read a page range (default: 50-page chunks) |
| `search_document` | Keyword search — returns page numbers and context snippets |

Every `read_document` response includes a `[Pages X–Y of Z total]` header and a continuation hint so the model knows exactly where to call next.

## Quick start (Claude Desktop / npx)

Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):

```json
{
  "mcpServers": {
    "documents": {
      "command": "npx",
      "args": ["-y", "@hanna84/mcp-document-reader", "--stdio", "--dir", "/path/to/your/docs"]
    }
  }
}
```

No install needed — `npx` pulls the package on first run.

## Self-hosted (Docker / SSE)

```yaml
# docker-compose.yml
services:
  mcp-document-reader:
    image: node:22-alpine
    working_dir: /app
    command: node index.js
    environment:
      DOC_DIR: /docs
      HTTP_PORT: "3000"
    volumes:
      - ./docs:/docs:ro
    ports:
      - "3000:3000"
```

Register the SSE endpoint in your MCP gateway:
```json
{ "url": "http://mcp-document-reader:3000/sse" }
```

A `GET /healthz` endpoint is available for Docker healthchecks.

## CLI reference

```
node index.js [options]

  --dir <path>    Directory to serve documents from  (default: $DOC_DIR or cwd)
  --port <n>      HTTP port for SSE mode             (default: $HTTP_PORT or 3000)
  --stdio         Use stdio transport instead of SSE
```

## Environment variables

| Variable | Default | Description |
|---|---|---|
| `DOC_DIR` | `.` | Document directory |
| `HTTP_PORT` | `3000` | SSE server port |
| `MCP_TRANSPORT` | — | Set to `stdio` to use stdio transport |

## Supported formats

- PDF (`.pdf`)

## Requirements

Node.js >= 18