Skip to content

Commit 9e117fb

Browse files
roomi-fieldsclaude
andcommitted
smithery: add MCPB bundle manifest + smithery.yaml
Publishes the osc-bridge MCP server to the Smithery registry as a stdio bundle (npx -y @roomi-fields/osc-bridge mcp). mcpb/manifest.json declares the 5 tools and a default_target config option; smithery.yaml gives the stdio launch command. The built *.mcpb is gitignored. Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 4031a18 commit 9e117fb

4 files changed

Lines changed: 124 additions & 0 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,6 @@ npm/*.tgz
3939

4040
# mcp-publisher auth token caches — never commit
4141
.mcpregistry_*
42+
43+
# Smithery MCPB bundle — built from mcpb/ on demand, not source
44+
*.mcpb

mcpb/icon.png

14.8 KB
Loading

mcpb/manifest.json

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
{
2+
"manifest_version": "0.3",
3+
"name": "osc-bridge",
4+
"display_name": "osc-bridge",
5+
"version": "0.10.0",
6+
"description": "OSC ↔ MIDI/SysEx bridge for 849 synths and DAWs — a MIDI MCP and OSC MCP.",
7+
"long_description": "osc-bridge is a declarative bridge between OSC and the music world: 849 hardware synthesizers over MIDI/SysEx, plus music software over OSC (Ableton, Bitwig, Reaper, Sonic Pi, SuperCollider, Pure Data, TouchDesigner, VCV Rack). Its MCP server exposes the whole catalogue to an LLM — list devices, read a device's named OSC surface, send OSC to synths and DAWs, and check a running bridge's status. Both a MIDI MCP (hardware over MIDI/SysEx) and an OSC MCP (DAWs and live-coding environments).",
8+
"author": {
9+
"name": "roomi-fields",
10+
"url": "https://github.com/roomi-fields"
11+
},
12+
"repository": {
13+
"type": "git",
14+
"url": "https://github.com/roomi-fields/osc-bridge.git"
15+
},
16+
"homepage": "https://roomi-fields.github.io/osc-bridge/",
17+
"documentation": "https://github.com/roomi-fields/osc-bridge/blob/main/docs/MCP.md",
18+
"support": "https://github.com/roomi-fields/osc-bridge/issues",
19+
"icon": "icon.png",
20+
"keywords": [
21+
"mcp",
22+
"midi",
23+
"osc",
24+
"midi mcp",
25+
"osc mcp",
26+
"synthesizer",
27+
"ableton",
28+
"bitwig",
29+
"reaper",
30+
"sonic pi",
31+
"supercollider",
32+
"daw",
33+
"live coding"
34+
],
35+
"license": "GPL-3.0-or-later",
36+
"compatibility": {
37+
"platforms": ["darwin", "win32", "linux"],
38+
"runtimes": { "node": ">=18.0.0" }
39+
},
40+
"server": {
41+
"type": "node",
42+
"entry_point": "bin/osc-bridge.js",
43+
"mcp_config": {
44+
"command": "npx",
45+
"args": ["-y", "@roomi-fields/osc-bridge", "mcp"],
46+
"env": {}
47+
}
48+
},
49+
"tools_generated": false,
50+
"user_config": {
51+
"default_target": {
52+
"type": "string",
53+
"title": "Default OSC target",
54+
"description": "host:port that the send / get_status tools use when no target argument is given. Defaults to 127.0.0.1:7777 — the standard `osc-bridge run` bind.",
55+
"required": false,
56+
"default": "127.0.0.1:7777"
57+
}
58+
},
59+
"tools": [
60+
{
61+
"name": "list_devices",
62+
"description": "Enumerate every device driver — name, vendor, slug, kind (hardware/software), and source tier. Use this first to discover the catalogue.",
63+
"inputSchema": { "type": "object", "properties": {} }
64+
},
65+
{
66+
"name": "get_device_docs",
67+
"description": "Fetch the markdown companion guide for one device, by slug (the device's OSC prefix without the leading slash, e.g. 'ableton').",
68+
"inputSchema": {
69+
"type": "object",
70+
"properties": { "slug": { "type": "string", "description": "Device slug, e.g. 'ableton' or 'minilab3'" } },
71+
"required": ["slug"]
72+
}
73+
},
74+
{
75+
"name": "list_routes",
76+
"description": "Return the OSC routes a device exposes: declarative commands, CC/NRPN params, SysEx params, and reply patterns.",
77+
"inputSchema": {
78+
"type": "object",
79+
"properties": { "slug": { "type": "string", "description": "Device slug, e.g. 'minilab3'" } },
80+
"required": ["slug"]
81+
}
82+
},
83+
{
84+
"name": "send",
85+
"description": "Send a single OSC message (typed args: int, float, string, bool) to a running osc-bridge instance — drive synths and DAWs.",
86+
"inputSchema": {
87+
"type": "object",
88+
"properties": {
89+
"addr": { "type": "string", "description": "OSC address, e.g. /ableton/transport/play" },
90+
"args": { "type": "array", "description": "Typed OSC args (int / float / string / bool)" },
91+
"target": { "type": "string", "description": "Optional host:port override" }
92+
},
93+
"required": ["addr"]
94+
}
95+
},
96+
{
97+
"name": "get_status",
98+
"description": "Send /bridge/status to a running osc-bridge and report the replies received within 500 ms.",
99+
"inputSchema": {
100+
"type": "object",
101+
"properties": { "target": { "type": "string", "description": "host:port to query, defaults to the configured default target" } }
102+
}
103+
}
104+
]
105+
}

smithery.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Smithery configuration — https://smithery.ai/docs/config#smitheryyaml
2+
#
3+
# Lets Smithery (smithery.ai) discover and launch the osc-bridge MCP server
4+
# as a local stdio process. The server is the `mcp` subcommand of the
5+
# osc-bridge CLI, run straight from npm — no launch-time config required.
6+
7+
startCommand:
8+
type: stdio
9+
configSchema:
10+
# JSON Schema for the MCP's configuration options.
11+
type: object
12+
properties: {}
13+
commandFunction:
14+
# Produces the CLI command to start the MCP on stdio.
15+
|-
16+
(config) => ({ command: 'npx', args: ['-y', '@roomi-fields/osc-bridge', 'mcp'], env: {} })

0 commit comments

Comments
 (0)