@wener/mcps 1.0.2 → 1.0.5

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.
Files changed (103) hide show
  1. package/README.md +144 -0
  2. package/dist/index.mjs +213076 -1
  3. package/dist/mcps-cli.mjs +102632 -59429
  4. package/lib/audit/AuditContract.js.map +1 -0
  5. package/lib/{chat/audit.js → audit/chat.js} +1 -1
  6. package/lib/audit/chat.js.map +1 -0
  7. package/lib/audit/entities/ChatRequestEntity.js.map +1 -0
  8. package/lib/audit/entities/McpRequestEntity.js.map +1 -0
  9. package/lib/audit/entities/RequestLogEntity.js.map +1 -0
  10. package/lib/audit/entities/ResponseEntity.js.map +1 -0
  11. package/lib/audit/entities/index.js +6 -0
  12. package/lib/audit/entities/index.js.map +1 -0
  13. package/lib/audit/server/db.js +64 -0
  14. package/lib/audit/server/db.js.map +1 -0
  15. package/lib/audit/server/index.js +2 -0
  16. package/lib/audit/server/index.js.map +1 -0
  17. package/lib/{server/audit.js → audit/server/plugin.js} +73 -127
  18. package/lib/audit/server/plugin.js.map +1 -0
  19. package/lib/audit/types.js.map +1 -0
  20. package/lib/chat/handler.js +5 -5
  21. package/lib/chat/handler.js.map +1 -1
  22. package/lib/chat/index.js +1 -1
  23. package/lib/chat/index.js.map +1 -1
  24. package/lib/cli-start.js +36 -0
  25. package/lib/cli-start.js.map +1 -0
  26. package/lib/cli.js +19 -0
  27. package/lib/cli.js.map +1 -0
  28. package/lib/contracts/index.js +1 -1
  29. package/lib/contracts/index.js.map +1 -1
  30. package/lib/dev.server.js +7 -1
  31. package/lib/dev.server.js.map +1 -1
  32. package/lib/entities/index.js +2 -10
  33. package/lib/entities/index.js.map +1 -1
  34. package/lib/index.js +21 -3
  35. package/lib/index.js.map +1 -1
  36. package/lib/mcps-cli.js +6 -35
  37. package/lib/mcps-cli.js.map +1 -1
  38. package/lib/providers/feishu/def.js +35 -0
  39. package/lib/providers/feishu/def.js.map +1 -0
  40. package/lib/providers/findMcpServerDef.js +1 -0
  41. package/lib/providers/findMcpServerDef.js.map +1 -1
  42. package/lib/scripts/bundle.js +7 -1
  43. package/lib/scripts/bundle.js.map +1 -1
  44. package/lib/server/api-routes.js +7 -8
  45. package/lib/server/api-routes.js.map +1 -1
  46. package/lib/server/events.js +13 -0
  47. package/lib/server/events.js.map +1 -0
  48. package/lib/server/mcp-routes.js +31 -60
  49. package/lib/server/mcp-routes.js.map +1 -1
  50. package/lib/server/mcps-router.js +19 -24
  51. package/lib/server/mcps-router.js.map +1 -1
  52. package/lib/server/schema.js +22 -2
  53. package/lib/server/schema.js.map +1 -1
  54. package/lib/server/server.js +142 -87
  55. package/lib/server/server.js.map +1 -1
  56. package/package.json +145 -85
  57. package/src/{chat/audit.ts → audit/chat.ts} +3 -3
  58. package/src/audit/entities/index.ts +6 -0
  59. package/src/audit/server/db.ts +65 -0
  60. package/src/audit/server/index.ts +8 -0
  61. package/src/{server/audit.ts → audit/server/plugin.ts} +71 -144
  62. package/src/chat/handler.ts +5 -5
  63. package/src/chat/index.ts +1 -1
  64. package/src/cli-start.ts +43 -0
  65. package/src/cli.ts +45 -0
  66. package/src/contracts/index.ts +1 -1
  67. package/src/dev.server.ts +8 -1
  68. package/src/entities/index.ts +2 -12
  69. package/src/index.ts +47 -1
  70. package/src/mcps-cli.ts +6 -48
  71. package/src/providers/feishu/def.ts +37 -0
  72. package/src/providers/findMcpServerDef.ts +1 -0
  73. package/src/scripts/bundle.ts +12 -1
  74. package/src/server/api-routes.ts +11 -8
  75. package/src/server/events.ts +29 -0
  76. package/src/server/mcp-routes.ts +30 -58
  77. package/src/server/mcps-router.ts +21 -29
  78. package/src/server/schema.ts +23 -2
  79. package/src/server/server.ts +149 -81
  80. package/LICENSE +0 -21
  81. package/lib/chat/audit.js.map +0 -1
  82. package/lib/contracts/AuditContract.js.map +0 -1
  83. package/lib/entities/ChatRequestEntity.js.map +0 -1
  84. package/lib/entities/McpRequestEntity.js.map +0 -1
  85. package/lib/entities/RequestLogEntity.js.map +0 -1
  86. package/lib/entities/ResponseEntity.js.map +0 -1
  87. package/lib/entities/types.js.map +0 -1
  88. package/lib/server/audit.js.map +0 -1
  89. package/lib/server/db.js +0 -97
  90. package/lib/server/db.js.map +0 -1
  91. package/src/server/db.ts +0 -115
  92. /package/lib/{contracts → audit}/AuditContract.js +0 -0
  93. /package/lib/{entities → audit/entities}/ChatRequestEntity.js +0 -0
  94. /package/lib/{entities → audit/entities}/McpRequestEntity.js +0 -0
  95. /package/lib/{entities → audit/entities}/RequestLogEntity.js +0 -0
  96. /package/lib/{entities → audit/entities}/ResponseEntity.js +0 -0
  97. /package/lib/{entities → audit}/types.js +0 -0
  98. /package/src/{contracts → audit}/AuditContract.ts +0 -0
  99. /package/src/{entities → audit/entities}/ChatRequestEntity.ts +0 -0
  100. /package/src/{entities → audit/entities}/McpRequestEntity.ts +0 -0
  101. /package/src/{entities → audit/entities}/RequestLogEntity.ts +0 -0
  102. /package/src/{entities → audit/entities}/ResponseEntity.ts +0 -0
  103. /package/src/{entities → audit}/types.ts +0 -0
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
+ ```