Skip to content

fix up for latest go-buttplug and intiface central - #3

Open
diamondburned wants to merge 2 commits into
ConAcademy:mainfrom
diamondburned:main
Open

fix up for latest go-buttplug and intiface central#3
diamondburned wants to merge 2 commits into
ConAcademy:mainfrom
diamondburned:main

Conversation

@diamondburned

Copy link
Copy Markdown

this PR consists of 2 commits:

  • fix up for go-buttplug v0.0.8 changes (also meant that i rewrote a lot of the code, sorry!)
  • add --no-resources for opencode/crush

Important

You need GOEXPERIMENT=jsonv2 to build this until Go 1.26 is released and encoding/json/v2 is officially added. This is an upstream decision coming from go-buttplug. Sorry!

test result with Intiface Central 2.6.7+33 and the opencode MCP config below:

image
opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "buttplug-mcp": {
      "type": "local",
      "command": [
        "./bin/buttplug-mcp", "--ws-port", "12345", "--ws-host", "<REDACTED>", "--no-resources"
      ]
    }
  }
}

have fun!! ❤️

P/S: next version of go-buttplug that uses schema v4 should be way easier to use. right now that's still in Intiface beta, so i don't want to push for it yet.

@diamondburned

Copy link
Copy Markdown
Author

ssorry, converting this to a draft for now until i made sure that the controller stops when it needs to stop.

@neomantra

neomantra commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

Thanks for these contributions! I appreciate you are advancing go-buttplug and keeping track with the upstream activity. I thought I might need to go to Rust for that.

With respect to —no-resource… I originally made this when MCP was new, in its March 2025 upswing. It seems that most of MCP-land has ignored the prompt/resource aspect and leaned on the tool calling. Most things that can be resources are accessed via tool calls. (That probably has some feedback loop where the models are better at tool calling than resource calling.)

It’s beyond the scope of the PR but I have found tool description to be the most critical aspect of the MCP server.

Perhaps it is better to have solely tool-based access … then focus on tool descriptions and more high-level tools.

@diamondburned

Copy link
Copy Markdown
Author

Perhaps it is better to have solely tool-based access … then focus on tool descriptions and more high-level tools.

i'm fine with that! i was originally hesitant since crush, the app that i originally use, kept asking for permission to use tools, but it seems like opencode just uses them without asking, which is great!

@diamondburned

diamondburned commented Dec 3, 2025

Copy link
Copy Markdown
Author

actually, a fun idea would be to allow custom overriding of the tool descriptions to better suggest how the agent should use them. as far as high-level tools go, i also had the idea of making a simple expression language to describe vibration patterns that the agent can use to generate.

also converted existing resources into tools calls for opencode/crush
support.

see anomalyco/opencode#806.
@diamondburned

Copy link
Copy Markdown
Author

pattern works!

image

opencode doesn't display the actual pattern array, which mmm is not ideal? the patterns definitely work (i can feel it), but maybe i should make it a string instead, something like:

0.5+0.2s; 0.0+0.2s; 0.5+0.2s; 0.0+2s

this looks easy enough to read.

@diamondburned

diamondburned commented Dec 12, 2025

Copy link
Copy Markdown
Author

this is great, actually!

image

(i swear it only took me a day to implement this, i got really sidetracked)

@diamondburned
diamondburned marked this pull request as ready for review December 12, 2025 08:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants