Module: OmnifocusMcp

Defined in:
lib/omnifocus_mcp/json_rpc_compat.rb,
lib/omnifocus_mcp/mcp.rb,
lib/omnifocus_mcp/config.rb,
lib/omnifocus_mcp/logger.rb,
lib/omnifocus_mcp/result.rb,
lib/omnifocus_mcp/parsers.rb,
lib/omnifocus_mcp/version.rb,
lib/omnifocus_mcp/utils/blank.rb,
lib/omnifocus_mcp/tools/params.rb,
lib/omnifocus_mcp/infrastructure.rb,
lib/omnifocus_mcp/resources/base.rb,
lib/omnifocus_mcp/tools/messages.rb,
lib/omnifocus_mcp/utils/iso_date.rb,
lib/omnifocus_mcp/tools/generators.rb,
lib/omnifocus_mcp/tools/operations.rb,
lib/omnifocus_mcp/tools/presenters.rb,
lib/omnifocus_mcp/utils/date_filter.rb,
lib/omnifocus_mcp/tools/batch_report.rb,
lib/omnifocus_mcp/utils/apple_script.rb,
lib/omnifocus_mcp/tools/database_stats.rb,
lib/omnifocus_mcp/tools/query_statuses.rb,
lib/omnifocus_mcp/utils/date_formatting.rb,
lib/omnifocus_mcp/utils/script_execution.rb,
lib/omnifocus_mcp/infrastructure/js_embed.rb,
lib/omnifocus_mcp/resources/inbox_resource.rb,
lib/omnifocus_mcp/resources/stats_resource.rb,
lib/omnifocus_mcp/resources/today_resource.rb,
lib/omnifocus_mcp/tools/messages/edit_item.rb,
lib/omnifocus_mcp/tools/messages/list_tools.rb,
lib/omnifocus_mcp/tools/params/mcp_boundary.rb,
lib/omnifocus_mcp/resources/flagged_resource.rb,
lib/omnifocus_mcp/resources/project_resource.rb,
lib/omnifocus_mcp/tools/generators/edit_item.rb,
lib/omnifocus_mcp/tools/generators/list_tags.rb,
lib/omnifocus_mcp/tools/messages/add_project.rb,
lib/omnifocus_mcp/tools/messages/remove_item.rb,
lib/omnifocus_mcp/tools/operations/edit_item.rb,
lib/omnifocus_mcp/tools/operations/list_tags.rb,
lib/omnifocus_mcp/tools/presenters/list_tags.rb,
lib/omnifocus_mcp/utils/apple_script_helpers.rb,
lib/omnifocus_mcp/infrastructure/apple_script.rb,
lib/omnifocus_mcp/utils/apple_script_envelope.rb,
lib/omnifocus_mcp/infrastructure/script_runner.rb,
lib/omnifocus_mcp/tools/generators/add_project.rb,
lib/omnifocus_mcp/tools/generators/remove_item.rb,
lib/omnifocus_mcp/tools/operations/add_project.rb,
lib/omnifocus_mcp/tools/operations/remove_item.rb,
lib/omnifocus_mcp/tools/presenters/query_reply.rb,
lib/omnifocus_mcp/parsers/apple_script_envelope.rb,
lib/omnifocus_mcp/tools/presenters/batch_report.rb,
lib/omnifocus_mcp/resources/perspective_resource.rb,
lib/omnifocus_mcp/tools/definitions/mcp_envelope.rb,
lib/omnifocus_mcp/tools/presenters/query_results.rb,
lib/omnifocus_mcp/tools/generators/database_stats.rb,
lib/omnifocus_mcp/tools/operations/database_stats.rb,
lib/omnifocus_mcp/tools/query_omnifocus_formatter.rb,
lib/omnifocus_mcp/tools/definitions/date_formatter.rb,
lib/omnifocus_mcp/tools/definitions/edit_item_tool.rb,
lib/omnifocus_mcp/tools/definitions/key_normalizer.rb,
lib/omnifocus_mcp/tools/definitions/list_tags_tool.rb,
lib/omnifocus_mcp/tools/generators/query_omnifocus.rb,
lib/omnifocus_mcp/tools/operations/batch_add_items.rb,
lib/omnifocus_mcp/tools/operations/query_omnifocus.rb,
lib/omnifocus_mcp/tools/generators/perspective_view.rb,
lib/omnifocus_mcp/tools/messages/add_omnifocus_task.rb,
lib/omnifocus_mcp/tools/messages/batch_remove_items.rb,
lib/omnifocus_mcp/tools/presenters/perspective_view.rb,
lib/omnifocus_mcp/tools/definitions/add_project_tool.rb,
lib/omnifocus_mcp/tools/definitions/remove_item_tool.rb,
lib/omnifocus_mcp/tools/generators/list_perspectives.rb,
lib/omnifocus_mcp/tools/operations/list_perspectives.rb,
lib/omnifocus_mcp/tools/presenters/list_perspectives.rb,
lib/omnifocus_mcp/tools/definitions/operation_factory.rb,
lib/omnifocus_mcp/tools/generators/add_omnifocus_task.rb,
lib/omnifocus_mcp/tools/operations/add_omnifocus_task.rb,
lib/omnifocus_mcp/tools/operations/batch_remove_items.rb,
lib/omnifocus_mcp/tools/operations/get_perspective_view.rb,
lib/omnifocus_mcp/tools/definitions/batch_add_items_tool.rb,
lib/omnifocus_mcp/tools/definitions/query_omnifocus_tool.rb,
lib/omnifocus_mcp/tools/generators/query_omnifocus_debug.rb,
lib/omnifocus_mcp/tools/operations/query_omnifocus_debug.rb,
lib/omnifocus_mcp/infrastructure/apple_script_date_builder.rb,
lib/omnifocus_mcp/tools/definitions/list_perspectives_tool.rb,
lib/omnifocus_mcp/tools/operations/batch_add_items/planner.rb,
lib/omnifocus_mcp/tools/definitions/add_omnifocus_task_tool.rb,
lib/omnifocus_mcp/tools/definitions/batch_remove_items_tool.rb,
lib/omnifocus_mcp/tools/definitions/get_perspective_view_tool.rb,
lib/omnifocus_mcp/tools/operations/batch_add_items/batch_item.rb,
lib/omnifocus_mcp/tools/operations/batch_add_items/bulk_executor.rb,
lib/omnifocus_mcp/tools/operations/batch_add_items/param_builder.rb,
lib/omnifocus_mcp/tools/operations/batch_add_items/cycle_detector.rb

Overview

Cursor’s MCP client rejects JSON-RPC error responses with ‘“id”: null` (fast-mcp 1.6 emits null when the request id is unknown). Coerce those to 0 and ignore blank stdin lines so empty writes do not produce invalid responses.

Defined Under Namespace

Modules: Config, Infrastructure, JsonRpcCompat, Mcp, Parsers, Resources, Tools, Utils Classes: Result

Constant Summary collapse

VERSION =
"1.0.0"

Class Method Summary collapse

Class Method Details

.build_loggerObject



22
23
24
# File 'lib/omnifocus_mcp/logger.rb', line 22

def build_logger
  Logger.new($stderr, progname: "omnifocus_mcp").tap { |log| log.level = Logger::WARN }
end

.loggerObject

Application-wide logger writing to the current ‘$stderr`.

Rebuilds when ‘$stderr` changes so test helpers that redirect stderr (RSpec’s ‘output.to_stderr`, silencing helpers) still capture log lines.



12
13
14
15
# File 'lib/omnifocus_mcp/logger.rb', line 12

def logger
  reset_logger_if_stderr_changed
  @logger ||= build_logger
end

.reset_logger!Object



17
18
19
20
# File 'lib/omnifocus_mcp/logger.rb', line 17

def reset_logger!
  @logger = nil
  @logger_stderr = nil
end

.reset_logger_if_stderr_changedObject



27
28
29
30
31
32
# File 'lib/omnifocus_mcp/logger.rb', line 27

def reset_logger_if_stderr_changed
  return if @logger_stderr.equal?($stderr)

  @logger = nil
  @logger_stderr = $stderr
end