```
refactor: rename project references from tmux-mcp to voice-dev-mcp Update internal references, package scripts, binary name, service identifiers, and tool descriptions to reflect the voice-dev branding. Changes default HTTP port from 3000 to 6767. ```
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@voice-dev/mcp-server",
|
||||
"version": "0.3.0",
|
||||
"description": "MCP Server for interfacing with tmux sessions",
|
||||
"description": "MCP Server for voice-controlled terminal development",
|
||||
"type": "module",
|
||||
"main": "build/index.js",
|
||||
"scripts": {
|
||||
@@ -14,7 +14,7 @@
|
||||
"release": "npm run build && npm publish"
|
||||
},
|
||||
"bin": {
|
||||
"tmux-mcp": "build/index.js"
|
||||
"voice-dev-mcp": "build/index.js"
|
||||
},
|
||||
"files": [
|
||||
"build"
|
||||
|
||||
@@ -34,7 +34,7 @@ export function startHttpServer({ port, password, server }: HttpServerOptions):
|
||||
app.get('/', (req: Request, res: Response) => {
|
||||
res.json({
|
||||
status: 'ok',
|
||||
service: 'tmux-mcp',
|
||||
service: 'voice-dev-mcp',
|
||||
transport: 'streamable-http'
|
||||
});
|
||||
});
|
||||
|
||||
@@ -13,7 +13,7 @@ import { startHttpServer } from "./http-server.js";
|
||||
// Create MCP server
|
||||
const server = new McpServer(
|
||||
{
|
||||
name: "tmux-mcp",
|
||||
name: "voice-dev-mcp",
|
||||
version: "0.3.0",
|
||||
},
|
||||
{
|
||||
@@ -30,10 +30,10 @@ const server = new McpServer(
|
||||
}
|
||||
);
|
||||
|
||||
// List tmux hierarchy - Tool
|
||||
// List hierarchy - Tool
|
||||
server.tool(
|
||||
"list",
|
||||
"List tmux sessions, windows, and panes. Use scope='all' for full hierarchy, or drill down with specific scopes. Examples: scope='all' returns nested tree, scope='sessions' returns all sessions, scope='session' with target='$0' returns windows in that session, scope='window' with target='@1' returns panes in that window.",
|
||||
"List sessions, windows, and panes. Use scope='all' for full hierarchy, or drill down with specific scopes. Examples: scope='all' returns nested tree, scope='sessions' returns all sessions, scope='session' with target='$0' returns windows in that session, scope='window' with target='@1' returns panes in that window.",
|
||||
{
|
||||
scope: z
|
||||
.enum(["all", "sessions", "session", "window", "pane"])
|
||||
@@ -75,9 +75,9 @@ server.tool(
|
||||
// Capture pane content - Tool
|
||||
server.tool(
|
||||
"capture-pane",
|
||||
"Capture content from a tmux pane with configurable lines count and optional color preservation. Optionally wait before capturing to allow commands to complete.",
|
||||
"Capture content from a pane with configurable lines count and optional color preservation. Optionally wait before capturing to allow commands to complete.",
|
||||
{
|
||||
paneId: z.string().describe("ID of the tmux pane"),
|
||||
paneId: z.string().describe("ID of the pane"),
|
||||
lines: z.string().optional().describe("Number of lines to capture"),
|
||||
colors: z
|
||||
.boolean()
|
||||
@@ -132,9 +132,9 @@ server.tool(
|
||||
// Create new session - Tool
|
||||
server.tool(
|
||||
"create-session",
|
||||
"Create a new tmux session",
|
||||
"Create a new session",
|
||||
{
|
||||
name: z.string().describe("Name for the new tmux session"),
|
||||
name: z.string().describe("Name for the new session"),
|
||||
},
|
||||
async ({ name }) => {
|
||||
try {
|
||||
@@ -166,9 +166,9 @@ server.tool(
|
||||
// Create new window - Tool
|
||||
server.tool(
|
||||
"create-window",
|
||||
"Create a new window in a tmux session. Returns the window ID and the default pane ID. Optionally execute a command in the new window immediately after creation - the command can use any bash operators (&&, ||, |, ;, etc.).",
|
||||
"Create a new window in a session. Returns the window ID and the default pane ID. Optionally execute a command in the new window immediately after creation - the command can use any bash operators (&&, ||, |, ;, etc.).",
|
||||
{
|
||||
sessionId: z.string().describe("ID of the tmux session"),
|
||||
sessionId: z.string().describe("ID of the session"),
|
||||
name: z.string().describe("Name for the new window"),
|
||||
command: z
|
||||
.string()
|
||||
@@ -237,9 +237,9 @@ server.tool(
|
||||
// Rename window - Tool
|
||||
server.tool(
|
||||
"rename-window",
|
||||
"Rename a tmux window by its window ID (e.g., @380)",
|
||||
"Rename a window by its window ID (e.g., @380)",
|
||||
{
|
||||
windowId: z.string().describe("ID of the tmux window (e.g., '@380')"),
|
||||
windowId: z.string().describe("ID of the window (e.g., '@380')"),
|
||||
name: z.string().describe("New name for the window"),
|
||||
},
|
||||
async ({ windowId, name }) => {
|
||||
@@ -267,10 +267,10 @@ server.tool(
|
||||
}
|
||||
);
|
||||
|
||||
// Kill tmux resources - Tool
|
||||
// Kill resources - Tool
|
||||
server.tool(
|
||||
"kill",
|
||||
"Kill a tmux session, window, or pane. Examples: kill(scope='session', target='$0'), kill(scope='window', target='@1'), kill(scope='pane', target='%2'). No 'all' scope for safety.",
|
||||
"Kill a session, window, or pane. Examples: kill(scope='session', target='$0'), kill(scope='window', target='@1'), kill(scope='pane', target='%2'). No 'all' scope for safety.",
|
||||
{
|
||||
scope: z
|
||||
.enum(["session", "window", "pane"])
|
||||
@@ -311,9 +311,9 @@ server.tool(
|
||||
// Split pane - Tool
|
||||
server.tool(
|
||||
"split-pane",
|
||||
"Split a tmux pane horizontally or vertically",
|
||||
"Split a pane horizontally or vertically",
|
||||
{
|
||||
paneId: z.string().describe("ID of the tmux pane to split"),
|
||||
paneId: z.string().describe("ID of the pane to split"),
|
||||
direction: z
|
||||
.enum(["horizontal", "vertical"])
|
||||
.optional()
|
||||
@@ -365,9 +365,9 @@ server.tool(
|
||||
// Execute shell command - Tool
|
||||
server.tool(
|
||||
"execute-shell-command",
|
||||
"Execute a shell command in a tmux pane synchronously and return results immediately. Waits for command completion (default 30s timeout). Returns output, exit code, and status. Use for quick commands (ls, grep, npm test, etc.). Avoid heredoc syntax (cat << EOF) and multi-line constructs. IMPORTANT: For long-running commands (npm start, servers, watch processes), use send-text with pressEnter=true instead, then monitor output with capture-pane. For interactive apps or special keys, use send-keys.",
|
||||
"Execute a shell command in a pane synchronously and return results immediately. Waits for command completion (default 30s timeout). Returns output, exit code, and status. Use for quick commands (ls, grep, npm test, etc.). Avoid heredoc syntax (cat << EOF) and multi-line constructs. IMPORTANT: For long-running commands (npm start, servers, watch processes), use send-text with pressEnter=true instead, then monitor output with capture-pane. For interactive apps or special keys, use send-keys.",
|
||||
{
|
||||
paneId: z.string().describe("ID of the tmux pane"),
|
||||
paneId: z.string().describe("ID of the pane"),
|
||||
command: z.string().describe("Shell command to execute"),
|
||||
timeout: z
|
||||
.number()
|
||||
@@ -412,9 +412,9 @@ server.tool(
|
||||
// Send keys - Tool
|
||||
server.tool(
|
||||
"send-keys",
|
||||
"Send special keys or key combinations to a tmux pane. Use for TUI navigation and control sequences. Examples: 'Up', 'Down', 'Enter', 'Escape', 'C-c' (Ctrl+C), 'M-x' (Alt+X), 'C-b' (tmux prefix). For typing regular text, use send-text instead. Supports repeating key presses and optionally capturing output after sending keys.",
|
||||
"Send special keys or key combinations to a pane. Use for TUI navigation and control sequences. Examples: 'Up', 'Down', 'Enter', 'Escape', 'C-c' (Ctrl+C), 'M-x' (Alt+X). For typing regular text, use send-text instead. Supports repeating key presses and optionally capturing output after sending keys.",
|
||||
{
|
||||
paneId: z.string().describe("ID of the tmux pane"),
|
||||
paneId: z.string().describe("ID of the pane"),
|
||||
keys: z
|
||||
.string()
|
||||
.describe(
|
||||
@@ -490,9 +490,9 @@ server.tool(
|
||||
// Send text - Tool
|
||||
server.tool(
|
||||
"send-text",
|
||||
"Type text into a tmux pane. This is the PRIMARY way to execute shell commands with bash operators (&&, ||, |, ;, etc.) - set pressEnter=true to run the command. Also use for interactive applications, REPLs, forms, and text entry. For special keys or control sequences, use send-keys instead.",
|
||||
"Type text into a pane. This is the PRIMARY way to execute shell commands with bash operators (&&, ||, |, ;, etc.) - set pressEnter=true to run the command. Also use for interactive applications, REPLs, forms, and text entry. For special keys or control sequences, use send-keys instead.",
|
||||
{
|
||||
paneId: z.string().describe("ID of the tmux pane"),
|
||||
paneId: z.string().describe("ID of the pane"),
|
||||
text: z
|
||||
.string()
|
||||
.describe(
|
||||
@@ -566,8 +566,8 @@ server.tool(
|
||||
}
|
||||
);
|
||||
|
||||
// Expose tmux session list as a resource
|
||||
server.resource("Tmux Sessions", "tmux://sessions", async () => {
|
||||
// Expose session list as a resource
|
||||
server.resource("Sessions", "tmux://sessions", async () => {
|
||||
try {
|
||||
const sessions = await tmux.listSessions();
|
||||
return {
|
||||
@@ -592,7 +592,7 @@ server.resource("Tmux Sessions", "tmux://sessions", async () => {
|
||||
contents: [
|
||||
{
|
||||
uri: "tmux://sessions",
|
||||
text: `Error listing tmux sessions: ${error}`,
|
||||
text: `Error listing sessions: ${error}`,
|
||||
},
|
||||
],
|
||||
};
|
||||
@@ -601,7 +601,7 @@ server.resource("Tmux Sessions", "tmux://sessions", async () => {
|
||||
|
||||
// Expose pane content as a resource
|
||||
server.resource(
|
||||
"Tmux Pane Content",
|
||||
"Pane Content",
|
||||
new ResourceTemplate("tmux://pane/{paneId}", {
|
||||
list: async () => {
|
||||
try {
|
||||
@@ -702,7 +702,7 @@ async function main() {
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const port = parseInt(values.port || process.env.PORT || "3000", 10);
|
||||
const port = Number(values.port || process.env.PORT || "6767");
|
||||
|
||||
// Start HTTP server
|
||||
startHttpServer({
|
||||
|
||||
Reference in New Issue
Block a user