Improve redMCP server operations

This commit is contained in:
Jason Thistlethwaite
2026-04-25 02:46:58 +00:00
parent 05c1a4bc97
commit d54319a5bb
14 changed files with 420 additions and 24 deletions
+19 -3
View File
@@ -32,7 +32,7 @@ environment. Before risky edits, archive the current plugin directories in
- Run `validate_helpdesk_outbox_worker.py` after outbox or worker changes,
then choose the external index target.
## 2026-04-25 - redMCP Native Search And Filtering
## 2026-04-25 - redMCP Native Search, Filtering, And MCP Operations
- Touched areas:
- `redMCP`
@@ -40,22 +40,30 @@ environment. Before risky edits, archive the current plugin directories in
- Make Redmine's existing issue filtering and built-in text search explicit
before adding external search infrastructure.
- Make redMCP runnable as an MCP server for live client testing.
- Make the network MCP server easier to debug and restart during local tests.
- Behavior changed:
- Added `filterIssues()` as a named alias for Redmine's `/issues.json`
filtering.
- Added `search()` for Redmine's built-in `/search.json` endpoint.
- Added `searchIssues()` for issue-only Redmine text search.
- Added `projects()`, `listProjects()`, and `project()` for Redmine's
`/projects.json` APIs.
- Added a shared MCP dispatcher and transport-specific server wrappers.
- Added `redMCP/bin/redmcp-server.php` for stdio MCP clients.
- Added `redMCP/bin/redmcp-http-server.php` for bearer-token-protected
Streamable HTTP network clients on `/mcp`.
- Both transports expose Redmine filtering/search, issue CRUD,
- Added PID/status/stop handling to the HTTP server.
- Added optional full-argument JSONL debug logging via `--debug-log` or
`MCP_DEBUG_LOG`.
- Added `redMCP/bin/generate-bearer-token.php`.
- Both transports expose Redmine project reads, filtering/search, issue CRUD,
Helpdesk-aware reads, and explicit Helpdesk response tools.
- Registered both MCP server commands as Composer `bin` entries.
- Registered all MCP helper commands as Composer `bin` entries.
- LAN test result:
- `php -l redMCP/app/RedmineClient.php` passed.
- `php -l redMCP/bin/redmcp-server.php` passed.
- `php -l redMCP/bin/redmcp-http-server.php` passed.
- `php -l redMCP/bin/generate-bearer-token.php` passed.
- `composer validate --working-dir=redMCP` passed; Composer emitted PHP 8.5
deprecation notices from system Composer dependencies.
- Live stdio MCP framing test passed for `initialize`, `tools/list`, and
@@ -64,6 +72,14 @@ environment. Before risky edits, archive the current plugin directories in
`tools/list`, and `tools/call` using `redmine_search_issues`.
- `redmcp-http-server.php` refused to start without `MCP_SERVER_TOKEN`.
- Unauthenticated `/mcp` returned `401`; wrong path returned `404`.
- HTTP PID helpers reported stopped/running states, rejected a duplicate
start, stopped the live process, detected a stale PID file, and started
with `--force`.
- Debug logging wrote JSONL records with full project-tool arguments and did
not include the bearer token, `Authorization`, or Redmine API key.
- Token generation passed default, `--bytes 48`, and `--env-line` modes.
- `redmine_list_projects` returned three projects from 117 total.
- `redmine_get_project` returned `fud-helpdesk` by identifier and by id 117.
- The live MCP tool calls returned issue search results from seven total for
`redMCP-smoke`.