rfhub-mcp 0.17.0 → 0.19.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rfhub-mcp",
3
- "version": "0.17.0",
3
+ "version": "0.19.0",
4
4
  "title": "RFHub MCP Server",
5
5
  "description": "RFHub MCP Server",
6
6
  "websiteUrl": "https://rfhub.cn/mcp-server",
@@ -1,131 +0,0 @@
1
- import * as z from "zod/v4";
2
- import { mcpExResponse } from "../utils/response.js";
3
- import { executeGetResult } from "../utils/executeGetResult.js";
4
- export const registerComputeTool = (mcpServer, getResult) => {
5
- const ModeEnum = z.enum(["n", "f"]);
6
- const DirectionEnum = z.enum(["uplink", "downlink"]);
7
- const DuplexModeEnum = z.enum(["TDD", "FDD"]);
8
- const computeInputSchema = z.object({
9
- Mode: ModeEnum.optional().describe("计算模式,例如 n 表示频点模式,f 表示频率模式"),
10
- DataTransmissionDirection: DirectionEnum.describe("数据传输方向,可选上行(uplink)、下行(downlink)"),
11
- NREF: z.number().int().optional().describe('频点参考(NREF),例如 504999。用于在频点模式(Mode=`"n"`)下确定中心频率。'),
12
- FREF: z.number().optional().describe('频率参考(FREF),单位为 MHz,例如 3500.0。用于在频率模式(Mode=`"f"`)下直接指定中心频率。'),
13
- Band: z.string().optional().describe('频段标识符,例如 "b3"、"b41" 等'),
14
- Bandwidth: z.number().positive().optional().describe("信道带宽,单位为 MHz,例如 100 表示 100MHz"),
15
- });
16
- const computeOutputSchema = z.object({
17
- Mode: ModeEnum.nullable().optional(),
18
- Mode_Error: z.string().nullable().optional(),
19
- DataTransmissionDirection: DirectionEnum.nullable().optional(),
20
- DataTransmissionDirection_Error: z.string().nullable().optional(),
21
- NREF: z.number().int().nullable().optional(),
22
- NREF_Error: z.string().nullable().optional(),
23
- FREF: z.number().nullable().optional(),
24
- FREF_Error: z.string().nullable().optional(),
25
- BandOptions: z.array(z.string()).nullable().optional(),
26
- BandOptions_Error: z.string().nullable().optional(),
27
- Band: z.string().nullable().optional(),
28
- Band_Error: z.string().nullable().optional(),
29
- FREF_Low: z.number().nullable().optional(),
30
- FREF_High: z.number().nullable().optional(),
31
- NREF_First: z.number().int().nullable().optional(),
32
- NREF_Last: z.number().int().nullable().optional(),
33
- DuplexMode: DuplexModeEnum.nullable().optional(),
34
- SCS: z.string().nullable().optional(),
35
- BandwidthOptions: z.array(z.string()).nullable().optional(),
36
- BandwidthOptions_Error: z.string().nullable().optional(),
37
- Bandwidth: z.number().nullable().optional(),
38
- Bandwidth_Error: z.string().nullable().optional(),
39
- NRB: z.number().int().nullable().optional(),
40
- FREF_AvailableLow: z.number().nullable().optional(),
41
- FREF_AvailableHigh: z.number().nullable().optional(),
42
- });
43
- const apiResultSchema = z.object({
44
- Mode: z.string().nullable().optional(),
45
- Mode_Error: z.string().nullable().optional(),
46
- DataTransmissionDirection: z.string().nullable().optional(),
47
- DataTransmissionDirection_Error: z.string().nullable().optional(),
48
- NREF: z.string().nullable().optional(),
49
- NREF_Error: z.string().nullable().optional(),
50
- FREF: z.string().nullable().optional(),
51
- FREF_Error: z.string().nullable().optional(),
52
- BandOptions: z.array(z.string()).nullable().optional(),
53
- BandOptions_Error: z.string().nullable().optional(),
54
- Band: z.string().nullable().optional(),
55
- Band_Error: z.string().nullable().optional(),
56
- FREF_Low: z.string().nullable().optional(),
57
- FREF_High: z.string().nullable().optional(),
58
- NREF_First: z.string().nullable().optional(),
59
- NREF_Last: z.string().nullable().optional(),
60
- DuplexMode: DuplexModeEnum.nullable().optional(),
61
- SCS: z.string().nullable().optional(),
62
- BandwidthOptions: z.array(z.string()).nullable().optional(),
63
- BandwidthOptions_Error: z.string().nullable().optional(),
64
- Bandwidth: z.string().nullable().optional(),
65
- Bandwidth_Error: z.string().nullable().optional(),
66
- NRB: z.string().nullable().optional(),
67
- FREF_AvailableLow: z.string().nullable().optional(),
68
- FREF_AvailableHigh: z.string().nullable().optional(),
69
- });
70
- mcpServer.registerTool("arfcn_calculator_4g_compute", {
71
- title: "4G/LTE频点频率转换与对应频带信息",
72
- description: "支持4G LTE网络中频率与频点之间的相互转换,并附带特定频段的详细信息展示",
73
- inputSchema: computeInputSchema,
74
- outputSchema: computeOutputSchema,
75
- }, async (input) => {
76
- try {
77
- const apiRequest = {
78
- Mode: input.Mode ?? (input.NREF && "n"),
79
- DataTransmissionDirection: input.DataTransmissionDirection,
80
- Band: input.Band?.replaceAll("b", "").replaceAll("B", "") ?? null,
81
- NERF: input.NREF?.toString() ?? null,
82
- FERF: input.FREF?.toString() ?? null,
83
- Bandwidth: input.Bandwidth?.toString() ?? null,
84
- };
85
- const result = await executeGetResult(getResult, "/api/arfcn-calculator-4g/compute", apiRequest);
86
- const apiResult = apiResultSchema.parse(result);
87
- const structuredContent = {
88
- Mode: apiResult.Mode ?? null,
89
- Mode_Error: apiResult.Mode_Error ?? null,
90
- DataTransmissionDirection: apiResult.DataTransmissionDirection ?? null,
91
- DataTransmissionDirection_Error: apiResult.DataTransmissionDirection_Error ?? null,
92
- NREF: apiResult.NREF ?? null,
93
- NREF_Error: apiResult.NREF_Error ?? null,
94
- FREF: apiResult.FREF ?? null,
95
- FREF_Error: apiResult.FREF_Error ?? null,
96
- BandOptions: apiResult.BandOptions ?? null,
97
- BandOptions_Error: apiResult.BandOptions_Error ?? null,
98
- Band: apiResult.Band ?? null,
99
- Band_Error: apiResult.Band_Error ?? null,
100
- FREF_Low: apiResult.FREF_Low ?? null,
101
- FREF_High: apiResult.FREF_High ?? null,
102
- NREF_First: apiResult.NREF_First ?? null,
103
- NREF_Last: apiResult.NREF_Last ?? null,
104
- DuplexMode: apiResult.DuplexMode ?? null,
105
- SCS: apiResult.SCS ?? null,
106
- BandwidthOptions: apiResult.BandwidthOptions ?? null,
107
- BandwidthOptions_Error: apiResult.BandwidthOptions_Error ?? null,
108
- Bandwidth: apiResult.Bandwidth ?? null,
109
- Bandwidth_Error: apiResult.Bandwidth_Error ?? null,
110
- NRB: apiResult.NRB ?? null,
111
- FREF_AvailableLow: apiResult.FREF_AvailableLow ?? null,
112
- FREF_AvailableHigh: apiResult.FREF_AvailableHigh ?? null,
113
- };
114
- return {
115
- content: [
116
- {
117
- type: "text",
118
- text: JSON.stringify(structuredContent, null, 2),
119
- },
120
- ],
121
- structuredContent,
122
- };
123
- }
124
- catch {
125
- return mcpExResponse;
126
- }
127
- });
128
- };
129
- export default {
130
- registerComputeTool,
131
- };
@@ -1,201 +0,0 @@
1
- import * as z from "zod/v4";
2
- import { mcpExResponse } from "../utils/response.js";
3
- import { executeGetResult } from "../utils/executeGetResult.js";
4
- const registerComputeTool = (mcpServer, getResult) => {
5
- const ModeEnum = z.enum(["n", "f"]);
6
- const DirectionEnum = z.enum(["uplink", "downlink"]);
7
- const DuplexModeEnum = z.enum(["TDD", "FDD"]);
8
- const computeInputSchema = z.object({
9
- Mode: ModeEnum.nullable().optional().describe("计算模式,例如 n 表示频点模式,f 表示频率模式"),
10
- DataTransmissionDirection: DirectionEnum.describe("数据传输方向,可选上行(uplink)、下行(downlink)"),
11
- NREF: z.number().int().nullable().optional().describe('频点参考值(NREF),例如 `"504999"`。用于在频点模式(Mode=`"n"`)下确定中心频率。'),
12
- FREF: z.number().nullable().optional().describe('频率参考值(FREF),例如 `"3500.0"`。用于在频率模式(Mode=`"f"`)下直接指定中心频率。'),
13
- Band: z.string().nullable().optional().describe('频段标识符,例如 `"n78"`、`"n41"` 等。用于确定频段的上下行配置、信道栅格(raster)及边界频率。'),
14
- FRaster: z.number().int().nullable().optional().describe("频率栅格(Frequency Raster),单位为 kHz,例如 5、15。用于频点与频率之间的转换计算。"),
15
- SCS: z.number().int().nullable().optional().describe("子载波间隔(Subcarrier Spacing),单位为 kHz,例如 15、30。影响资源块结构和带宽计算。"),
16
- Bandwidth: z
17
- .number()
18
- .nullable()
19
- .optional()
20
- .describe("信道带宽(Channel Bandwidth),单位为 MHz,例如 5、20、100。用于确定传输带宽配置(Transmission Bandwidth Configuration)。"),
21
- SSBlockSCS: z.number().int().nullable().optional().describe("SSB(Synchronization Signal Block)的子载波间隔,单位为 kHz,例如 15、30。"),
22
- SSBlockPattern: z
23
- .string()
24
- .nullable()
25
- .optional()
26
- .describe('SSB 波束扫描图案类型,例如 `"Case A"`、`"Case B"`、`"Case C"`(FR1)或 `"Case D"`、`"Case E"`(FR2),影响 SSB 时域位置和数量。'),
27
- GSCN: z
28
- .number()
29
- .int()
30
- .nullable()
31
- .optional()
32
- .describe("全局同步信道号(Global Synchronization Channel Number),用于粗粒度频率搜索,特别是在非服务小区初始接入时。例如 504990"),
33
- SSREF: z.number().nullable().optional().describe("SSB 中心频率对应的参考频率(单位:Hz 或 MHz,依上下文而定),常用于从 GSCN 或 SSB 配置反推绝对频率。"),
34
- N: z.number().int().nullable().optional().describe("用于 SSB 频域位置计算的参数 N,通常与 GSCN 或 raster 相关。例如 6312"),
35
- M: z.number().int().nullable().optional().describe("SSB 频域偏移步长因子,取决于频段和 SSB 子载波间隔。例如 1、3、5"),
36
- });
37
- const computeOutputSchema = z.object({
38
- Mode: ModeEnum.nullable().optional(),
39
- Mode_Error: z.string().nullable().optional(),
40
- DataTransmissionDirection: DirectionEnum.nullable().optional(),
41
- DataTransmissionDirection_Error: z.string().nullable().optional(),
42
- NREF: z.number().int().nullable().optional(),
43
- NREF_Error: z.string().nullable().optional(),
44
- FREF: z.number().nullable().optional(),
45
- FREF_Error: z.string().nullable().optional(),
46
- FGlobalRaster: z.number().nullable().optional(), // 全局频率栅格,kHz(数值)
47
- FrequencyRangeDesignation: z.string().nullable().optional(), // 频率范围标识符
48
- BandOptions: z.array(z.string()).nullable().optional(),
49
- BandOptions_Error: z.string().nullable().optional(),
50
- Band: z.string().nullable().optional(),
51
- Band_Error: z.string().nullable().optional(),
52
- FREF_Low: z.number().nullable().optional(),
53
- FREF_High: z.number().nullable().optional(),
54
- FRasterOptions_Error: z.string().nullable().optional(),
55
- FRasterOptions: z.array(z.string()).nullable().optional(),
56
- FRaster: z.number().nullable().optional(),
57
- FRaster_Error: z.string().nullable().optional(),
58
- NREF_StepSize: z.number().int().nullable().optional(),
59
- NREF_First: z.number().int().nullable().optional(),
60
- NREF_Last: z.number().int().nullable().optional(),
61
- DuplexMode: DuplexModeEnum.nullable().optional(),
62
- SCSOptions: z.array(z.string()).nullable().optional(),
63
- SCSOptions_Error: z.string().nullable().optional(),
64
- SCS: z.string().nullable().optional(),
65
- SCS_Error: z.string().nullable().optional(),
66
- BandwidthOptions: z.array(z.string()).nullable().optional(),
67
- BandwidthOptions_Error: z.string().nullable().optional(),
68
- Bandwidth: z.number().nullable().optional(), // 带宽单位可能是 MHz,但以数字形式
69
- Bandwidth_Error: z.string().nullable().optional(),
70
- NRB: z.number().int().nullable().optional(), // 资源块数量,整数
71
- MinimumGuardband: z.number().nullable().optional(), // 最小保护带宽,kHz(数值)
72
- FREF_AvailableLow: z.number().nullable().optional(),
73
- FREF_AvailableHigh: z.number().nullable().optional(),
74
- SSBlockSCSOptions: z.array(z.number()).nullable().optional(),
75
- SSBlockSCSOptions_Error: z.string().nullable().optional(),
76
- SSBlockSCS: z.number().nullable().optional(),
77
- SSBlockSCS_Error: z.string().nullable().optional(),
78
- SSBlockPatternOptions: z.array(z.string()).nullable().optional(),
79
- SSBlockPatternOptions_Error: z.string().nullable().optional(),
80
- SSBlockPattern: z.string().nullable().optional(),
81
- SSBlockPattern_Error: z.string().nullable().optional(),
82
- NRaster: z.number().nullable().optional(),
83
- GSCN_First: z.number().int().nullable().optional(),
84
- GSCN_Last: z.number().int().nullable().optional(),
85
- GSCN_StepSize: z.number().int().nullable().optional(),
86
- GSCN: z.number().int().nullable().optional(),
87
- GSCN_Error: z.string().nullable().optional(),
88
- SSREF: z.number().nullable().optional(),
89
- SSREF_Error: z.string().nullable().optional(),
90
- SSBlockNREF: z.number().int().nullable().optional(),
91
- N: z.number().int().nullable().optional(),
92
- N_Error: z.string().nullable().optional(),
93
- MOptions: z.array(z.number()).nullable().optional(),
94
- MOptions_Error: z.string().nullable().optional(),
95
- M: z.number().int().nullable().optional(),
96
- M_Error: z.string().nullable().optional(),
97
- });
98
- const apiResultSchema = z.object({
99
- Mode: ModeEnum.nullable().optional(),
100
- Mode_Error: z.string().nullable().optional(),
101
- DataTransmissionDirection: DirectionEnum.nullable().optional(),
102
- DataTransmissionDirection_Error: z.string().nullable().optional(),
103
- NREF: z.string().nullable().optional(),
104
- NREF_Error: z.string().nullable().optional(),
105
- FREF: z.string().nullable().optional(),
106
- FREF_Error: z.string().nullable().optional(),
107
- FGlobalRaster: z.string().nullable().optional(), // 全局频率栅格,kHz
108
- FrequencyRangeDesignation: z.string().nullable().optional(), // 频率范围标识符
109
- BandOptions: z.array(z.string()).nullable().optional(),
110
- BandOptions_Error: z.string().nullable().optional(),
111
- Band: z.string().nullable().optional(),
112
- Band_Error: z.string().nullable().optional(),
113
- FREF_Low: z.string().nullable().optional(),
114
- FREF_High: z.string().nullable().optional(),
115
- FRasterOptions_Error: z.string().nullable().optional(),
116
- FRasterOptions: z.array(z.string()).nullable().optional(),
117
- FRaster: z.string().nullable().optional(),
118
- FRaster_Error: z.string().nullable().optional(),
119
- NREF_StepSize: z.string().nullable().optional(),
120
- NREF_First: z.string().nullable().optional(),
121
- NREF_Last: z.string().nullable().optional(),
122
- DuplexMode: DuplexModeEnum.nullable().optional(),
123
- SCSOptions: z.array(z.string()).nullable().optional(),
124
- SCSOptions_Error: z.string().nullable().optional(),
125
- SCS: z.string().nullable().optional(),
126
- SCS_Error: z.string().nullable().optional(),
127
- BandwidthOptions: z.array(z.string()).nullable().optional(),
128
- BandwidthOptions_Error: z.string().nullable().optional(),
129
- Bandwidth: z.string().nullable().optional(),
130
- Bandwidth_Error: z.string().nullable().optional(),
131
- NRB: z.string().nullable().optional(),
132
- MinimumGuardband: z.string().nullable().optional(),
133
- FREF_AvailableLow: z.string().nullable().optional(),
134
- FREF_AvailableHigh: z.string().nullable().optional(),
135
- SSBlockSCSOptions: z.array(z.string()).nullable().optional(),
136
- SSBlockSCSOptions_Error: z.string().nullable().optional(),
137
- SSBlockSCS: z.string().nullable().optional(),
138
- SSBlockSCS_Error: z.string().nullable().optional(),
139
- SSBlockPatternOptions: z.array(z.string()).nullable().optional(),
140
- SSBlockPatternOptions_Error: z.string().nullable().optional(),
141
- SSBlockPattern: z.string().nullable().optional(),
142
- SSBlockPattern_Error: z.string().nullable().optional(),
143
- NRaster: z.string().nullable().optional(),
144
- GSCN_First: z.string().nullable().optional(),
145
- GSCN_Last: z.string().nullable().optional(),
146
- GSCN_StepSize: z.string().nullable().optional(),
147
- GSCN: z.string().nullable().optional(),
148
- GSCN_Error: z.string().nullable().optional(),
149
- SSREF: z.string().nullable().optional(),
150
- SSREF_Error: z.string().nullable().optional(),
151
- SSBlockNREF: z.string().nullable().optional(),
152
- N: z.string().nullable().optional(),
153
- N_Error: z.string().nullable().optional(),
154
- MOptions: z.array(z.string()).nullable().optional(),
155
- MOptions_Error: z.string().nullable().optional(),
156
- M: z.string().nullable().optional(),
157
- M_Error: z.string().nullable().optional(),
158
- });
159
- mcpServer.registerTool("arfcn_calculator_5g_compute", {
160
- title: "5G/NR频点频率转换与对应频带信息",
161
- description: "支持5G NR网络中频率与频点之间的相互转换,并附带特定频段的详细信息展示",
162
- inputSchema: computeInputSchema,
163
- outputSchema: computeOutputSchema,
164
- }, async (input) => {
165
- try {
166
- const apiRequest = {
167
- Mode: input.Mode ?? (input.NREF && "n"),
168
- DataTransmissionDirection: input.DataTransmissionDirection,
169
- Band: input.Band?.replaceAll("b", "").replaceAll("B", "") ?? null,
170
- NERF: input.NREF?.toString() ?? null,
171
- FERF: input.FREF?.toString() ?? null,
172
- Bandwidth: input.Bandwidth?.toString() ?? null,
173
- FRaster: input.FRaster?.toString() ?? null,
174
- SCS: input.SCS?.toString() ?? null,
175
- SSBlockSCS: input.SSBlockSCS?.toString() ?? null,
176
- GSCN: input.GSCN?.toString() ?? null,
177
- SSREF: input.SSREF?.toString() ?? null,
178
- SSBlockPattern: input.SSBlockPattern?.toString() ?? null,
179
- N: input.N?.toString() ?? null,
180
- M: input.M?.toString() ?? null,
181
- };
182
- const result = await executeGetResult(getResult, "/api/arfcn-calculator-5g/compute", apiRequest);
183
- const apiResult = apiResultSchema.parse(result);
184
- return {
185
- content: [
186
- {
187
- type: "text",
188
- text: JSON.stringify(apiResult, null, 2),
189
- },
190
- ],
191
- structuredContent: apiResult,
192
- };
193
- }
194
- catch {
195
- return mcpExResponse;
196
- }
197
- });
198
- };
199
- export default {
200
- registerComputeTool,
201
- };
@@ -1,201 +0,0 @@
1
- import * as z from "zod/v4";
2
- import { mcpExResponse } from "../utils/response.js";
3
- import { executeGetResult } from "../utils/executeGetResult.js";
4
- const registerComputeTool = (mcpServer, getResult) => {
5
- const ModeEnum = z.enum(["n", "f"]);
6
- const DirectionEnum = z.enum(["uplink", "downlink"]);
7
- const DuplexModeEnum = z.enum(["TDD", "FDD"]);
8
- const computeInputSchema = z.object({
9
- Mode: ModeEnum.nullable().optional().describe("计算模式,例如 n 表示频点模式,f 表示频率模式"),
10
- DataTransmissionDirection: DirectionEnum.describe("数据传输方向,可选上行(uplink)、下行(downlink)"),
11
- NREF: z.number().int().nullable().optional().describe('频点参考值(NREF),例如 `"504999"`。用于在频点模式(Mode=`"n"`)下确定中心频率。'),
12
- FREF: z.number().nullable().optional().describe('频率参考值(FREF),例如 `"3500.0"`。用于在频率模式(Mode=`"f"`)下直接指定中心频率。'),
13
- Band: z.string().nullable().optional().describe('频段标识符,例如 `"n78"`、`"n41"` 等。用于确定频段的上下行配置、信道栅格(raster)及边界频率。'),
14
- FRaster: z.number().int().nullable().optional().describe("频率栅格(Frequency Raster),单位为 kHz,例如 5、15。用于频点与频率之间的转换计算。"),
15
- SCS: z.number().int().nullable().optional().describe("子载波间隔(Subcarrier Spacing),单位为 kHz,例如 15、30。影响资源块结构和带宽计算。"),
16
- Bandwidth: z
17
- .number()
18
- .nullable()
19
- .optional()
20
- .describe("信道带宽(Channel Bandwidth),单位为 MHz,例如 5、20、100。用于确定传输带宽配置(Transmission Bandwidth Configuration)。"),
21
- SSBlockSCS: z.number().int().nullable().optional().describe("SSB(Synchronization Signal Block)的子载波间隔,单位为 kHz,例如 15、30。"),
22
- SSBlockPattern: z
23
- .string()
24
- .nullable()
25
- .optional()
26
- .describe('SSB 波束扫描图案类型,例如 `"Case A"`、`"Case B"`、`"Case C"`(FR1)或 `"Case D"`、`"Case E"`(FR2),影响 SSB 时域位置和数量。'),
27
- GSCN: z
28
- .number()
29
- .int()
30
- .nullable()
31
- .optional()
32
- .describe("全局同步信道号(Global Synchronization Channel Number),用于粗粒度频率搜索,特别是在非服务小区初始接入时。例如 504990"),
33
- SSREF: z.number().nullable().optional().describe("SSB 中心频率对应的参考频率(单位:Hz 或 MHz,依上下文而定),常用于从 GSCN 或 SSB 配置反推绝对频率。"),
34
- N: z.number().int().nullable().optional().describe("用于 SSB 频域位置计算的参数 N,通常与 GSCN 或 raster 相关。例如 6312"),
35
- M: z.number().int().nullable().optional().describe("SSB 频域偏移步长因子,取决于频段和 SSB 子载波间隔。例如 1、3、5"),
36
- });
37
- const computeOutputSchema = z.object({
38
- Mode: ModeEnum.nullable().optional(),
39
- Mode_Error: z.string().nullable().optional(),
40
- DataTransmissionDirection: DirectionEnum.nullable().optional(),
41
- DataTransmissionDirection_Error: z.string().nullable().optional(),
42
- NREF: z.number().int().nullable().optional(),
43
- NREF_Error: z.string().nullable().optional(),
44
- FREF: z.number().nullable().optional(),
45
- FREF_Error: z.string().nullable().optional(),
46
- FGlobalRaster: z.number().nullable().optional(), // 全局频率栅格,kHz(数值)
47
- FrequencyRangeDesignation: z.string().nullable().optional(), // 频率范围标识符
48
- BandOptions: z.array(z.string()).nullable().optional(),
49
- BandOptions_Error: z.string().nullable().optional(),
50
- Band: z.string().nullable().optional(),
51
- Band_Error: z.string().nullable().optional(),
52
- FREF_Low: z.number().nullable().optional(),
53
- FREF_High: z.number().nullable().optional(),
54
- FRasterOptions_Error: z.string().nullable().optional(),
55
- FRasterOptions: z.array(z.string()).nullable().optional(),
56
- FRaster: z.number().nullable().optional(),
57
- FRaster_Error: z.string().nullable().optional(),
58
- NREF_StepSize: z.number().int().nullable().optional(),
59
- NREF_First: z.number().int().nullable().optional(),
60
- NREF_Last: z.number().int().nullable().optional(),
61
- DuplexMode: DuplexModeEnum.nullable().optional(),
62
- SCSOptions: z.array(z.string()).nullable().optional(),
63
- SCSOptions_Error: z.string().nullable().optional(),
64
- SCS: z.string().nullable().optional(),
65
- SCS_Error: z.string().nullable().optional(),
66
- BandwidthOptions: z.array(z.string()).nullable().optional(),
67
- BandwidthOptions_Error: z.string().nullable().optional(),
68
- Bandwidth: z.number().nullable().optional(), // 带宽单位可能是 MHz,但以数字形式
69
- Bandwidth_Error: z.string().nullable().optional(),
70
- NRB: z.number().int().nullable().optional(), // 资源块数量,整数
71
- MinimumGuardband: z.number().nullable().optional(), // 最小保护带宽,kHz(数值)
72
- FREF_AvailableLow: z.number().nullable().optional(),
73
- FREF_AvailableHigh: z.number().nullable().optional(),
74
- SSBlockSCSOptions: z.array(z.number()).nullable().optional(),
75
- SSBlockSCSOptions_Error: z.string().nullable().optional(),
76
- SSBlockSCS: z.number().nullable().optional(),
77
- SSBlockSCS_Error: z.string().nullable().optional(),
78
- SSBlockPatternOptions: z.array(z.string()).nullable().optional(),
79
- SSBlockPatternOptions_Error: z.string().nullable().optional(),
80
- SSBlockPattern: z.string().nullable().optional(),
81
- SSBlockPattern_Error: z.string().nullable().optional(),
82
- NRaster: z.number().nullable().optional(),
83
- GSCN_First: z.number().int().nullable().optional(),
84
- GSCN_Last: z.number().int().nullable().optional(),
85
- GSCN_StepSize: z.number().int().nullable().optional(),
86
- GSCN: z.number().int().nullable().optional(),
87
- GSCN_Error: z.string().nullable().optional(),
88
- SSREF: z.number().nullable().optional(),
89
- SSREF_Error: z.string().nullable().optional(),
90
- SSBlockNREF: z.number().int().nullable().optional(),
91
- N: z.number().int().nullable().optional(),
92
- N_Error: z.string().nullable().optional(),
93
- MOptions: z.array(z.number()).nullable().optional(),
94
- MOptions_Error: z.string().nullable().optional(),
95
- M: z.number().int().nullable().optional(),
96
- M_Error: z.string().nullable().optional(),
97
- });
98
- const apiResultSchema = z.object({
99
- Mode: ModeEnum.nullable().optional(),
100
- Mode_Error: z.string().nullable().optional(),
101
- DataTransmissionDirection: DirectionEnum.nullable().optional(),
102
- DataTransmissionDirection_Error: z.string().nullable().optional(),
103
- NREF: z.string().nullable().optional(),
104
- NREF_Error: z.string().nullable().optional(),
105
- FREF: z.string().nullable().optional(),
106
- FREF_Error: z.string().nullable().optional(),
107
- FGlobalRaster: z.string().nullable().optional(), // 全局频率栅格,kHz
108
- FrequencyRangeDesignation: z.string().nullable().optional(), // 频率范围标识符
109
- BandOptions: z.array(z.string()).nullable().optional(),
110
- BandOptions_Error: z.string().nullable().optional(),
111
- Band: z.string().nullable().optional(),
112
- Band_Error: z.string().nullable().optional(),
113
- FREF_Low: z.string().nullable().optional(),
114
- FREF_High: z.string().nullable().optional(),
115
- FRasterOptions_Error: z.string().nullable().optional(),
116
- FRasterOptions: z.array(z.string()).nullable().optional(),
117
- FRaster: z.string().nullable().optional(),
118
- FRaster_Error: z.string().nullable().optional(),
119
- NREF_StepSize: z.string().nullable().optional(),
120
- NREF_First: z.string().nullable().optional(),
121
- NREF_Last: z.string().nullable().optional(),
122
- DuplexMode: DuplexModeEnum.nullable().optional(),
123
- SCSOptions: z.array(z.string()).nullable().optional(),
124
- SCSOptions_Error: z.string().nullable().optional(),
125
- SCS: z.string().nullable().optional(),
126
- SCS_Error: z.string().nullable().optional(),
127
- BandwidthOptions: z.array(z.string()).nullable().optional(),
128
- BandwidthOptions_Error: z.string().nullable().optional(),
129
- Bandwidth: z.string().nullable().optional(),
130
- Bandwidth_Error: z.string().nullable().optional(),
131
- NRB: z.string().nullable().optional(),
132
- MinimumGuardband: z.string().nullable().optional(),
133
- FREF_AvailableLow: z.string().nullable().optional(),
134
- FREF_AvailableHigh: z.string().nullable().optional(),
135
- SSBlockSCSOptions: z.array(z.string()).nullable().optional(),
136
- SSBlockSCSOptions_Error: z.string().nullable().optional(),
137
- SSBlockSCS: z.string().nullable().optional(),
138
- SSBlockSCS_Error: z.string().nullable().optional(),
139
- SSBlockPatternOptions: z.array(z.string()).nullable().optional(),
140
- SSBlockPatternOptions_Error: z.string().nullable().optional(),
141
- SSBlockPattern: z.string().nullable().optional(),
142
- SSBlockPattern_Error: z.string().nullable().optional(),
143
- NRaster: z.string().nullable().optional(),
144
- GSCN_First: z.string().nullable().optional(),
145
- GSCN_Last: z.string().nullable().optional(),
146
- GSCN_StepSize: z.string().nullable().optional(),
147
- GSCN: z.string().nullable().optional(),
148
- GSCN_Error: z.string().nullable().optional(),
149
- SSREF: z.string().nullable().optional(),
150
- SSREF_Error: z.string().nullable().optional(),
151
- SSBlockNREF: z.string().nullable().optional(),
152
- N: z.string().nullable().optional(),
153
- N_Error: z.string().nullable().optional(),
154
- MOptions: z.array(z.string()).nullable().optional(),
155
- MOptions_Error: z.string().nullable().optional(),
156
- M: z.string().nullable().optional(),
157
- M_Error: z.string().nullable().optional(),
158
- });
159
- mcpServer.registerTool("arfcn_calculator_ntn_compute", {
160
- title: "NTN频点频率转换与对应频带信息",
161
- description: "支持NTN网络中频率与频点之间的相互转换,并附带特定频段的详细信息展示",
162
- inputSchema: computeInputSchema,
163
- outputSchema: computeOutputSchema,
164
- }, async (input) => {
165
- try {
166
- const apiRequest = {
167
- Mode: input.Mode ?? (input.NREF && "n"),
168
- DataTransmissionDirection: input.DataTransmissionDirection,
169
- Band: input.Band?.replaceAll("b", "").replaceAll("B", "") ?? null,
170
- NERF: input.NREF?.toString() ?? null,
171
- FERF: input.FREF?.toString() ?? null,
172
- Bandwidth: input.Bandwidth?.toString() ?? null,
173
- FRaster: input.FRaster?.toString() ?? null,
174
- SCS: input.SCS?.toString() ?? null,
175
- SSBlockSCS: input.SSBlockSCS?.toString() ?? null,
176
- GSCN: input.GSCN?.toString() ?? null,
177
- SSREF: input.SSREF?.toString() ?? null,
178
- SSBlockPattern: input.SSBlockPattern?.toString() ?? null,
179
- N: input.N?.toString() ?? null,
180
- M: input.M?.toString() ?? null,
181
- };
182
- const result = await executeGetResult(getResult, "/api/arfcn-calculator-ntn/compute", apiRequest);
183
- const apiResult = apiResultSchema.parse(result);
184
- return {
185
- content: [
186
- {
187
- type: "text",
188
- text: JSON.stringify(apiResult, null, 2),
189
- },
190
- ],
191
- structuredContent: apiResult,
192
- };
193
- }
194
- catch {
195
- return mcpExResponse;
196
- }
197
- });
198
- };
199
- export default {
200
- registerComputeTool,
201
- };
@@ -1,8 +0,0 @@
1
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { GetResult } from "../utils/executeGetResult.js";
3
- export declare const registerComputeTool: (mcpServer: McpServer, getResult: GetResult) => void;
4
- declare const _default: {
5
- registerComputeTool: (mcpServer: McpServer, getResult: GetResult) => void;
6
- };
7
- export default _default;
8
- //# sourceMappingURL=arfcn-calculator-4g.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arfcn-calculator-4g.d.ts","sourceRoot":"","sources":["../../../src/tools/arfcn-calculator-4g.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAoB,MAAM,8BAA8B,CAAC;AAE3E,eAAO,MAAM,mBAAmB,GAAI,WAAW,SAAS,EAAE,WAAW,SAAS,SAiJ7E,CAAC;;qCAjJ6C,SAAS,aAAa,SAAS;;AAmJ9E,wBAEE"}
@@ -1,7 +0,0 @@
1
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { GetResult } from "../utils/executeGetResult.js";
3
- declare const _default: {
4
- registerComputeTool: (mcpServer: McpServer, getResult: GetResult) => void;
5
- };
6
- export default _default;
7
- //# sourceMappingURL=arfcn-calculator-5g.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arfcn-calculator-5g.d.ts","sourceRoot":"","sources":["../../../src/tools/arfcn-calculator-5g.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAoB,MAAM,8BAA8B,CAAC;;qCAEnC,SAAS,aAAa,SAAS;;AAqNvE,wBAEE"}
@@ -1,7 +0,0 @@
1
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { GetResult } from "../utils/executeGetResult.js";
3
- declare const _default: {
4
- registerComputeTool: (mcpServer: McpServer, getResult: GetResult) => void;
5
- };
6
- export default _default;
7
- //# sourceMappingURL=arfcn-calculator-ntn.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arfcn-calculator-ntn.d.ts","sourceRoot":"","sources":["../../../src/tools/arfcn-calculator-ntn.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAoB,MAAM,8BAA8B,CAAC;;qCAEnC,SAAS,aAAa,SAAS;;AAqNvE,wBAEE"}