simplecov-mcp 0.3.0 → 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 (152) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +21 -0
  3. data/README.md +173 -356
  4. data/docs/ADVANCED_USAGE.md +967 -0
  5. data/docs/ARCHITECTURE.md +79 -0
  6. data/docs/BRANCH_ONLY_COVERAGE.md +81 -0
  7. data/docs/CLI_USAGE.md +637 -0
  8. data/docs/DEVELOPMENT.md +82 -0
  9. data/docs/ERROR_HANDLING.md +93 -0
  10. data/docs/EXAMPLES.md +430 -0
  11. data/docs/INSTALLATION.md +352 -0
  12. data/docs/LIBRARY_API.md +635 -0
  13. data/docs/MCP_INTEGRATION.md +488 -0
  14. data/docs/TROUBLESHOOTING.md +276 -0
  15. data/docs/arch-decisions/001-x-arch-decision.md +93 -0
  16. data/docs/arch-decisions/002-x-arch-decision.md +157 -0
  17. data/docs/arch-decisions/003-x-arch-decision.md +163 -0
  18. data/docs/arch-decisions/004-x-arch-decision.md +199 -0
  19. data/docs/arch-decisions/005-x-arch-decision.md +187 -0
  20. data/docs/arch-decisions/README.md +60 -0
  21. data/docs/presentations/simplecov-mcp-presentation.md +249 -0
  22. data/exe/simplecov-mcp +4 -4
  23. data/lib/simplecov_mcp/app_context.rb +26 -0
  24. data/lib/simplecov_mcp/base_tool.rb +74 -0
  25. data/lib/simplecov_mcp/cli.rb +234 -0
  26. data/lib/simplecov_mcp/cli_config.rb +56 -0
  27. data/lib/simplecov_mcp/commands/base_command.rb +78 -0
  28. data/lib/simplecov_mcp/commands/command_factory.rb +39 -0
  29. data/lib/simplecov_mcp/commands/detailed_command.rb +24 -0
  30. data/lib/simplecov_mcp/commands/list_command.rb +13 -0
  31. data/lib/simplecov_mcp/commands/raw_command.rb +22 -0
  32. data/lib/simplecov_mcp/commands/summary_command.rb +24 -0
  33. data/lib/simplecov_mcp/commands/uncovered_command.rb +26 -0
  34. data/lib/simplecov_mcp/commands/version_command.rb +18 -0
  35. data/lib/simplecov_mcp/constants.rb +22 -0
  36. data/lib/simplecov_mcp/error_handler.rb +124 -0
  37. data/lib/simplecov_mcp/error_handler_factory.rb +31 -0
  38. data/lib/simplecov_mcp/errors.rb +179 -0
  39. data/lib/simplecov_mcp/formatters/source_formatter.rb +148 -0
  40. data/lib/simplecov_mcp/mcp_server.rb +40 -0
  41. data/lib/simplecov_mcp/mode_detector.rb +55 -0
  42. data/lib/simplecov_mcp/model.rb +300 -0
  43. data/lib/simplecov_mcp/option_normalizers.rb +92 -0
  44. data/lib/simplecov_mcp/option_parser_builder.rb +134 -0
  45. data/lib/simplecov_mcp/option_parsers/env_options_parser.rb +50 -0
  46. data/lib/simplecov_mcp/option_parsers/error_helper.rb +109 -0
  47. data/lib/simplecov_mcp/path_relativizer.rb +61 -0
  48. data/lib/simplecov_mcp/presenters/base_coverage_presenter.rb +44 -0
  49. data/lib/simplecov_mcp/presenters/coverage_detailed_presenter.rb +16 -0
  50. data/lib/simplecov_mcp/presenters/coverage_raw_presenter.rb +16 -0
  51. data/lib/simplecov_mcp/presenters/coverage_summary_presenter.rb +16 -0
  52. data/lib/simplecov_mcp/presenters/coverage_uncovered_presenter.rb +16 -0
  53. data/lib/simplecov_mcp/presenters/project_coverage_presenter.rb +52 -0
  54. data/lib/simplecov_mcp/resolvers/coverage_line_resolver.rb +126 -0
  55. data/lib/simplecov_mcp/resolvers/resolver_factory.rb +28 -0
  56. data/lib/simplecov_mcp/resolvers/resultset_path_resolver.rb +78 -0
  57. data/lib/simplecov_mcp/resultset_loader.rb +136 -0
  58. data/lib/simplecov_mcp/staleness_checker.rb +243 -0
  59. data/lib/{simple_cov_mcp → simplecov_mcp}/tools/all_files_coverage_tool.rb +31 -13
  60. data/lib/{simple_cov_mcp → simplecov_mcp}/tools/coverage_detailed_tool.rb +7 -7
  61. data/lib/{simple_cov_mcp → simplecov_mcp}/tools/coverage_raw_tool.rb +7 -7
  62. data/lib/{simple_cov_mcp → simplecov_mcp}/tools/coverage_summary_tool.rb +7 -7
  63. data/lib/simplecov_mcp/tools/coverage_table_tool.rb +90 -0
  64. data/lib/{simple_cov_mcp → simplecov_mcp}/tools/help_tool.rb +13 -4
  65. data/lib/{simple_cov_mcp → simplecov_mcp}/tools/uncovered_lines_tool.rb +7 -7
  66. data/lib/{simple_cov_mcp → simplecov_mcp}/tools/version_tool.rb +11 -3
  67. data/lib/simplecov_mcp/util.rb +82 -0
  68. data/lib/{simple_cov_mcp → simplecov_mcp}/version.rb +1 -1
  69. data/lib/simplecov_mcp.rb +144 -2
  70. data/spec/MCP_INTEGRATION_TESTS_README.md +111 -0
  71. data/spec/TIMESTAMPS.md +48 -0
  72. data/spec/all_files_coverage_tool_spec.rb +29 -25
  73. data/spec/base_tool_spec.rb +11 -10
  74. data/spec/cli/show_default_report_spec.rb +33 -0
  75. data/spec/cli_config_spec.rb +137 -0
  76. data/spec/cli_enumerated_options_spec.rb +68 -0
  77. data/spec/cli_error_spec.rb +105 -47
  78. data/spec/cli_source_spec.rb +82 -23
  79. data/spec/cli_spec.rb +140 -5
  80. data/spec/cli_success_predicate_spec.rb +141 -0
  81. data/spec/cli_table_spec.rb +1 -1
  82. data/spec/cli_usage_spec.rb +10 -26
  83. data/spec/commands/base_command_spec.rb +187 -0
  84. data/spec/commands/command_factory_spec.rb +72 -0
  85. data/spec/commands/detailed_command_spec.rb +48 -0
  86. data/spec/commands/raw_command_spec.rb +46 -0
  87. data/spec/commands/summary_command_spec.rb +47 -0
  88. data/spec/commands/uncovered_command_spec.rb +49 -0
  89. data/spec/constants_spec.rb +61 -0
  90. data/spec/coverage_table_tool_spec.rb +17 -33
  91. data/spec/error_handler_spec.rb +22 -13
  92. data/spec/error_mode_spec.rb +143 -0
  93. data/spec/errors_edge_cases_spec.rb +239 -0
  94. data/spec/errors_stale_spec.rb +2 -2
  95. data/spec/file_based_mcp_tools_spec.rb +99 -0
  96. data/spec/fixtures/project1/lib/bar.rb +0 -1
  97. data/spec/fixtures/project1/lib/foo.rb +0 -1
  98. data/spec/help_tool_spec.rb +11 -17
  99. data/spec/integration_spec.rb +845 -0
  100. data/spec/logging_fallback_spec.rb +128 -0
  101. data/spec/mcp_logging_spec.rb +44 -0
  102. data/spec/mcp_server_integration_spec.rb +23 -0
  103. data/spec/mcp_server_spec.rb +15 -4
  104. data/spec/mode_detector_spec.rb +148 -0
  105. data/spec/model_error_handling_spec.rb +210 -0
  106. data/spec/model_staleness_spec.rb +40 -10
  107. data/spec/option_normalizers_spec.rb +204 -0
  108. data/spec/option_parsers/env_options_parser_spec.rb +233 -0
  109. data/spec/option_parsers/error_helper_spec.rb +222 -0
  110. data/spec/path_relativizer_spec.rb +83 -0
  111. data/spec/presenters/coverage_detailed_presenter_spec.rb +19 -0
  112. data/spec/presenters/coverage_raw_presenter_spec.rb +15 -0
  113. data/spec/presenters/coverage_summary_presenter_spec.rb +15 -0
  114. data/spec/presenters/coverage_uncovered_presenter_spec.rb +16 -0
  115. data/spec/presenters/project_coverage_presenter_spec.rb +86 -0
  116. data/spec/resolvers/coverage_line_resolver_spec.rb +57 -0
  117. data/spec/resolvers/resolver_factory_spec.rb +61 -0
  118. data/spec/resolvers/resultset_path_resolver_spec.rb +55 -0
  119. data/spec/resultset_loader_spec.rb +167 -0
  120. data/spec/shared_examples/README.md +115 -0
  121. data/spec/shared_examples/coverage_presenter_examples.rb +66 -0
  122. data/spec/shared_examples/file_based_mcp_tools.rb +174 -0
  123. data/spec/shared_examples/mcp_tool_text_json_response.rb +16 -0
  124. data/spec/simple_cov_mcp_module_spec.rb +16 -0
  125. data/spec/simplecov_mcp_model_spec.rb +340 -9
  126. data/spec/simplecov_mcp_opts_spec.rb +182 -0
  127. data/spec/spec_helper.rb +147 -4
  128. data/spec/staleness_checker_spec.rb +373 -0
  129. data/spec/staleness_more_spec.rb +16 -13
  130. data/spec/support/mcp_runner.rb +64 -0
  131. data/spec/tools_error_handling_spec.rb +144 -0
  132. data/spec/util_spec.rb +109 -34
  133. data/spec/version_spec.rb +117 -9
  134. data/spec/version_tool_spec.rb +131 -10
  135. metadata +120 -63
  136. data/lib/simple_cov/mcp.rb +0 -9
  137. data/lib/simple_cov_mcp/base_tool.rb +0 -70
  138. data/lib/simple_cov_mcp/cli.rb +0 -390
  139. data/lib/simple_cov_mcp/error_handler.rb +0 -131
  140. data/lib/simple_cov_mcp/error_handler_factory.rb +0 -38
  141. data/lib/simple_cov_mcp/errors.rb +0 -176
  142. data/lib/simple_cov_mcp/mcp_server.rb +0 -30
  143. data/lib/simple_cov_mcp/model.rb +0 -104
  144. data/lib/simple_cov_mcp/staleness_checker.rb +0 -125
  145. data/lib/simple_cov_mcp/tools/coverage_table_tool.rb +0 -61
  146. data/lib/simple_cov_mcp/util.rb +0 -122
  147. data/lib/simple_cov_mcp.rb +0 -102
  148. data/spec/coverage_detailed_tool_spec.rb +0 -36
  149. data/spec/coverage_raw_tool_spec.rb +0 -32
  150. data/spec/coverage_summary_tool_spec.rb +0 -39
  151. data/spec/legacy_shim_spec.rb +0 -13
  152. data/spec/uncovered_lines_tool_spec.rb +0 -33
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simplecov-mcp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keith R. Bennett
@@ -13,64 +13,36 @@ dependencies:
13
13
  name: mcp
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - ">="
16
+ - - "~>"
17
17
  - !ruby/object:Gem::Version
18
18
  version: '0.3'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
- - - ">="
23
+ - - "~>"
24
24
  - !ruby/object:Gem::Version
25
25
  version: '0.3'
26
26
  - !ruby/object:Gem::Dependency
27
- name: awesome_print
27
+ name: simplecov
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 1.9.2
32
+ version: '0.21'
33
33
  - - "<"
34
34
  - !ruby/object:Gem::Version
35
- version: '2'
35
+ version: '1.0'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- version: 1.9.2
43
- - - "<"
44
- - !ruby/object:Gem::Version
45
- version: '2'
46
- - !ruby/object:Gem::Dependency
47
- name: rspec
48
- requirement: !ruby/object:Gem::Requirement
49
- requirements:
50
- - - "~>"
51
- - !ruby/object:Gem::Version
52
- version: '3.0'
53
- type: :development
54
- prerelease: false
55
- version_requirements: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - "~>"
58
- - !ruby/object:Gem::Version
59
- version: '3.0'
60
- - !ruby/object:Gem::Dependency
61
- name: simplecov
62
- requirement: !ruby/object:Gem::Requirement
63
39
  requirements:
64
40
  - - ">="
65
41
  - !ruby/object:Gem::Version
66
42
  version: '0.21'
67
- type: :development
68
- prerelease: false
69
- version_requirements: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - ">="
43
+ - - "<"
72
44
  - !ruby/object:Gem::Version
73
- version: '0.21'
45
+ version: '1.0'
74
46
  description: Provides an MCP (Model Context Protocol) server and a CLI to inspect
75
47
  SimpleCov coverage, including per-file summaries and uncovered lines.
76
48
  email:
@@ -80,59 +52,144 @@ executables:
80
52
  extensions: []
81
53
  extra_rdoc_files: []
82
54
  files:
55
+ - LICENSE
83
56
  - README.md
57
+ - docs/ADVANCED_USAGE.md
58
+ - docs/ARCHITECTURE.md
59
+ - docs/BRANCH_ONLY_COVERAGE.md
60
+ - docs/CLI_USAGE.md
61
+ - docs/DEVELOPMENT.md
62
+ - docs/ERROR_HANDLING.md
63
+ - docs/EXAMPLES.md
64
+ - docs/INSTALLATION.md
65
+ - docs/LIBRARY_API.md
66
+ - docs/MCP_INTEGRATION.md
67
+ - docs/TROUBLESHOOTING.md
68
+ - docs/arch-decisions/001-x-arch-decision.md
69
+ - docs/arch-decisions/002-x-arch-decision.md
70
+ - docs/arch-decisions/003-x-arch-decision.md
71
+ - docs/arch-decisions/004-x-arch-decision.md
72
+ - docs/arch-decisions/005-x-arch-decision.md
73
+ - docs/arch-decisions/README.md
74
+ - docs/presentations/simplecov-mcp-presentation.md
84
75
  - exe/simplecov-mcp
85
- - lib/simple_cov/mcp.rb
86
- - lib/simple_cov_mcp.rb
87
- - lib/simple_cov_mcp/base_tool.rb
88
- - lib/simple_cov_mcp/cli.rb
89
- - lib/simple_cov_mcp/error_handler.rb
90
- - lib/simple_cov_mcp/error_handler_factory.rb
91
- - lib/simple_cov_mcp/errors.rb
92
- - lib/simple_cov_mcp/mcp_server.rb
93
- - lib/simple_cov_mcp/model.rb
94
- - lib/simple_cov_mcp/staleness_checker.rb
95
- - lib/simple_cov_mcp/tools/all_files_coverage_tool.rb
96
- - lib/simple_cov_mcp/tools/coverage_detailed_tool.rb
97
- - lib/simple_cov_mcp/tools/coverage_raw_tool.rb
98
- - lib/simple_cov_mcp/tools/coverage_summary_tool.rb
99
- - lib/simple_cov_mcp/tools/coverage_table_tool.rb
100
- - lib/simple_cov_mcp/tools/help_tool.rb
101
- - lib/simple_cov_mcp/tools/uncovered_lines_tool.rb
102
- - lib/simple_cov_mcp/tools/version_tool.rb
103
- - lib/simple_cov_mcp/util.rb
104
- - lib/simple_cov_mcp/version.rb
105
76
  - lib/simplecov_mcp.rb
77
+ - lib/simplecov_mcp/app_context.rb
78
+ - lib/simplecov_mcp/base_tool.rb
79
+ - lib/simplecov_mcp/cli.rb
80
+ - lib/simplecov_mcp/cli_config.rb
81
+ - lib/simplecov_mcp/commands/base_command.rb
82
+ - lib/simplecov_mcp/commands/command_factory.rb
83
+ - lib/simplecov_mcp/commands/detailed_command.rb
84
+ - lib/simplecov_mcp/commands/list_command.rb
85
+ - lib/simplecov_mcp/commands/raw_command.rb
86
+ - lib/simplecov_mcp/commands/summary_command.rb
87
+ - lib/simplecov_mcp/commands/uncovered_command.rb
88
+ - lib/simplecov_mcp/commands/version_command.rb
89
+ - lib/simplecov_mcp/constants.rb
90
+ - lib/simplecov_mcp/error_handler.rb
91
+ - lib/simplecov_mcp/error_handler_factory.rb
92
+ - lib/simplecov_mcp/errors.rb
93
+ - lib/simplecov_mcp/formatters/source_formatter.rb
94
+ - lib/simplecov_mcp/mcp_server.rb
95
+ - lib/simplecov_mcp/mode_detector.rb
96
+ - lib/simplecov_mcp/model.rb
97
+ - lib/simplecov_mcp/option_normalizers.rb
98
+ - lib/simplecov_mcp/option_parser_builder.rb
99
+ - lib/simplecov_mcp/option_parsers/env_options_parser.rb
100
+ - lib/simplecov_mcp/option_parsers/error_helper.rb
101
+ - lib/simplecov_mcp/path_relativizer.rb
102
+ - lib/simplecov_mcp/presenters/base_coverage_presenter.rb
103
+ - lib/simplecov_mcp/presenters/coverage_detailed_presenter.rb
104
+ - lib/simplecov_mcp/presenters/coverage_raw_presenter.rb
105
+ - lib/simplecov_mcp/presenters/coverage_summary_presenter.rb
106
+ - lib/simplecov_mcp/presenters/coverage_uncovered_presenter.rb
107
+ - lib/simplecov_mcp/presenters/project_coverage_presenter.rb
108
+ - lib/simplecov_mcp/resolvers/coverage_line_resolver.rb
109
+ - lib/simplecov_mcp/resolvers/resolver_factory.rb
110
+ - lib/simplecov_mcp/resolvers/resultset_path_resolver.rb
111
+ - lib/simplecov_mcp/resultset_loader.rb
112
+ - lib/simplecov_mcp/staleness_checker.rb
113
+ - lib/simplecov_mcp/tools/all_files_coverage_tool.rb
114
+ - lib/simplecov_mcp/tools/coverage_detailed_tool.rb
115
+ - lib/simplecov_mcp/tools/coverage_raw_tool.rb
116
+ - lib/simplecov_mcp/tools/coverage_summary_tool.rb
117
+ - lib/simplecov_mcp/tools/coverage_table_tool.rb
118
+ - lib/simplecov_mcp/tools/help_tool.rb
119
+ - lib/simplecov_mcp/tools/uncovered_lines_tool.rb
120
+ - lib/simplecov_mcp/tools/version_tool.rb
121
+ - lib/simplecov_mcp/util.rb
122
+ - lib/simplecov_mcp/version.rb
123
+ - spec/MCP_INTEGRATION_TESTS_README.md
124
+ - spec/TIMESTAMPS.md
106
125
  - spec/all_files_coverage_tool_spec.rb
107
126
  - spec/base_tool_spec.rb
127
+ - spec/cli/show_default_report_spec.rb
128
+ - spec/cli_config_spec.rb
129
+ - spec/cli_enumerated_options_spec.rb
108
130
  - spec/cli_error_spec.rb
109
131
  - spec/cli_source_spec.rb
110
132
  - spec/cli_spec.rb
133
+ - spec/cli_success_predicate_spec.rb
111
134
  - spec/cli_table_spec.rb
112
135
  - spec/cli_usage_spec.rb
113
- - spec/coverage_detailed_tool_spec.rb
114
- - spec/coverage_raw_tool_spec.rb
115
- - spec/coverage_summary_tool_spec.rb
136
+ - spec/commands/base_command_spec.rb
137
+ - spec/commands/command_factory_spec.rb
138
+ - spec/commands/detailed_command_spec.rb
139
+ - spec/commands/raw_command_spec.rb
140
+ - spec/commands/summary_command_spec.rb
141
+ - spec/commands/uncovered_command_spec.rb
142
+ - spec/constants_spec.rb
116
143
  - spec/coverage_table_tool_spec.rb
117
144
  - spec/error_handler_spec.rb
145
+ - spec/error_mode_spec.rb
146
+ - spec/errors_edge_cases_spec.rb
118
147
  - spec/errors_stale_spec.rb
148
+ - spec/file_based_mcp_tools_spec.rb
119
149
  - spec/fixtures/project1/lib/bar.rb
120
150
  - spec/fixtures/project1/lib/foo.rb
121
151
  - spec/help_tool_spec.rb
122
- - spec/legacy_shim_spec.rb
152
+ - spec/integration_spec.rb
153
+ - spec/logging_fallback_spec.rb
154
+ - spec/mcp_logging_spec.rb
155
+ - spec/mcp_server_integration_spec.rb
123
156
  - spec/mcp_server_spec.rb
157
+ - spec/mode_detector_spec.rb
158
+ - spec/model_error_handling_spec.rb
124
159
  - spec/model_staleness_spec.rb
160
+ - spec/option_normalizers_spec.rb
161
+ - spec/option_parsers/env_options_parser_spec.rb
162
+ - spec/option_parsers/error_helper_spec.rb
163
+ - spec/path_relativizer_spec.rb
164
+ - spec/presenters/coverage_detailed_presenter_spec.rb
165
+ - spec/presenters/coverage_raw_presenter_spec.rb
166
+ - spec/presenters/coverage_summary_presenter_spec.rb
167
+ - spec/presenters/coverage_uncovered_presenter_spec.rb
168
+ - spec/presenters/project_coverage_presenter_spec.rb
169
+ - spec/resolvers/coverage_line_resolver_spec.rb
170
+ - spec/resolvers/resolver_factory_spec.rb
171
+ - spec/resolvers/resultset_path_resolver_spec.rb
172
+ - spec/resultset_loader_spec.rb
173
+ - spec/shared_examples/README.md
174
+ - spec/shared_examples/coverage_presenter_examples.rb
175
+ - spec/shared_examples/file_based_mcp_tools.rb
176
+ - spec/shared_examples/mcp_tool_text_json_response.rb
177
+ - spec/simple_cov_mcp_module_spec.rb
125
178
  - spec/simplecov_mcp_model_spec.rb
179
+ - spec/simplecov_mcp_opts_spec.rb
126
180
  - spec/spec_helper.rb
181
+ - spec/staleness_checker_spec.rb
127
182
  - spec/staleness_more_spec.rb
128
- - spec/uncovered_lines_tool_spec.rb
183
+ - spec/support/mcp_runner.rb
184
+ - spec/tools_error_handling_spec.rb
129
185
  - spec/util_spec.rb
130
186
  - spec/version_spec.rb
131
187
  - spec/version_tool_spec.rb
132
188
  homepage: https://github.com/keithrbennett/simplecov-mcp
133
189
  licenses:
134
190
  - MIT
135
- metadata: {}
191
+ metadata:
192
+ rubygems_mfa_required: 'true'
136
193
  rdoc_options: []
137
194
  require_paths:
138
195
  - lib
@@ -147,7 +204,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
204
  - !ruby/object:Gem::Version
148
205
  version: '0'
149
206
  requirements: []
150
- rubygems_version: 3.7.2
207
+ rubygems_version: 3.6.9
151
208
  specification_version: 4
152
209
  summary: MCP server + CLI for SimpleCov coverage data
153
210
  test_files: []
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Back-compat shim: load new path
4
- require 'simple_cov_mcp'
5
-
6
- # Only when requiring this legacy path, expose SimpleCov::Mcp as an alias
7
- module SimpleCov
8
- Mcp = SimpleCovMcp
9
- end
@@ -1,70 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'mcp'
4
- require_relative 'errors'
5
- require_relative 'error_handler'
6
-
7
- module SimpleCovMcp
8
- class BaseTool < ::MCP::Tool
9
- INPUT_SCHEMA = {
10
- type: 'object',
11
- additionalProperties: false,
12
- properties: {
13
- path: {
14
- type: 'string',
15
- description: 'Repo-relative or absolute path to the file whose coverage data you need.',
16
- examples: ['lib/simple_cov_mcp/model.rb']
17
- },
18
- root: {
19
- type: 'string',
20
- description: 'Project root used to resolve relative paths (defaults to current workspace).',
21
- default: '.'
22
- },
23
- resultset: {
24
- type: 'string',
25
- description: 'Path to the SimpleCov .resultset.json file (absolute or relative to root).'
26
- },
27
- stale: {
28
- type: 'string',
29
- description: "How to handle missing/outdated coverage data. 'off' skips checks; 'error' raises.",
30
- enum: %w[off error],
31
- default: 'off'
32
- }
33
- },
34
- required: ['path']
35
- }
36
- def self.input_schema_def = INPUT_SCHEMA
37
-
38
- # Handle errors consistently across all MCP tools
39
- # Returns an MCP::Tool::Response with appropriate error message
40
- def self.handle_mcp_error(error, tool_name)
41
- # Normalize to a SimpleCovMcp::Error so we can handle/log uniformly
42
- normalized = error.is_a?(SimpleCovMcp::Error) ? error : SimpleCovMcp.error_handler.convert_standard_error(error)
43
- log_mcp_error(normalized, tool_name)
44
- ::MCP::Tool::Response.new([{ type: 'text', text: "Error: #{normalized.user_friendly_message}" }])
45
- end
46
-
47
- # Respond with JSON as a resource to avoid clients mutating content types.
48
- # The resource embeds the JSON string with a clear MIME type.
49
- def self.respond_json(payload, name: 'data.json', pretty: false)
50
- json = pretty ? JSON.pretty_generate(payload) : JSON.generate(payload)
51
- ::MCP::Tool::Response.new([
52
- {
53
- 'type' => 'resource',
54
- 'resource' => {
55
- 'mimeType' => 'application/json',
56
- 'text' => json,
57
- 'name' => name
58
- }
59
- }
60
- ])
61
- end
62
-
63
- private
64
-
65
- def self.log_mcp_error(error, tool_name)
66
- # Access the error handler's log_error method via send to bypass visibility
67
- SimpleCovMcp.error_handler.send(:log_error, error, tool_name)
68
- end
69
- end
70
- end