@wener/mcps 1.0.1 → 1.0.4
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.
Potentially problematic release.
This version of @wener/mcps might be problematic. Click here for more details.
- package/README.md +144 -0
- package/dist/index.mjs +213076 -1
- package/dist/mcps-cli.mjs +102547 -59344
- package/lib/chat/handler.js +2 -2
- package/lib/chat/handler.js.map +1 -1
- package/lib/cli-start.js +36 -0
- package/lib/cli-start.js.map +1 -0
- package/lib/cli.js +19 -0
- package/lib/cli.js.map +1 -0
- package/lib/dev.server.js +7 -1
- package/lib/dev.server.js.map +1 -1
- package/lib/index.js +21 -3
- package/lib/index.js.map +1 -1
- package/lib/mcps-cli.js +6 -35
- package/lib/mcps-cli.js.map +1 -1
- package/lib/providers/feishu/def.js +35 -0
- package/lib/providers/feishu/def.js.map +1 -0
- package/lib/providers/findMcpServerDef.js +1 -0
- package/lib/providers/findMcpServerDef.js.map +1 -1
- package/lib/scripts/bundle.js +7 -1
- package/lib/scripts/bundle.js.map +1 -1
- package/lib/server/api-routes.js +7 -8
- package/lib/server/api-routes.js.map +1 -1
- package/lib/server/audit-db.js +64 -0
- package/lib/server/audit-db.js.map +1 -0
- package/lib/server/{audit.js → audit-plugin.js} +72 -126
- package/lib/server/audit-plugin.js.map +1 -0
- package/lib/server/events.js +13 -0
- package/lib/server/events.js.map +1 -0
- package/lib/server/mcp-routes.js +31 -60
- package/lib/server/mcp-routes.js.map +1 -1
- package/lib/server/mcps-router.js +19 -24
- package/lib/server/mcps-router.js.map +1 -1
- package/lib/server/schema.js +22 -2
- package/lib/server/schema.js.map +1 -1
- package/lib/server/server.js +142 -87
- package/lib/server/server.js.map +1 -1
- package/package.json +35 -5
- package/src/chat/handler.ts +2 -2
- package/src/cli-start.ts +43 -0
- package/src/cli.ts +45 -0
- package/src/dev.server.ts +8 -1
- package/src/index.ts +47 -1
- package/src/mcps-cli.ts +6 -48
- package/src/providers/feishu/def.ts +37 -0
- package/src/providers/findMcpServerDef.ts +1 -0
- package/src/scripts/bundle.ts +12 -1
- package/src/server/api-routes.ts +11 -8
- package/src/server/audit-db.ts +65 -0
- package/src/server/{audit.ts → audit-plugin.ts} +69 -142
- package/src/server/events.ts +29 -0
- package/src/server/mcp-routes.ts +30 -58
- package/src/server/mcps-router.ts +21 -29
- package/src/server/schema.ts +23 -2
- package/src/server/server.ts +149 -81
- package/lib/server/audit.js.map +0 -1
- package/lib/server/db.js +0 -97
- package/lib/server/db.js.map +0 -1
- package/src/server/db.ts +0 -115
package/README.md
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# @wener/mcps
|
|
2
|
+
|
|
3
|
+
MCPs as a Service - 统一 MCP 服务代理。
|
|
4
|
+
|
|
5
|
+
一个进程托管多个 MCP 服务器,无需分别启动,支持预配置和动态配置。
|
|
6
|
+
|
|
7
|
+
## 快速开始
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx -y @wener/mcps@latest
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
在当前目录创建 `.mcps.yaml`:
|
|
14
|
+
|
|
15
|
+
```yaml
|
|
16
|
+
servers:
|
|
17
|
+
my-db:
|
|
18
|
+
type: sql
|
|
19
|
+
dbUrl: postgresql://user:pass@localhost/mydb
|
|
20
|
+
|
|
21
|
+
metrics:
|
|
22
|
+
type: prometheus
|
|
23
|
+
url: http://prometheus:9090
|
|
24
|
+
|
|
25
|
+
logs:
|
|
26
|
+
type: tencent-cls
|
|
27
|
+
clientId: ${CLS_CLIENT_ID}
|
|
28
|
+
clientSecret: ${CLS_CLIENT_SECRET}
|
|
29
|
+
region: ap-shanghai
|
|
30
|
+
|
|
31
|
+
upstream:
|
|
32
|
+
type: relay
|
|
33
|
+
url: http://other-mcp:8000
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
服务启动后:
|
|
37
|
+
|
|
38
|
+
- 预配置的 server 通过 `/mcp/{name}` 暴露
|
|
39
|
+
- 每个类型还暴露 `/mcp/{type}` 动态端点,通过请求头传入配置
|
|
40
|
+
|
|
41
|
+
## 内置 MCP 服务器
|
|
42
|
+
|
|
43
|
+
| 类型 | 端点 | 说明 | 动态 Header |
|
|
44
|
+
|------|------|------|-------------|
|
|
45
|
+
| `sql` | `/mcp/sql` | SQL 查询(MySQL、PostgreSQL、SQLite、MSSQL) | `X-DB-URL`, `X-DB-READ-URL`, `X-DB-WRITE-URL` |
|
|
46
|
+
| `prometheus` | `/mcp/prometheus` | Prometheus 监控查询 | `X-SERVICE-URL` |
|
|
47
|
+
| `tencent-cls` | `/mcp/tencent-cls` | 腾讯云日志服务 | `X-CLS-SECRET-ID`\*, `X-CLS-SECRET-KEY`\*, `X-CLS-REGION`, `X-CLS-ENDPOINT` |
|
|
48
|
+
| `relay` | `/mcp/relay` | 代理转发到其他 MCP 服务器 | `X-MCP-URL`\*, `X-MCP-TYPE` |
|
|
49
|
+
|
|
50
|
+
`*` 为必填项
|
|
51
|
+
|
|
52
|
+
### sql
|
|
53
|
+
|
|
54
|
+
```yaml
|
|
55
|
+
servers:
|
|
56
|
+
my-db:
|
|
57
|
+
type: sql
|
|
58
|
+
dbUrl: postgresql://user:pass@localhost/mydb
|
|
59
|
+
# 支持读写分离
|
|
60
|
+
# dbReadUrl: postgresql://reader@localhost/mydb
|
|
61
|
+
# dbWriteUrl: postgresql://writer@localhost/mydb
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### prometheus
|
|
65
|
+
|
|
66
|
+
```yaml
|
|
67
|
+
servers:
|
|
68
|
+
metrics:
|
|
69
|
+
type: prometheus
|
|
70
|
+
url: http://prometheus:9090
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### tencent-cls
|
|
74
|
+
|
|
75
|
+
```yaml
|
|
76
|
+
servers:
|
|
77
|
+
logs:
|
|
78
|
+
type: tencent-cls
|
|
79
|
+
clientId: ${CLS_SECRET_ID}
|
|
80
|
+
clientSecret: ${CLS_SECRET_KEY}
|
|
81
|
+
region: ap-shanghai # 默认 ap-shanghai
|
|
82
|
+
# endpoint: cls.tencentcloudapi.com
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### relay
|
|
86
|
+
|
|
87
|
+
```yaml
|
|
88
|
+
servers:
|
|
89
|
+
upstream:
|
|
90
|
+
type: relay
|
|
91
|
+
url: http://other-mcp:8000
|
|
92
|
+
transport: http # http | sse
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## 动态配置
|
|
96
|
+
|
|
97
|
+
通过请求头传入配置,无需重启即可连接新的数据源:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
curl http://localhost:8036/mcp/sql \
|
|
101
|
+
-H "X-DB-URL: postgresql://user:pass@host/db" \
|
|
102
|
+
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## 通用 Header
|
|
106
|
+
|
|
107
|
+
所有 MCP 端点支持以下请求头:
|
|
108
|
+
|
|
109
|
+
| Header | 说明 |
|
|
110
|
+
|--------|------|
|
|
111
|
+
| `X-MCP-Readonly` | 设为 `true` 仅返回只读工具 |
|
|
112
|
+
| `X-MCP-Include` | 包含匹配的工具(glob,如 `query_*`) |
|
|
113
|
+
| `X-MCP-Exclude` | 排除匹配的工具(glob,如 `execute_*`) |
|
|
114
|
+
|
|
115
|
+
## 配置文件
|
|
116
|
+
|
|
117
|
+
按优先级从高到低(后者被前者覆盖):
|
|
118
|
+
|
|
119
|
+
1. `.mcps.local.yaml` - 本地覆盖(建议 gitignore)
|
|
120
|
+
2. `.mcps.yaml` - 基础配置
|
|
121
|
+
|
|
122
|
+
支持 `.yaml`、`.yml`、`.json` 格式。配置值支持 `${VAR_NAME}` 引用环境变量,自动加载 `.env` 和 `.env.local`。
|
|
123
|
+
|
|
124
|
+
```yaml
|
|
125
|
+
servers:
|
|
126
|
+
name:
|
|
127
|
+
type: sql | prometheus | tencent-cls | relay
|
|
128
|
+
disabled: false # 可选,禁用该服务器
|
|
129
|
+
# ... 各类型特定配置
|
|
130
|
+
|
|
131
|
+
audit:
|
|
132
|
+
enabled: true # 审计日志,默认开启
|
|
133
|
+
db:
|
|
134
|
+
path: .mcps.db # SQLite 审计库路径
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## CLI
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
npx -y @wener/mcps@latest [options]
|
|
141
|
+
|
|
142
|
+
-p, --port <port> 端口号(默认 8036)
|
|
143
|
+
-c, --cwd <path> 配置文件目录
|
|
144
|
+
```
|