cf-mcp 0.17.0 → 0.18.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d62d42b607e127916235fb3bbd2a2dace73fc1aefc9216dc1d9f92acfa6c423a
4
- data.tar.gz: 12a75fda9901e78aee0fc6f7c3ed448ce52f6130d868f036aa674464efea640c
3
+ metadata.gz: 4161d3091e34024cc73f40437b755e9c08b9ed4679e642caf3578dbf24e4eae0
4
+ data.tar.gz: 7ca49f9aba9d0cb13e9cfd1c738848792a162a1fb2d97c1413bd713eb9e268a6
5
5
  SHA512:
6
- metadata.gz: 63eabad61e8ea796f628e8f6248ac3e147b8486ac7495ab897dbd596d13044bd6495032dabede788a25a9426fcb9b855e5ced42a541b47aaeb269e161d958887
7
- data.tar.gz: a262522cae34cbcb9b2f9c54252709b86fa44efbf2f32f8426937784cc35d5aaf048c9267ca4e9ee53bf1b3543f5df0e4d8ca76580a881cc94b0d4ab44f355a5
6
+ metadata.gz: 40f8ce2d39d0816d8e0acdd75922a7cf77935dccf4c4a8be3e14084e9cb09ef21ea73beb6ff8d454eae372a22ec542e557137d5e539a8e2671f291f88d8ba005
7
+ data.tar.gz: 271d54107c00a36dc2bb2245265d22709752bed02ae5388dc6c8e5ed98ed09f2ba400d070f58d2f5f111ad5c24c6d3c83dde655c84b621bb6f99044aa0ab90e8
data/CHANGELOG.md CHANGED
@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.17.2] - 2026-02-10
11
+
12
+ ### Changed
13
+
14
+ - Lowered MCP protocol version from 2025-03-26 to 2025-03-26 for compatibility
15
+ - Removed title and website_url from server initialization (not supported in lower protocol version)
16
+
17
+ ### Fixed
18
+
19
+ - Fix tool name reference in web UI script.js (changed `cf_get_topic` to `get_topic` to match current tool naming)
20
+ - Remove test assertions for title-related functionality to match protocol downgrade
21
+
22
+ ## [0.17.1] - 2026-02-09
23
+
24
+ This version was prepared but never released. Changes rolled into 0.17.2.
25
+
10
26
  ## [0.17.0] - 2026-02-09
11
27
 
12
28
  ### Added
@@ -277,6 +293,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
277
293
  - `cf_list_category` - List items by category
278
294
  - `cf_get_details` - Get full documentation by name
279
295
 
296
+ [0.17.2]: https://github.com/pusewicz/cf-mcp/compare/v0.17.0...v0.17.2
297
+ [0.17.1]: https://github.com/pusewicz/cf-mcp/compare/v0.17.0...v0.17.1
280
298
  [0.17.0]: https://github.com/pusewicz/cf-mcp/compare/v0.16.2...v0.17.0
281
299
  [0.16.2]: https://github.com/pusewicz/cf-mcp/compare/v0.16.1...v0.16.2
282
300
  [0.16.1]: https://github.com/pusewicz/cf-mcp/compare/v0.16.0...v0.16.1
data/Manifest.txt CHANGED
@@ -4,7 +4,9 @@ Manifest.txt
4
4
  README.md
5
5
  Rakefile
6
6
  config.ru
7
+ config/puma.rb
7
8
  exe/cf-mcp
9
+ exe/cf-mcp-wrapper
8
10
  lib/cf/mcp.rb
9
11
  lib/cf/mcp/cli.rb
10
12
  lib/cf/mcp/downloader.rb
data/config/puma.rb ADDED
@@ -0,0 +1,17 @@
1
+ # Puma configuration for Fly.io deployment
2
+ # Optimized for low memory usage on shared-cpu-1x (256MB RAM)
3
+
4
+ # Single worker process (no forking) to save memory
5
+ workers 0
6
+
7
+ # Minimal threads for light MCP traffic
8
+ threads 2, 2
9
+
10
+ # Preload application for faster startup and lower memory footprint
11
+ preload_app!
12
+
13
+ # Bind to all interfaces
14
+ bind "tcp://0.0.0.0:#{ENV.fetch("PORT", 8080)}"
15
+
16
+ # Disable stats since we're running a single worker
17
+ activate_control_app false
@@ -0,0 +1,8 @@
1
+ #!/bin/bash
2
+ source /opt/homebrew/share/chruby/chruby.sh
3
+
4
+ PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
5
+ chruby "$(cat "$PROJECT_DIR/.ruby-version")"
6
+
7
+ export BUNDLE_GEMFILE="$PROJECT_DIR/Gemfile"
8
+ exec "$PROJECT_DIR/exe/cf-mcp" "$@"
data/lib/cf/mcp/server.rb CHANGED
@@ -34,7 +34,7 @@ module CF
34
34
  new(index).rack_app
35
35
  end
36
36
 
37
- PROTOCOL_VERSION = "2025-06-18"
37
+ PROTOCOL_VERSION = "2025-03-26"
38
38
  WEBSITE_URL = ENV.fetch("FLY_APP_NAME", nil) ? "https://#{ENV["FLY_APP_NAME"]}.fly.dev" : "https://cf-mcp.fly.dev"
39
39
  PUBLIC_DIR = File.join(__dir__, "public")
40
40
 
@@ -44,10 +44,8 @@ module CF
44
44
  configuration = ::MCP::Configuration.new(protocol_version: PROTOCOL_VERSION)
45
45
  @server = ::MCP::Server.new(
46
46
  name: "cf-mcp",
47
- title: "Cute Framework MCP",
48
47
  configuration:,
49
48
  version: CF::MCP::VERSION,
50
- website_url: WEBSITE_URL,
51
49
  icons: [
52
50
  ::MCP::Icon.new(src: "#{WEBSITE_URL}/favicon.svg", mime_type: "image/svg+xml", sizes: ["any"]),
53
51
  ::MCP::Icon.new(src: "#{WEBSITE_URL}/favicon-96x96.png", mime_type: "image/png", sizes: ["96x96"])
@@ -162,7 +162,7 @@ function FormField({ name, propDef, required, value, onChange, toolName }) {
162
162
  } else if (name === 'category') {
163
163
  input = renderSelect(id, value, handleChange, required, '-- All Categories --',
164
164
  CATEGORIES.map(cat => html`<option value=${cat}>${cat}</option>`));
165
- } else if (name === 'name' && toolName === 'cf_get_topic') {
165
+ } else if (name === 'name' && toolName === 'get_topic') {
166
166
  input = renderSelect(id, value, handleChange, required, '-- Select Topic --', renderTopicOptions());
167
167
  } else {
168
168
  input = html`
@@ -260,7 +260,7 @@ function TopicsExplorer() {
260
260
  const value = e.target.value;
261
261
  setSelectedTopic(value);
262
262
  if (value) {
263
- callTool('cf_get_topic', { name: value }, 'Loading topic...');
263
+ callTool('get_topic', { name: value }, 'Loading topic...');
264
264
  } else {
265
265
  reset();
266
266
  }
@@ -9,10 +9,7 @@ module CF
9
9
  class FindRelated < ::MCP::Tool
10
10
  extend ResponseHelpers
11
11
 
12
- TITLE = "Find Related"
13
-
14
12
  tool_name "find_related"
15
- title TITLE
16
13
  description "Find all items related to a given Cute Framework item (bidirectional relationship search)"
17
14
 
18
15
  input_schema(
@@ -24,7 +21,6 @@ module CF
24
21
  )
25
22
 
26
23
  annotations(
27
- title: TITLE,
28
24
  read_only_hint: true,
29
25
  destructive_hint: false,
30
26
  idempotent_hint: true,
@@ -9,10 +9,7 @@ module CF
9
9
  class GetDetails < ::MCP::Tool
10
10
  extend ResponseHelpers
11
11
 
12
- TITLE = "Get Details"
13
-
14
12
  tool_name "get_details"
15
- title TITLE
16
13
  description "Get detailed documentation for a specific Cute Framework item by exact name"
17
14
 
18
15
  input_schema(
@@ -24,7 +21,6 @@ module CF
24
21
  )
25
22
 
26
23
  annotations(
27
- title: TITLE,
28
24
  read_only_hint: true,
29
25
  destructive_hint: false,
30
26
  idempotent_hint: true,
@@ -9,10 +9,7 @@ module CF
9
9
  class GetTopic < ::MCP::Tool
10
10
  extend ResponseHelpers
11
11
 
12
- TITLE = "Get Topic"
13
-
14
12
  tool_name "get_topic"
15
- title TITLE
16
13
  description "Get the full content of a Cute Framework topic guide document"
17
14
 
18
15
  input_schema(
@@ -24,7 +21,6 @@ module CF
24
21
  )
25
22
 
26
23
  annotations(
27
- title: TITLE,
28
24
  read_only_hint: true,
29
25
  destructive_hint: false,
30
26
  idempotent_hint: true,
@@ -9,10 +9,7 @@ module CF
9
9
  class ListCategory < ::MCP::Tool
10
10
  extend ResponseHelpers
11
11
 
12
- TITLE = "List Category"
13
-
14
12
  tool_name "list_category"
15
- title TITLE
16
13
  description "List all items in a specific category, or list all available categories"
17
14
 
18
15
  input_schema(
@@ -24,7 +21,6 @@ module CF
24
21
  )
25
22
 
26
23
  annotations(
27
- title: TITLE,
28
24
  read_only_hint: true,
29
25
  destructive_hint: false,
30
26
  idempotent_hint: true,
@@ -9,10 +9,7 @@ module CF
9
9
  class ListTopics < ::MCP::Tool
10
10
  extend ResponseHelpers
11
11
 
12
- TITLE = "List Topics"
13
-
14
12
  tool_name "list_topics"
15
- title TITLE
16
13
  description "List all Cute Framework topic guides, optionally filtered by category or in recommended reading order"
17
14
 
18
15
  input_schema(
@@ -24,7 +21,6 @@ module CF
24
21
  )
25
22
 
26
23
  annotations(
27
- title: TITLE,
28
24
  read_only_hint: true,
29
25
  destructive_hint: false,
30
26
  idempotent_hint: true,
@@ -9,10 +9,7 @@ module CF
9
9
  class MemberSearch < ::MCP::Tool
10
10
  extend ResponseHelpers
11
11
 
12
- TITLE = "Member Search"
13
-
14
12
  tool_name "member_search"
15
- title TITLE
16
13
  description "Search Cute Framework structs by member name or type"
17
14
 
18
15
  input_schema(
@@ -25,7 +22,6 @@ module CF
25
22
  )
26
23
 
27
24
  annotations(
28
- title: TITLE,
29
25
  read_only_hint: true,
30
26
  destructive_hint: false,
31
27
  idempotent_hint: true,
@@ -9,10 +9,7 @@ module CF
9
9
  class ParameterSearch < ::MCP::Tool
10
10
  extend ResponseHelpers
11
11
 
12
- TITLE = "Parameter Search"
13
-
14
12
  tool_name "parameter_search"
15
- title TITLE
16
13
  description "Find Cute Framework functions by parameter or return type"
17
14
 
18
15
  input_schema(
@@ -29,7 +26,6 @@ module CF
29
26
  )
30
27
 
31
28
  annotations(
32
- title: TITLE,
33
29
  read_only_hint: true,
34
30
  destructive_hint: false,
35
31
  idempotent_hint: true,
@@ -11,10 +11,7 @@ module CF
11
11
  extend ResponseHelpers
12
12
  extend SearchResultFormatter
13
13
 
14
- TITLE = "Search"
15
-
16
14
  tool_name "search"
17
- title TITLE
18
15
  description "Search Cute Framework documentation across all types (functions, structs, enums, topics)"
19
16
 
20
17
  input_schema(
@@ -29,7 +26,6 @@ module CF
29
26
  )
30
27
 
31
28
  annotations(
32
- title: TITLE,
33
29
  read_only_hint: true,
34
30
  destructive_hint: false,
35
31
  idempotent_hint: true,
@@ -2,6 +2,6 @@
2
2
 
3
3
  module CF
4
4
  module MCP
5
- VERSION = "0.17.0"
5
+ VERSION = "0.18.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cf-mcp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Usewicz
@@ -9,6 +9,20 @@ bindir: exe
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: listen
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '3.10'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '3.10'
12
26
  - !ruby/object:Gem::Dependency
13
27
  name: mcp
14
28
  requirement: !ruby/object:Gem::Requirement
@@ -85,6 +99,7 @@ email:
85
99
  - piotr@layer22.com
86
100
  executables:
87
101
  - cf-mcp
102
+ - cf-mcp-wrapper
88
103
  extensions: []
89
104
  extra_rdoc_files: []
90
105
  files:
@@ -94,7 +109,9 @@ files:
94
109
  - README.md
95
110
  - Rakefile
96
111
  - config.ru
112
+ - config/puma.rb
97
113
  - exe/cf-mcp
114
+ - exe/cf-mcp-wrapper
98
115
  - lib/cf/mcp.rb
99
116
  - lib/cf/mcp/cli.rb
100
117
  - lib/cf/mcp/downloader.rb
@@ -153,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
170
  - !ruby/object:Gem::Version
154
171
  version: '0'
155
172
  requirements: []
156
- rubygems_version: 4.0.6
173
+ rubygems_version: 4.0.3
157
174
  specification_version: 4
158
175
  summary: MCP server providing documentation tools for Cute Framework
159
176
  test_files: []