simplecov-mcp 0.2.1 → 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 (148) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +21 -0
  3. data/README.md +173 -345
  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 -15
  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 +14 -7
  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 -23
  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 +8 -13
  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 -4
  134. data/spec/version_tool_spec.rb +143 -0
  135. metadata +121 -59
  136. data/lib/simple_cov/mcp.rb +0 -9
  137. data/lib/simple_cov_mcp/base_tool.rb +0 -54
  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/legacy_shim_spec.rb +0 -13
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.2.1
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,54 +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
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
113
143
  - spec/coverage_table_tool_spec.rb
114
144
  - spec/error_handler_spec.rb
145
+ - spec/error_mode_spec.rb
146
+ - spec/errors_edge_cases_spec.rb
115
147
  - spec/errors_stale_spec.rb
148
+ - spec/file_based_mcp_tools_spec.rb
116
149
  - spec/fixtures/project1/lib/bar.rb
117
150
  - spec/fixtures/project1/lib/foo.rb
118
151
  - spec/help_tool_spec.rb
119
- - 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
120
156
  - spec/mcp_server_spec.rb
157
+ - spec/mode_detector_spec.rb
158
+ - spec/model_error_handling_spec.rb
121
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
122
178
  - spec/simplecov_mcp_model_spec.rb
179
+ - spec/simplecov_mcp_opts_spec.rb
123
180
  - spec/spec_helper.rb
181
+ - spec/staleness_checker_spec.rb
124
182
  - spec/staleness_more_spec.rb
183
+ - spec/support/mcp_runner.rb
184
+ - spec/tools_error_handling_spec.rb
125
185
  - spec/util_spec.rb
126
186
  - spec/version_spec.rb
187
+ - spec/version_tool_spec.rb
127
188
  homepage: https://github.com/keithrbennett/simplecov-mcp
128
189
  licenses:
129
190
  - MIT
130
- metadata: {}
191
+ metadata:
192
+ rubygems_mfa_required: 'true'
131
193
  rdoc_options: []
132
194
  require_paths:
133
195
  - lib
@@ -142,7 +204,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
204
  - !ruby/object:Gem::Version
143
205
  version: '0'
144
206
  requirements: []
145
- rubygems_version: 3.7.2
207
+ rubygems_version: 3.6.9
146
208
  specification_version: 4
147
209
  summary: MCP server + CLI for SimpleCov coverage data
148
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,54 +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
- private
48
-
49
- def self.log_mcp_error(error, tool_name)
50
- # Access the error handler's log_error method via send to bypass visibility
51
- SimpleCovMcp.error_handler.send(:log_error, error, tool_name)
52
- end
53
- end
54
- end