@luffysolution/omnischolar-pi 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/README.zh-CN.md +2 -2
- package/docs/CONFIGURATION.en.md +16 -5
- package/docs/CONFIGURATION.md +16 -5
- package/docs/INSTALLATION.en.md +2 -2
- package/docs/INSTALLATION.md +2 -2
- package/omnischolar.config.example.json +20 -0
- package/package.json +1 -1
- package/pi-extension/dist/index.js +2 -2
package/README.md
CHANGED
|
@@ -60,7 +60,7 @@ In the ChatGPT desktop app, restart the app, open **Plugins**, select the **Omni
|
|
|
60
60
|
The plugin bundles all eight Skills and starts its local MCP server with the pinned PyPI release:
|
|
61
61
|
|
|
62
62
|
```sh
|
|
63
|
-
uvx --from luffysolution-omnischolar==0.1.
|
|
63
|
+
uvx --from luffysolution-omnischolar==0.1.6 omnischolar mcp
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
No separate `pip install` is required for this plugin path. The first MCP start needs network access so `uvx` can download and cache the package. Provider credentials and optional service settings remain in your OmniScholar configuration; plugin installation does not collect them.
|
|
@@ -134,7 +134,7 @@ Create a labelled illustration of this mechanism. Treat it as a draft, not exper
|
|
|
134
134
|
|
|
135
135
|
## Configuration
|
|
136
136
|
|
|
137
|
-
On the first MCP start or installer run, if no discoverable config exists, OmniScholar creates
|
|
137
|
+
On the first MCP start or installer run, if no discoverable config exists, OmniScholar creates a complete user-level `omnischolar.config.json` template with all service sections and credential fields. You can also create it explicitly with `omnischolar config init`. API keys may be entered directly as `apiKey`; `apiKeyEnv` is an optional alternative when you prefer environment variables.
|
|
138
138
|
|
|
139
139
|
A small local configuration can start with Zotero and the output directory:
|
|
140
140
|
|
package/README.zh-CN.md
CHANGED
|
@@ -58,7 +58,7 @@ codex plugin add omnischolar@omnischolar
|
|
|
58
58
|
插件会同时安装 8 个 Skills,并使用固定的 PyPI 版本启动本地 MCP:
|
|
59
59
|
|
|
60
60
|
```sh
|
|
61
|
-
uvx --from luffysolution-omnischolar==0.1.
|
|
61
|
+
uvx --from luffysolution-omnischolar==0.1.6 omnischolar mcp
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
采用插件安装方式时无需另外执行 `pip install`。第一次启动 MCP 需要联网,以便 `uvx` 下载并缓存包。各服务的凭据与可选配置仍保存在 OmniScholar 配置中,插件安装不会收集这些信息。
|
|
@@ -132,7 +132,7 @@ omnischolar mcp
|
|
|
132
132
|
|
|
133
133
|
## 配置
|
|
134
134
|
|
|
135
|
-
首次启动 MCP
|
|
135
|
+
首次启动 MCP 或执行安装命令时,如果没有可发现的配置,程序会在用户配置目录自动创建包含所有服务区块和认证字段的完整 `omnischolar.config.json` 模板。也可以用 `omnischolar config init` 主动创建。API key 可以直接填写在配置文件的 `apiKey` 中;如果希望使用环境变量,也可以填写 `apiKeyEnv`。
|
|
136
136
|
|
|
137
137
|
最小的本地配置可以只写 Zotero 和输出目录:
|
|
138
138
|
|
package/docs/CONFIGURATION.en.md
CHANGED
|
@@ -16,7 +16,7 @@ The first matching file is used; files are not merged:
|
|
|
16
16
|
|
|
17
17
|
Relative paths resolve from the config file. Misspelled fields and invalid values are rejected.
|
|
18
18
|
|
|
19
|
-
If none of the first four sources exists, the first MCP start or installer run creates
|
|
19
|
+
If none of the first four sources exists, the first MCP start or installer run creates a complete user-level configuration template. The template includes all service sections, `apiKey`, `apiKeyEnv`, and Vertex fields such as `project` and `location`. On Windows this is normally `%LOCALAPPDATA%\\omnischolar\\omnischolar.config.json`, on Linux `~/.config/omnischolar/omnischolar.config.json`, and on macOS `~/Library/Application Support/omnischolar/omnischolar.config.json`. You can also run `omnischolar config init`. Existing configuration is never overwritten. Nested files created by older versions are not migrated or read automatically; copy settings manually if needed.
|
|
20
20
|
|
|
21
21
|
## Minimal config
|
|
22
22
|
|
|
@@ -41,26 +41,37 @@ If none of the first four sources exists, the first MCP start or installer run c
|
|
|
41
41
|
|
|
42
42
|
## API keys
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
API keys may be entered directly in the provider's `apiKey` field:
|
|
45
45
|
|
|
46
46
|
```json
|
|
47
47
|
{
|
|
48
48
|
"schemaVersion": 1,
|
|
49
49
|
"ai4scholar": {
|
|
50
50
|
"enabled": true,
|
|
51
|
-
"
|
|
51
|
+
"apiKey": "paste Ai4Scholar API key here",
|
|
52
52
|
"allowPaid": false
|
|
53
53
|
},
|
|
54
54
|
"data": {
|
|
55
55
|
"materialsProject": {
|
|
56
56
|
"enabled": true,
|
|
57
|
-
"
|
|
57
|
+
"apiKey": "paste Materials Project API key here"
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
Alternatively, set `apiKeyEnv` to read the key from an environment variable:
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"mineru": {
|
|
68
|
+
"enabled": true,
|
|
69
|
+
"apiKeyEnv": "OMNISCHOLAR_MINERU_API_KEY"
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Credential order is `apiKey`, the variable named by `apiKeyEnv`, then the service's default environment variable. Direct config entry is the simplest local setup, but the file then contains a secret: restrict its permissions and never commit it or copy it into agent MCP configuration.
|
|
64
75
|
|
|
65
76
|
| Service | Key or account requirement |
|
|
66
77
|
|---|---|
|
package/docs/CONFIGURATION.md
CHANGED
|
@@ -16,7 +16,7 @@ OmniScholar 使用 `schemaVersion: 1` 的 JSON 配置。可直接复制根目录
|
|
|
16
16
|
|
|
17
17
|
相对路径以配置文件所在目录为基准。拼错字段名或填写不合法的值时,程序会直接报错。
|
|
18
18
|
|
|
19
|
-
如果前四项都不存在,第一次启动 MCP
|
|
19
|
+
如果前四项都不存在,第一次启动 MCP 或执行安装命令时会自动创建用户级完整配置模板。模板包含所有服务区块、`apiKey`、`apiKeyEnv` 以及 Vertex 的 `project`、`location` 等字段;Windows 通常位于 `%LOCALAPPDATA%\omnischolar\omnischolar.config.json`,Linux 通常位于 `~/.config/omnischolar/omnischolar.config.json`,macOS 通常位于 `~/Library/Application Support/omnischolar/omnischolar.config.json`。也可以运行 `omnischolar config init` 主动创建;程序不会覆盖已有配置。旧版本生成的嵌套目录文件不会自动迁移或读取,请按需手动复制设置。
|
|
20
20
|
|
|
21
21
|
## 最小配置
|
|
22
22
|
|
|
@@ -41,26 +41,37 @@ OmniScholar 使用 `schemaVersion: 1` 的 JSON 配置。可直接复制根目录
|
|
|
41
41
|
|
|
42
42
|
## API key
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
API key 可以直接写入对应服务的 `apiKey`。例如:
|
|
45
45
|
|
|
46
46
|
```json
|
|
47
47
|
{
|
|
48
48
|
"schemaVersion": 1,
|
|
49
49
|
"ai4scholar": {
|
|
50
50
|
"enabled": true,
|
|
51
|
-
"
|
|
51
|
+
"apiKey": "在这里填写 Ai4Scholar API key",
|
|
52
52
|
"allowPaid": false
|
|
53
53
|
},
|
|
54
54
|
"data": {
|
|
55
55
|
"materialsProject": {
|
|
56
56
|
"enabled": true,
|
|
57
|
-
"
|
|
57
|
+
"apiKey": "在这里填写 Materials Project API key"
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
也可以只填写变量名,让程序从环境变量读取:
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"mineru": {
|
|
68
|
+
"enabled": true,
|
|
69
|
+
"apiKeyEnv": "OMNISCHOLAR_MINERU_API_KEY"
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
读取顺序为 `apiKey`、`apiKeyEnv` 指向的环境变量、该服务的默认环境变量。直接写入配置文件最简单,但该文件包含敏感信息,请限制文件权限,不要提交到版本库或复制到 Agent 的 MCP 配置中。
|
|
64
75
|
|
|
65
76
|
| 服务 | 是否需要 key 或其他信息 |
|
|
66
77
|
|---|---|
|
package/docs/INSTALLATION.en.md
CHANGED
|
@@ -44,7 +44,7 @@ Restart the ChatGPT desktop app after adding the marketplace. Open **Plugins**,
|
|
|
44
44
|
The installed plugin contains `plugin.json`, `skills/`, and `mcp.json`. Its MCP entry executes:
|
|
45
45
|
|
|
46
46
|
```sh
|
|
47
|
-
uvx --from luffysolution-omnischolar==0.1.
|
|
47
|
+
uvx --from luffysolution-omnischolar==0.1.5 omnischolar mcp
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
`uvx` creates an isolated environment and caches the exact release, so this route does not require a separate `pip install`. The first start requires package-index access. To fetch updates to the Git marketplace, run:
|
|
@@ -83,7 +83,7 @@ Choose `--scope project` to share the enabled plugin through repository settings
|
|
|
83
83
|
Claude Code copies the repository-root plugin into its versioned cache, discovers the eight folders under `skills/`, and starts `.mcp.json` automatically when the plugin is enabled. The MCP command is pinned to:
|
|
84
84
|
|
|
85
85
|
```sh
|
|
86
|
-
uvx --from luffysolution-omnischolar==0.1.
|
|
86
|
+
uvx --from luffysolution-omnischolar==0.1.5 omnischolar mcp
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
The first MCP start needs package-index access. Skills are namespaced with `omnischolar`, for example `/omnischolar:scholar-search` and `/omnischolar:zotero-research`.
|
package/docs/INSTALLATION.md
CHANGED
|
@@ -44,7 +44,7 @@ codex plugin add omnischolar@omnischolar
|
|
|
44
44
|
安装后的插件包含 `plugin.json`、`skills/` 和 `mcp.json`。其 MCP 配置执行:
|
|
45
45
|
|
|
46
46
|
```sh
|
|
47
|
-
uvx --from luffysolution-omnischolar==0.1.
|
|
47
|
+
uvx --from luffysolution-omnischolar==0.1.5 omnischolar mcp
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
`uvx` 会创建隔离环境并缓存该精确版本,因此无需另行运行 `pip install`。第一次启动需要能够访问 Python 包索引。若要更新 Git Marketplace:
|
|
@@ -83,7 +83,7 @@ claude plugin install omnischolar@omnischolar --scope user
|
|
|
83
83
|
Claude Code 会把仓库根插件复制到版本化缓存,发现 `skills/` 下的 8 个 Skills,并在插件启用时自动启动 `.mcp.json`。MCP 命令固定为:
|
|
84
84
|
|
|
85
85
|
```sh
|
|
86
|
-
uvx --from luffysolution-omnischolar==0.1.
|
|
86
|
+
uvx --from luffysolution-omnischolar==0.1.5 omnischolar mcp
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
第一次启动 MCP 需要能够访问 Python 包索引。Skills 使用 `omnischolar` 命名空间,例如 `/omnischolar:scholar-search` 和 `/omnischolar:zotero-research`。
|
|
@@ -37,16 +37,19 @@
|
|
|
37
37
|
"providers": {
|
|
38
38
|
"semantic-scholar": {
|
|
39
39
|
"enabled": true,
|
|
40
|
+
"apiKey": "",
|
|
40
41
|
"apiKeyEnv": "OMNISCHOLAR_SEMANTIC_SCHOLAR_API_KEY",
|
|
41
42
|
"maxPages": 10
|
|
42
43
|
},
|
|
43
44
|
"openalex": {
|
|
44
45
|
"enabled": true,
|
|
46
|
+
"apiKey": "",
|
|
45
47
|
"email": "researcher@example.edu",
|
|
46
48
|
"maxPages": 10
|
|
47
49
|
},
|
|
48
50
|
"pubmed": {
|
|
49
51
|
"enabled": true,
|
|
52
|
+
"apiKey": "",
|
|
50
53
|
"apiKeyEnv": "OMNISCHOLAR_NCBI_API_KEY",
|
|
51
54
|
"email": "researcher@example.edu",
|
|
52
55
|
"tool": "omnischolar",
|
|
@@ -54,20 +57,24 @@
|
|
|
54
57
|
},
|
|
55
58
|
"arxiv": {
|
|
56
59
|
"enabled": true,
|
|
60
|
+
"apiKey": "",
|
|
57
61
|
"maxPages": 10
|
|
58
62
|
},
|
|
59
63
|
"crossref": {
|
|
60
64
|
"enabled": true,
|
|
65
|
+
"apiKey": "",
|
|
61
66
|
"email": "researcher@example.edu",
|
|
62
67
|
"maxPages": 10
|
|
63
68
|
},
|
|
64
69
|
"unpaywall": {
|
|
65
70
|
"enabled": false,
|
|
71
|
+
"apiKey": "",
|
|
66
72
|
"email": "researcher@example.edu",
|
|
67
73
|
"maxPages": 10
|
|
68
74
|
},
|
|
69
75
|
"easyscholar": {
|
|
70
76
|
"enabled": false,
|
|
77
|
+
"apiKey": "",
|
|
71
78
|
"apiKeyEnv": "OMNISCHOLAR_EASYSCHOLAR_API_KEY",
|
|
72
79
|
"maxPages": 5
|
|
73
80
|
}
|
|
@@ -76,6 +83,7 @@
|
|
|
76
83
|
"ai4scholar": {
|
|
77
84
|
"enabled": false,
|
|
78
85
|
"baseUrl": "https://ai4scholar.net",
|
|
86
|
+
"apiKey": "",
|
|
79
87
|
"apiKeyEnv": "OMNISCHOLAR_AI4SCHOLAR_API_KEY",
|
|
80
88
|
"timeoutSeconds": 60,
|
|
81
89
|
"maxResponseBytes": 16777216,
|
|
@@ -90,6 +98,7 @@
|
|
|
90
98
|
"enabled": false,
|
|
91
99
|
"baseUrl": "https://mineru.net/api/v4",
|
|
92
100
|
"lightweightBaseUrl": "https://mineru.net/api/v1/agent",
|
|
101
|
+
"apiKey": "",
|
|
93
102
|
"apiKeyEnv": "OMNISCHOLAR_MINERU_API_KEY",
|
|
94
103
|
"model": "pipeline",
|
|
95
104
|
"cacheDirectory": ".omnischolar/mineru",
|
|
@@ -103,11 +112,13 @@
|
|
|
103
112
|
"materialsProject": {
|
|
104
113
|
"enabled": false,
|
|
105
114
|
"baseUrl": "https://api.materialsproject.org",
|
|
115
|
+
"apiKey": "",
|
|
106
116
|
"apiKeyEnv": "OMNISCHOLAR_MATERIALS_PROJECT_API_KEY",
|
|
107
117
|
"maxPages": 10
|
|
108
118
|
},
|
|
109
119
|
"casCommonChemistry": {
|
|
110
120
|
"enabled": false,
|
|
121
|
+
"apiKey": "",
|
|
111
122
|
"apiKeyEnv": "OMNISCHOLAR_CAS_API_KEY",
|
|
112
123
|
"baseUrl": null,
|
|
113
124
|
"contractFile": null
|
|
@@ -121,6 +132,7 @@
|
|
|
121
132
|
"providers": {
|
|
122
133
|
"openai": {
|
|
123
134
|
"enabled": false,
|
|
135
|
+
"apiKey": "",
|
|
124
136
|
"apiKeyEnv": "OMNISCHOLAR_OPENAI_API_KEY",
|
|
125
137
|
"baseUrl": "https://api.openai.com/v1",
|
|
126
138
|
"models": {
|
|
@@ -133,6 +145,7 @@
|
|
|
133
145
|
},
|
|
134
146
|
"google": {
|
|
135
147
|
"enabled": false,
|
|
148
|
+
"apiKey": "",
|
|
136
149
|
"apiKeyEnv": "OMNISCHOLAR_GEMINI_API_KEY",
|
|
137
150
|
"baseUrl": "https://generativelanguage.googleapis.com/v1beta",
|
|
138
151
|
"models": {},
|
|
@@ -140,6 +153,7 @@
|
|
|
140
153
|
},
|
|
141
154
|
"vertex": {
|
|
142
155
|
"enabled": false,
|
|
156
|
+
"apiKey": "",
|
|
143
157
|
"apiKeyEnv": "OMNISCHOLAR_VERTEX_ACCESS_TOKEN",
|
|
144
158
|
"project": "your-project",
|
|
145
159
|
"location": "us-central1",
|
|
@@ -148,6 +162,7 @@
|
|
|
148
162
|
},
|
|
149
163
|
"xai": {
|
|
150
164
|
"enabled": false,
|
|
165
|
+
"apiKey": "",
|
|
151
166
|
"apiKeyEnv": "OMNISCHOLAR_XAI_API_KEY",
|
|
152
167
|
"baseUrl": "https://api.x.ai/v1",
|
|
153
168
|
"models": {},
|
|
@@ -155,6 +170,7 @@
|
|
|
155
170
|
},
|
|
156
171
|
"fal": {
|
|
157
172
|
"enabled": false,
|
|
173
|
+
"apiKey": "",
|
|
158
174
|
"apiKeyEnv": "OMNISCHOLAR_FAL_API_KEY",
|
|
159
175
|
"baseUrl": "https://fal.run",
|
|
160
176
|
"models": {},
|
|
@@ -162,6 +178,7 @@
|
|
|
162
178
|
},
|
|
163
179
|
"dashscope": {
|
|
164
180
|
"enabled": false,
|
|
181
|
+
"apiKey": "",
|
|
165
182
|
"apiKeyEnv": "OMNISCHOLAR_DASHSCOPE_API_KEY",
|
|
166
183
|
"baseUrl": "https://your-workspace.cn-beijing.maas.aliyuncs.com/api/v1",
|
|
167
184
|
"models": {},
|
|
@@ -171,6 +188,7 @@
|
|
|
171
188
|
},
|
|
172
189
|
"qwen-cloud": {
|
|
173
190
|
"enabled": false,
|
|
191
|
+
"apiKey": "",
|
|
174
192
|
"apiKeyEnv": "OMNISCHOLAR_QWEN_API_KEY",
|
|
175
193
|
"baseUrl": "https://your-workspace.ap-southeast-1.maas.aliyuncs.com/api/v1",
|
|
176
194
|
"models": {},
|
|
@@ -180,6 +198,7 @@
|
|
|
180
198
|
},
|
|
181
199
|
"atlas": {
|
|
182
200
|
"enabled": false,
|
|
201
|
+
"apiKey": "",
|
|
183
202
|
"apiKeyEnv": "OMNISCHOLAR_ATLAS_API_KEY",
|
|
184
203
|
"baseUrl": "https://your-atlas-provider.example/v1",
|
|
185
204
|
"models": {},
|
|
@@ -187,6 +206,7 @@
|
|
|
187
206
|
},
|
|
188
207
|
"custom": {
|
|
189
208
|
"enabled": false,
|
|
209
|
+
"apiKey": "",
|
|
190
210
|
"apiKeyEnv": "OMNISCHOLAR_CUSTOM_IMAGE_API_KEY",
|
|
191
211
|
"baseUrl": "https://images.example.edu/v1",
|
|
192
212
|
"models": {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
2
2
|
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
3
3
|
import { Type } from "typebox";
|
|
4
|
-
const CLIENT_INFO = { name: "omnischolar-pi", version: "0.1.
|
|
4
|
+
const CLIENT_INFO = { name: "omnischolar-pi", version: "0.1.6" };
|
|
5
5
|
export function resultText(result) {
|
|
6
6
|
return result.content
|
|
7
7
|
.map((item) => {
|
|
@@ -39,7 +39,7 @@ export default function omnischolarExtension(pi) {
|
|
|
39
39
|
connection = (async () => {
|
|
40
40
|
transport = new StdioClientTransport({
|
|
41
41
|
command: "uvx",
|
|
42
|
-
args: ["--from", "luffysolution-omnischolar==0.1.
|
|
42
|
+
args: ["--from", "luffysolution-omnischolar==0.1.6", "omnischolar", "mcp"],
|
|
43
43
|
stderr: "pipe",
|
|
44
44
|
});
|
|
45
45
|
client = new Client(CLIENT_INFO);
|