@portone/mcp-server 0.15.0-alpha.3 → 0.15.0-alpha.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.
@@ -291,7 +291,7 @@ datetime: 2025-03-03T15:00:00.000Z
291
291
  - 인증창 호출 시 업체 측에서 전달하는 Ret\_URL(본인확인 인증 결과 리턴 페이지 설정)이 해당 메뉴에 등록되어 있지 않으면 서비스 이용이 불가합니다.
292
292
 
293
293
  * 인증결과를 받을 URL을 설정 방법
294
- - 인증결과 경로 등록 URL : <https://channel-service.prod.iamport.co/>
294
+ - 인증결과 경로 등록 URL : <https://checkout-service.prod.iamport.co/>
295
295
 
296
296
  <Accordion title="▶KCP 관리자페이지>URL설정 경로 이미지 참고" image="https://help.portone.io/uploads/KCP_본인인증3333.png" />
297
297
 
package/manifest.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "dxt_version": "0.1",
3
3
  "name": "portone-mcp-server",
4
- "version": "0.15.0-alpha.3",
4
+ "version": "0.15.0-alpha.5",
5
5
  "description": "PortOne MCP Server for Developers",
6
6
  "author": {
7
7
  "name": "PortOne",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@portone/mcp-server",
3
- "version": "0.15.0-alpha.3",
3
+ "version": "0.15.0-alpha.5",
4
4
  "description": "포트원 사용자를 위한 MCP (Model Context Protocol) 서버입니다. 포트원 개발자센터, 헬프센터 등 공식 문서 내용을 LLM(Large Language Model)에 제공해 정확한 정보를 바탕으로 사용자의 연동 및 질의를 돕도록 합니다.",
5
5
  "main": "server/index.js",
6
6
  "type": "module",
package/server/index.js CHANGED
@@ -15,7 +15,7 @@ import { GraphQLClient } from "graphql-request";
15
15
  // package.json
16
16
  var package_default = {
17
17
  name: "@portone/mcp-server",
18
- version: "0.15.0-alpha.3",
18
+ version: "0.15.0-alpha.5",
19
19
  description: "\uD3EC\uD2B8\uC6D0 \uC0AC\uC6A9\uC790\uB97C \uC704\uD55C MCP (Model Context Protocol) \uC11C\uBC84\uC785\uB2C8\uB2E4. \uD3EC\uD2B8\uC6D0 \uAC1C\uBC1C\uC790\uC13C\uD130, \uD5EC\uD504\uC13C\uD130 \uB4F1 \uACF5\uC2DD \uBB38\uC11C \uB0B4\uC6A9\uC744 LLM(Large Language Model)\uC5D0 \uC81C\uACF5\uD574 \uC815\uD655\uD55C \uC815\uBCF4\uB97C \uBC14\uD0D5\uC73C\uB85C \uC0AC\uC6A9\uC790\uC758 \uC5F0\uB3D9 \uBC0F \uC9C8\uC758\uB97C \uB3D5\uB3C4\uB85D \uD569\uB2C8\uB2E4.",
20
20
  main: "server/index.js",
21
21
  type: "module",
@@ -1058,12 +1058,39 @@ __export(getDocsUrl_exports, {
1058
1058
  import z8 from "zod";
1059
1059
 
1060
1060
  // src/tools/utils/docPathToUrl.ts
1061
+ var overridenPaths = /* @__PURE__ */ new Map([
1062
+ [
1063
+ "sdk/ko/v2-server-sdk/javascript",
1064
+ "https://github.com/portone-io/server-sdk/tree/main/javascript#readme"
1065
+ ],
1066
+ [
1067
+ "sdk/ko/v2-server-sdk/python",
1068
+ "https://github.com/portone-io/server-sdk/tree/main/python#readme"
1069
+ ],
1070
+ [
1071
+ "sdk/ko/v2-server-sdk/jvm",
1072
+ "https://github.com/portone-io/server-sdk/tree/main/jvm#readme"
1073
+ ],
1074
+ [
1075
+ "sdk/ko/v2-mobile-sdk/android",
1076
+ "https://github.com/portone-io/android-sdk/tree/main#readme"
1077
+ ],
1078
+ [
1079
+ "sdk/ko/v2-mobile-sdk/react-native",
1080
+ "https://github.com/portone-io/react-native-sdk/tree/main#readme"
1081
+ ]
1082
+ ]);
1061
1083
  function docPathToUrl(path) {
1062
- if (path.startsWith("help/")) {
1063
- const slug = path.slice(path.lastIndexOf("/") + 1, -3);
1084
+ const withoutMd = path.endsWith(".md") ? path.slice(0, -3) : path;
1085
+ const overriden = overridenPaths.get(withoutMd);
1086
+ if (overriden != null) {
1087
+ return overriden;
1088
+ }
1089
+ if (withoutMd.startsWith("help/")) {
1090
+ const slug = withoutMd.slice(path.lastIndexOf("/") + 1);
1064
1091
  return `${HELP_CENTER_URL}/content/${slug}`;
1065
1092
  }
1066
- return `${DEVELOPERS_URL}/${path}`;
1093
+ return `${DEVELOPERS_URL}/${withoutMd}`;
1067
1094
  }
1068
1095
 
1069
1096
  // src/tools/getDocsUrl.ts
@@ -2239,13 +2266,17 @@ function init10(schema) {
2239
2266
  try {
2240
2267
  const pruned_data = pruneYaml(schemaData, 3);
2241
2268
  const yamlOutput = stringifyYaml(pruned_data);
2269
+ const structuredContent = {
2270
+ result: yamlOutput
2271
+ };
2242
2272
  return {
2243
2273
  content: [
2244
2274
  {
2245
2275
  type: "text",
2246
- text: yamlOutput
2276
+ text: JSON.stringify(structuredContent, null, 2)
2247
2277
  }
2248
- ]
2278
+ ],
2279
+ structuredContent
2249
2280
  };
2250
2281
  } catch (error) {
2251
2282
  return {
@@ -2286,9 +2317,6 @@ framework\uB97C \uC81C\uC678\uD55C \uBAA8\uB4E0 Args\uB294 \uC120\uD0DD\uC0AC\uD
2286
2317
  "\uC0AC\uC6A9\uD560 \uACB0\uC81C \uBC29\uBC95. \uC635\uC158: card, virtualAccount, easyPay, transfer, mobile, giftCertificate"
2287
2318
  ),
2288
2319
  smart_routing: z17.boolean().optional().describe("\uC2A4\uB9C8\uD2B8 \uB77C\uC6B0\uD305 \uC0AC\uC6A9 \uC5EC\uBD80. \uC635\uC158: true \uB610\uB294 false")
2289
- },
2290
- outputSchema: {
2291
- result: z17.string().describe("\uB9C8\uD06C\uB2E4\uC6B4 \uD615\uC2DD\uC758 \uBC31\uC5D4\uB4DC \uCF54\uB4DC \uC608\uC81C")
2292
2320
  }
2293
2321
  };
2294
2322
  function init11(apiBasePath) {
@@ -2318,17 +2346,13 @@ ${errorText}`
2318
2346
  }
2319
2347
  const data = await response.text();
2320
2348
  if (data) {
2321
- const structuredContent = {
2322
- result: data
2323
- };
2324
2349
  return {
2325
2350
  content: [
2326
2351
  {
2327
2352
  type: "text",
2328
- text: JSON.stringify(structuredContent, null, 2)
2353
+ text: data
2329
2354
  }
2330
- ],
2331
- structuredContent
2355
+ ]
2332
2356
  };
2333
2357
  } else {
2334
2358
  return {
@@ -2380,9 +2404,6 @@ framework\uB97C \uC81C\uC678\uD55C \uBAA8\uB4E0 Args\uB294 \uC120\uD0DD\uC0AC\uD
2380
2404
  "\uC0AC\uC6A9\uD560 \uACB0\uC81C \uBC29\uBC95. \uC635\uC158: card, virtualAccount, easyPay, transfer, mobile, giftCertificate"
2381
2405
  ),
2382
2406
  smart_routing: z18.boolean().optional().describe("\uC2A4\uB9C8\uD2B8 \uB77C\uC6B0\uD305 \uC0AC\uC6A9 \uC5EC\uBD80. \uC635\uC158: true \uB610\uB294 false")
2383
- },
2384
- outputSchema: {
2385
- result: z18.string().describe("\uB9C8\uD06C\uB2E4\uC6B4 \uD615\uC2DD\uC758 \uD504\uB860\uD2B8\uC5D4\uB4DC \uCF54\uB4DC \uC608\uC81C")
2386
2407
  }
2387
2408
  };
2388
2409
  function init12(apiBasePath) {
@@ -2412,17 +2433,13 @@ ${errorText}`
2412
2433
  }
2413
2434
  const data = await response.text();
2414
2435
  if (data) {
2415
- const structuredContent = {
2416
- result: data
2417
- };
2418
2436
  return {
2419
2437
  content: [
2420
2438
  {
2421
2439
  type: "text",
2422
- text: JSON.stringify(structuredContent, null, 2)
2440
+ text: data
2423
2441
  }
2424
- ],
2425
- structuredContent
2442
+ ]
2426
2443
  };
2427
2444
  } else {
2428
2445
  return {
@@ -2562,11 +2579,6 @@ max(0, idx - contextSize)\uBD80\uD130 min(contentLength, idx + len(query) + cont
2562
2579
  showMetadata: z19.boolean().default(false).describe(
2563
2580
  "true\uC774\uBA74 \uBB38\uC11C\uC758 \uBA54\uD0C0\uB370\uC774\uD130(\uC81C\uBAA9, \uC124\uBA85, \uB300\uC0C1 \uBC84\uC804)\uC744 \uACB0\uACFC\uC5D0 \uD3EC\uD568\uD569\uB2C8\uB2E4."
2564
2581
  )
2565
- },
2566
- outputSchema: {
2567
- result: z19.string().describe(
2568
- `\uD3EC\uD2B8\uC6D0 \uBB38\uC11C\uB97C \uCC3E\uC73C\uBA74 \uD574\uB2F9 \uBB38\uC11C\uC758 \uACBD\uB85C\uC640 \uAE38\uC774, \uBA54\uD0C0\uB370\uC774\uD130, query\uAC00 \uB9E4\uCE6D\uB41C \uC8FC\uBCC0 \uCEE8\uD14D\uC2A4\uD2B8\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.`
2569
- )
2570
2582
  }
2571
2583
  };
2572
2584
  function formatOccurrence(occurrence) {
@@ -2682,17 +2694,14 @@ ${result}`;
2682
2694
  const truncationMsg = `
2683
2695
 
2684
2696
  ... (output truncated due to length limit. Use page: ${page + 1} for next page)`;
2685
- const structuredContent = {
2686
- result: fullResult.substring(0, limit) + truncationMsg
2687
- };
2697
+ const truncatedResult = fullResult.substring(0, limit) + truncationMsg;
2688
2698
  return {
2689
2699
  content: [
2690
2700
  {
2691
2701
  type: "text",
2692
- text: JSON.stringify(structuredContent, null, 2)
2702
+ text: truncatedResult
2693
2703
  }
2694
- ],
2695
- structuredContent
2704
+ ]
2696
2705
  };
2697
2706
  }
2698
2707
  return {