rokadoc-mcp-server 1.1.1

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 (47) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +218 -0
  3. package/dist/config.d.ts +19 -0
  4. package/dist/config.d.ts.map +1 -0
  5. package/dist/config.js +49 -0
  6. package/dist/config.js.map +1 -0
  7. package/dist/index.d.ts +9 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +34 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/server.d.ts +31 -0
  12. package/dist/server.d.ts.map +1 -0
  13. package/dist/server.js +149 -0
  14. package/dist/server.js.map +1 -0
  15. package/dist/services/rokadoc-client.d.ts +97 -0
  16. package/dist/services/rokadoc-client.d.ts.map +1 -0
  17. package/dist/services/rokadoc-client.js +230 -0
  18. package/dist/services/rokadoc-client.js.map +1 -0
  19. package/dist/tools/convert-document.d.ts +32 -0
  20. package/dist/tools/convert-document.d.ts.map +1 -0
  21. package/dist/tools/convert-document.js +91 -0
  22. package/dist/tools/convert-document.js.map +1 -0
  23. package/dist/tools/get-conversion-result.d.ts +33 -0
  24. package/dist/tools/get-conversion-result.d.ts.map +1 -0
  25. package/dist/tools/get-conversion-result.js +84 -0
  26. package/dist/tools/get-conversion-result.js.map +1 -0
  27. package/dist/tools/list-conversions.d.ts +31 -0
  28. package/dist/tools/list-conversions.d.ts.map +1 -0
  29. package/dist/tools/list-conversions.js +68 -0
  30. package/dist/tools/list-conversions.js.map +1 -0
  31. package/dist/tools/search-documents.d.ts +39 -0
  32. package/dist/tools/search-documents.d.ts.map +1 -0
  33. package/dist/tools/search-documents.js +81 -0
  34. package/dist/tools/search-documents.js.map +1 -0
  35. package/dist/types.d.ts +208 -0
  36. package/dist/types.d.ts.map +1 -0
  37. package/dist/types.js +24 -0
  38. package/dist/types.js.map +1 -0
  39. package/dist/utils/error-handler.d.ts +40 -0
  40. package/dist/utils/error-handler.d.ts.map +1 -0
  41. package/dist/utils/error-handler.js +199 -0
  42. package/dist/utils/error-handler.js.map +1 -0
  43. package/dist/utils/url-validator.d.ts +33 -0
  44. package/dist/utils/url-validator.d.ts.map +1 -0
  45. package/dist/utils/url-validator.js +55 -0
  46. package/dist/utils/url-validator.js.map +1 -0
  47. package/package.json +58 -0
@@ -0,0 +1,55 @@
1
+ /**
2
+ * URL検証・正規化ユーティリティ
3
+ *
4
+ * rokadoc MCPサーバーのBase URL検証、正規化、
5
+ * およびリクエスト送信先のホスト制限チェックを提供する。
6
+ */
7
+ /**
8
+ * Base URLを正規化する。
9
+ * - 末尾スラッシュを除去する
10
+ * - "http://" スキームを "https://" に変換し、標準エラー出力に警告を出力する
11
+ *
12
+ * @param url - 正規化対象のURL文字列
13
+ * @returns 正規化済みのURL文字列
14
+ */
15
+ export function normalizeBaseUrl(url) {
16
+ let normalized = url;
17
+ // http:// → https:// 変換(警告出力付き)
18
+ if (normalized.startsWith("http://")) {
19
+ process.stderr.write(`[警告] Base URLが "http://" で設定されています。セキュリティのため "https://" に自動変換します: ${normalized}\n`);
20
+ normalized = "https://" + normalized.slice("http://".length);
21
+ }
22
+ // 末尾スラッシュを除去(複数のスラッシュにも対応)
23
+ normalized = normalized.replace(/\/+$/, "");
24
+ return normalized;
25
+ }
26
+ /**
27
+ * URL形式を検証する。
28
+ * "http://" または "https://" で始まる場合のみ有効とする。
29
+ *
30
+ * @param url - 検証対象のURL文字列
31
+ * @returns URL形式が有効であればtrue、そうでなければfalse
32
+ */
33
+ export function validateUrlFormat(url) {
34
+ return url.startsWith("http://") || url.startsWith("https://");
35
+ }
36
+ /**
37
+ * リクエストURLのホストがBase URLのホストと一致するかを検証する。
38
+ * 送信先をBase URLのホストのみに制限するためのセキュリティチェック。
39
+ *
40
+ * @param requestUrl - リクエスト送信先のURL文字列
41
+ * @param baseUrl - 許可されたBase URL文字列
42
+ * @returns ホストが一致すればtrue、そうでなければfalse
43
+ */
44
+ export function isAllowedHost(requestUrl, baseUrl) {
45
+ try {
46
+ const requestHost = new URL(requestUrl).host;
47
+ const allowedHost = new URL(baseUrl).host;
48
+ return requestHost === allowedHost;
49
+ }
50
+ catch {
51
+ // URLパースに失敗した場合は不許可とする
52
+ return false;
53
+ }
54
+ }
55
+ //# sourceMappingURL=url-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-validator.js","sourceRoot":"","sources":["../../src/utils/url-validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI,UAAU,GAAG,GAAG,CAAC;IAErB,gCAAgC;IAChC,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qEAAqE,UAAU,IAAI,CACpF,CAAC;QACF,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED,2BAA2B;IAC3B,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAE5C,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,OAAO,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB,EAAE,OAAe;IAC/D,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;QAC7C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;QAC1C,OAAO,WAAW,KAAK,WAAW,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,uBAAuB;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "rokadoc-mcp-server",
3
+ "version": "1.1.1",
4
+ "description": "rokadoc MCP Server - Model Context Protocol server for rokadoc RAG service",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "rokadoc-mcp-server": "dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "LICENSE.md"
13
+ ],
14
+ "engines": {
15
+ "node": ">=22"
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "https://github.com/yuma-shin/rokadoc-mcp-server"
20
+ },
21
+ "bugs": {
22
+ "url": "https://github.com/yuma-shin/rokadoc-mcp-server/issues"
23
+ },
24
+ "publishConfig": {
25
+ "access": "public"
26
+ },
27
+ "scripts": {
28
+ "clean": "node scripts/clean-dist.mjs",
29
+ "prebuild": "npm run clean",
30
+ "build": "tsc",
31
+ "typecheck": "tsc -p tsconfig.test.json --noEmit",
32
+ "test": "vitest run",
33
+ "test:property": "vitest run tests/property/",
34
+ "test:unit": "vitest run tests/unit/",
35
+ "test:watch": "vitest",
36
+ "prepack": "node scripts/pack-readme.mjs substitute",
37
+ "postpack": "node scripts/pack-readme.mjs restore",
38
+ "pack:check": "npm pack --dry-run --json"
39
+ },
40
+ "keywords": [
41
+ "mcp",
42
+ "rokadoc",
43
+ "rag",
44
+ "document-conversion"
45
+ ],
46
+ "license": "MIT",
47
+ "dependencies": {
48
+ "@modelcontextprotocol/sdk": "^1.30.0",
49
+ "zod": "^4.5.4"
50
+ },
51
+ "devDependencies": {
52
+ "@types/node": "^26.4.1",
53
+ "fast-check": "^4.9.0",
54
+ "typescript": "^7.0.2",
55
+ "vitest": "^5.0.0",
56
+ "yaml": "2.9.0"
57
+ }
58
+ }