Skip to content

Instantly share code, notes, and snippets.

@dkam
Created October 21, 2025 10:01
Show Gist options
  • Save dkam/fdfbc8cdc3ca924796b85a8d5492e71d to your computer and use it in GitHub Desktop.
Save dkam/fdfbc8cdc3ca924796b85a8d5492e71d to your computer and use it in GitHub Desktop.
GLM 4.6 adds resolve / ignore / open to Splat's MCP
> Can the MCP endpoint mark a Issue as resolved / ignored / open?
⏺ Looking at the current MCP implementation in Splat, the MCP endpoint only provides read-only access to error
tracking and performance data. The available tools are:
1. list_recent_issues - List recent issues
2. search_issues - Search issues
3. get_issue - Get detailed issue information
4. get_issue_events - List recent events for an issue
5. get_event - Get full event details
6. get_transaction_stats - Performance overview
7. search_slow_transactions - Find slow requests
8. get_transaction - Get detailed transaction breakdown
Currently, the MCP endpoint cannot modify issues - it can only query data.
However, it would be straightforward to add write capabilities to the MCP endpoint. Here's how you could extend
it:
⏺ Read(app/controllers/mcp/mcp_controller.rb)
⎿ Read 1225 lines
⏺ To add issue management capabilities to the MCP endpoint, you would need to add new tools. Here's how you could
extend it:
Add these new tools to the tools_list method:
{
name: "resolve_issue",
description: "Mark an issue as resolved",
inputSchema: {
type: "object",
properties: {
issue_id: {
type: "integer",
description: "The ID of the issue to resolve"
}
},
required: ["issue_id"]
}
},
{
name: "ignore_issue",
description: "Mark an issue as ignored (won't auto-reopen on new events)",
inputSchema: {
type: "object",
properties: {
issue_id: {
type: "integer",
description: "The ID of the issue to ignore"
}
},
required: ["issue_id"]
}
},
{
name: "reopen_issue",
description: "Reopen a resolved or ignored issue",
inputSchema: {
type: "object",
properties: {
issue_id: {
type: "integer",
description: "The ID of the issue to reopen"
}
},
required: ["issue_id"]
}
}
Add the corresponding handler methods:
def resolve_issue(args)
issue = Issue.find(args["issue_id"])
issue.resolved!
render json: {
jsonrpc: "2.0",
id: @rpc_id,
result: {
content: [{ type: "text", text: "✅ Issue ##{issue.id} marked as resolved" }]
}
}
end
def ignore_issue(args)
issue = Issue.find(args["issue_id"])
issue.ignored!
render json: {
jsonrpc: "2.0",
id: @rpc_id,
result: {
content: [{ type: "text", text: "🔕 Issue ##{issue.id} marked as ignored" }]
}
}
end
def reopen_issue(args)
issue = Issue.find(args["issue_id"])
issue.unresolved!
render json: {
jsonrpc: "2.0",
id: @rpc_id,
result: {
content: [{ type: "text", text: "🔓 Issue ##{issue.id} reopened" }]
}
}
end
Update the handle_tools_call method to include the new tools:
when "resolve_issue"
resolve_issue(arguments)
when "ignore_issue"
ignore_issue(arguments)
when "reopen_issue"
reopen_issue(arguments)
Security considerations:
- The MCP endpoint is already authenticated with MCP_AUTH_TOKEN
- These operations modify data, so ensure proper token security
- Consider adding audit logging if needed
- The existing Issue model enum already provides resolved!, ignored!, and unresolved! methods
This would allow Claude (or any MCP client) to manage issue status through commands like:
- "Resolve issue #123"
- "Ignore all NoMethodError issues"
- "Reopen issue #456"
The implementation follows the same pattern as existing MCP tools and integrates seamlessly with the current
authentication and error handling.
> Yeah! Lets Go!
✽ Crafting… (esc to interrupt)
⎿ Tip: Ask Claude to create a todo list when working on complex tasks to track progress and remain on track
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment