truss-api-mcp 1.0.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.
Files changed (84) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +83 -0
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +89 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/code-generator.d.ts +6 -0
  8. package/dist/lib/code-generator.d.ts.map +1 -0
  9. package/dist/lib/code-generator.js +890 -0
  10. package/dist/lib/code-generator.js.map +1 -0
  11. package/dist/lib/http-client.d.ts +6 -0
  12. package/dist/lib/http-client.d.ts.map +1 -0
  13. package/dist/lib/http-client.js +76 -0
  14. package/dist/lib/http-client.js.map +1 -0
  15. package/dist/lib/license.d.ts +4 -0
  16. package/dist/lib/license.d.ts.map +1 -0
  17. package/dist/lib/license.js +97 -0
  18. package/dist/lib/license.js.map +1 -0
  19. package/dist/lib/openapi-parser.d.ts +11 -0
  20. package/dist/lib/openapi-parser.d.ts.map +1 -0
  21. package/dist/lib/openapi-parser.js +390 -0
  22. package/dist/lib/openapi-parser.js.map +1 -0
  23. package/dist/lib/schema-validator.d.ts +15 -0
  24. package/dist/lib/schema-validator.d.ts.map +1 -0
  25. package/dist/lib/schema-validator.js +206 -0
  26. package/dist/lib/schema-validator.js.map +1 -0
  27. package/dist/tools/compare-specs.d.ts +3 -0
  28. package/dist/tools/compare-specs.d.ts.map +1 -0
  29. package/dist/tools/compare-specs.js +59 -0
  30. package/dist/tools/compare-specs.js.map +1 -0
  31. package/dist/tools/generate-client.d.ts +3 -0
  32. package/dist/tools/generate-client.d.ts.map +1 -0
  33. package/dist/tools/generate-client.js +65 -0
  34. package/dist/tools/generate-client.js.map +1 -0
  35. package/dist/tools/generate-openapi.d.ts +3 -0
  36. package/dist/tools/generate-openapi.d.ts.map +1 -0
  37. package/dist/tools/generate-openapi.js +57 -0
  38. package/dist/tools/generate-openapi.js.map +1 -0
  39. package/dist/tools/generate-tests.d.ts +3 -0
  40. package/dist/tools/generate-tests.d.ts.map +1 -0
  41. package/dist/tools/generate-tests.js +59 -0
  42. package/dist/tools/generate-tests.js.map +1 -0
  43. package/dist/tools/mock-server.d.ts +3 -0
  44. package/dist/tools/mock-server.d.ts.map +1 -0
  45. package/dist/tools/mock-server.js +60 -0
  46. package/dist/tools/mock-server.js.map +1 -0
  47. package/dist/tools/parse-openapi.d.ts +3 -0
  48. package/dist/tools/parse-openapi.d.ts.map +1 -0
  49. package/dist/tools/parse-openapi.js +48 -0
  50. package/dist/tools/parse-openapi.js.map +1 -0
  51. package/dist/tools/test-endpoint.d.ts +3 -0
  52. package/dist/tools/test-endpoint.d.ts.map +1 -0
  53. package/dist/tools/test-endpoint.js +66 -0
  54. package/dist/tools/test-endpoint.js.map +1 -0
  55. package/dist/tools/validate-response.d.ts +3 -0
  56. package/dist/tools/validate-response.d.ts.map +1 -0
  57. package/dist/tools/validate-response.js +44 -0
  58. package/dist/tools/validate-response.js.map +1 -0
  59. package/dist/types.d.ts +121 -0
  60. package/dist/types.d.ts.map +1 -0
  61. package/dist/types.js +3 -0
  62. package/dist/types.js.map +1 -0
  63. package/evals/eval-http.ts +163 -0
  64. package/evals/eval-openapi.ts +506 -0
  65. package/evals/run-evals.ts +29 -0
  66. package/glama.json +4 -0
  67. package/package.json +37 -0
  68. package/smithery.yaml +9 -0
  69. package/src/index.ts +110 -0
  70. package/src/lib/code-generator.ts +1045 -0
  71. package/src/lib/http-client.ts +87 -0
  72. package/src/lib/license.ts +121 -0
  73. package/src/lib/openapi-parser.ts +456 -0
  74. package/src/lib/schema-validator.ts +234 -0
  75. package/src/tools/compare-specs.ts +67 -0
  76. package/src/tools/generate-client.ts +75 -0
  77. package/src/tools/generate-openapi.ts +67 -0
  78. package/src/tools/generate-tests.ts +69 -0
  79. package/src/tools/mock-server.ts +68 -0
  80. package/src/tools/parse-openapi.ts +54 -0
  81. package/src/tools/test-endpoint.ts +71 -0
  82. package/src/tools/validate-response.ts +54 -0
  83. package/src/types.ts +156 -0
  84. package/tsconfig.json +19 -0
package/src/index.ts ADDED
@@ -0,0 +1,110 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
4
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
5
+ import { z } from 'zod';
6
+
7
+ // Tool registrations
8
+ import { registerTestEndpoint } from './tools/test-endpoint.js';
9
+ import { registerParseOpenApi } from './tools/parse-openapi.js';
10
+ import { registerValidateResponse } from './tools/validate-response.js';
11
+ import { registerGenerateOpenApi } from './tools/generate-openapi.js';
12
+ import { registerGenerateTests } from './tools/generate-tests.js';
13
+ import { registerMockServer } from './tools/mock-server.js';
14
+ import { registerCompareSpecs } from './tools/compare-specs.js';
15
+ import { registerGenerateClient } from './tools/generate-client.js';
16
+
17
+ // License
18
+ import { getLicenseStatus } from './lib/license.js';
19
+
20
+ const server = new McpServer({
21
+ name: '@truss-dev/api-testing-mcp',
22
+ version: '1.0.0',
23
+ });
24
+
25
+ // ── Status Tool ─────────────────────────────────────────────────────
26
+
27
+ server.tool(
28
+ 'check_api_status',
29
+ 'Check TRUSS API Testing MCP license status and available tools.',
30
+ {},
31
+ async () => {
32
+ const license = await getLicenseStatus();
33
+
34
+ return {
35
+ content: [
36
+ {
37
+ type: 'text' as const,
38
+ text: JSON.stringify({
39
+ server: '@truss-dev/api-testing-mcp',
40
+ version: '1.0.0',
41
+ license: {
42
+ tier: license.tier,
43
+ valid: license.valid,
44
+ expires_at: license.expiresAt,
45
+ },
46
+ tools: {
47
+ free: [
48
+ { name: 'test_endpoint', description: 'Send HTTP request and get structured response' },
49
+ { name: 'parse_openapi', description: 'Parse OpenAPI/Swagger spec and list endpoints' },
50
+ { name: 'validate_response', description: 'Validate API response against expected schema' },
51
+ ],
52
+ pro: [
53
+ { name: 'generate_openapi', description: 'Auto-generate OpenAPI spec from examples' },
54
+ { name: 'generate_tests', description: 'Generate API test suite (Jest/Vitest/Pytest)' },
55
+ { name: 'mock_server', description: 'Generate mock server config from spec' },
56
+ { name: 'compare_specs', description: 'Diff two specs and find breaking changes' },
57
+ { name: 'generate_client', description: 'Generate typed API client (TS/Python/Go)' },
58
+ ],
59
+ },
60
+ ...(license.tier === 'free'
61
+ ? {
62
+ upgrade_info: {
63
+ url: 'https://truss.dev/pricing',
64
+ price: '$25/mo',
65
+ features: [
66
+ 'Auto-generate OpenAPI specs from examples',
67
+ 'Generate API test suites (Jest, Vitest, Pytest)',
68
+ 'Mock server generation from specs',
69
+ 'Breaking change detection between spec versions',
70
+ 'Multi-language client code generation (TS, Python, Go)',
71
+ ],
72
+ },
73
+ }
74
+ : {}),
75
+ }, null, 2),
76
+ },
77
+ ],
78
+ };
79
+ }
80
+ );
81
+
82
+ // ── Register Free Tier Tools ────────────────────────────────────────
83
+
84
+ registerTestEndpoint(server);
85
+ registerParseOpenApi(server);
86
+ registerValidateResponse(server);
87
+
88
+ // ── Register Pro Tier Tools ─────────────────────────────────────────
89
+
90
+ registerGenerateOpenApi(server);
91
+ registerGenerateTests(server);
92
+ registerMockServer(server);
93
+ registerCompareSpecs(server);
94
+ registerGenerateClient(server);
95
+
96
+ // ── Start Server ────────────────────────────────────────────────────
97
+
98
+ async function main(): Promise<void> {
99
+ const transport = new StdioServerTransport();
100
+
101
+ process.on('SIGINT', () => process.exit(0));
102
+ process.on('SIGTERM', () => process.exit(0));
103
+
104
+ await server.connect(transport);
105
+ }
106
+
107
+ main().catch((err) => {
108
+ console.error('Fatal error starting MCP server:', err);
109
+ process.exit(1);
110
+ });