Skip to main content
Glama
JonusNattapong

oracle-tmux-mcp

oracle-tmux-mcp

MCP server that gives AI agents a live, tmux-backed messaging mesh: every agent gets its own tmux pane, and messages appear there instantly — no polling, no manual "check my messages" round trip.

Why this exists

oracle-messages (the file-backed message bus) requires the recipient to poll (peer list, peer monitor) or call sync_messages to discover new messages. This server flips that: tmux_send/tmux_broadcast push the message into the recipient's tmux pane the moment they're called, so a human (or another process) watching that pane sees it land live.

Message data is still properly managed, not just printed to a terminal: every send is recorded to a per-agent JSONL log (tmux_history queries it), and the tmux pane is just a live view of the same underlying data.

Related MCP server: mcp-ssh-interactive

Tools

  • tmux_register_agent(name) — pre-create an agent's pane (optional; send/broadcast self-provision)

  • tmux_send(from, to, body) — deliver to one agent, shows up instantly

  • tmux_broadcast(from, body) — deliver to every registered agent

  • tmux_list_agents() — roster

  • tmux_history(agent, limit?) — structured message history (the source of truth)

  • tmux_attach_info(agent) — the shell command to attach a terminal directly to that agent's pane

Requirements

  • Node 20+

  • tmux — on Windows, via WSL (wsl --install, then sudo apt install tmux inside it)

Setup

npm install
npm run build

Register with an MCP client (e.g. Claude Code)

Add to .mcp.json:

{
  "mcpServers": {
    "oracle-tmux": {
      "command": "node",
      "args": ["D:/Projects/Github/Oracle-Ecosystems/Oracle-tmux-mcp/dist/index.js"]
    }
  }
}

Env

  • ORACLE_TMUX_SESSION — tmux session name (default oracle)

  • ORACLE_TMUX_DISTRO — WSL distro name, Windows only (default Ubuntu)

  • ORACLE_TMUX_MCP_DIR — where mailbox/history files live (default ~/.oracle-tmux-mcp/mail)

  • ORACLE_TMUX_WATCH_SCRIPT — override path to scripts/watch.sh

How the live pane actually works

Each pane runs scripts/watch.sh <agent> <mailbox-file>, a small polling loop (300ms) that prints newly-appended bytes. This is deliberately not tail -F: this server runs on Windows and writes via Node's fs, while the tmux pane runs inside WSL reading the same file over the DrvFs /mnt/c/... mount. WSL2's DrvFs does not reliably fire inotify events for changes made from the Windows side, so tail -F picks up whatever's in the file at attach time but silently misses every append after that (confirmed by testing). A dumb byte-offset poll sidesteps inotify entirely and is correct regardless of which side writes.

Watch a conversation

wsl.exe -d Ubuntu -- tmux attach -t oracle    # see all agents' panes, Ctrl-b w to switch

Or use the exact command tmux_attach_info returns for one agent.

Available Tools

7 tools
tmux_attach_infoGet attach commandA

Get the shell command a human can run to attach a terminal directly to one agent's live pane.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does state this is a read-only informational tool ('get the shell command...a human can run'), which implies it doesn't mutate tmux state. However, it doesn't disclose edge cases like what happens if the agent has no pane yet, whether the command needs to be run in a specific environment, or format of the returned command. There is no contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that conveys the complete purpose with no wasted words. Every element earns its place - it identifies the action, the resource, the audience, and the mechanism (shell command) efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 1-parameter, no-output-schema tool, this is reasonably complete. However, given no annotations and zero schema description coverage, it could benefit from a bit more context - e.g., pointing to tmux_list_agents for finding valid agent IDs, or noting that this is a read-only operation distinct from execution tools. The core purpose is clear but supporting details are thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 1 parameter (agent) with 0% description coverage, meaning the description must explain the parameter's meaning. The description implies 'one agent's live pane' maps to the agent parameter, but it doesn't explicitly state that the agent value must match an already-registered agent name or explain how to discover valid values. Partial compensation for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (get) and resource (the shell command a human runs to attach a terminal to one agent's live pane). It distinguishes this tool from siblings like tmux_send and tmux_open_claude by making clear this only produces an attach command rather than executing an action. However, it doesn't explicitly contrast with sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (when you need to tell a human how to attach to an agent's pane) but provides no explicit when-to-use guidance or exclusions. It doesn't name alternatives or state when NOT to use this tool, relying on the reader to infer that this is for retrieval rather than action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tmux_broadcastBroadcast messageC

Send a message to every registered agent (except the sender). Each recipient's pane updates instantly.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
fromYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does add one useful behavior detail ('Each recipient's pane updates instantly'), which gives some real-time/push semantics. However, it does not disclose whether the sender receives delivery confirmation, whether delivery is guaranteed, error behavior, or potential side effects like message flooding—only a single minor behavioral trait for a broadcasting tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with the key behavioral trait front-loaded. No wasted words, but the second sentence ('Each recipient's pane updates instantly') could arguably be folded into a single sentence without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A 2-parameter broadcast tool with no annotations, no output schema, and 0% schema description coverage needs more. The description doesn't explain the 'from' semantics, delivery guarantees, whether the sender can be an unregistered ID, or distinguish the broadcast from tmux_send. For a messaging tool involving agents, the description is thin on operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for both parameters. It does not explain what 'from' should contain (e.g., is it the sender's name, a registered agent ID?) or the format/content constraints of 'body' beyond the schema's minLength. Both parameters' meaning is left to the agent to infer from parameter names alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (send) and resource (message to every registered agent), and distinguishes it from a point-to-point send by noting 'except the sender'. It doesn't explicitly name the sibling alternative (tmux_send), but the 'every registered agent' scope clearly separates it from a targeted send.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies broadcast use ('every registered agent') versus targeted messaging, but does not explicitly state when to prefer this over tmux_send, nor does it mention any prerequisites like needing to be registered or how agent registration works. Context is clear but exclusions/alternatives are not named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tmux_historyGet message historyA

Fetch an agent's structured message history (source of truth — the tmux pane is just a live view of the same data).

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYes
limitNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description clarifies that this is a read operation ('Fetch') and establishes the source-of-truth relationship to the tmux pane, which is useful context about data consistency. However, it doesn't disclose pagination behavior, whether the limit parameter truncates, ordering of results, or performance characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tight sentence that wastes zero words. The parenthetical clarifies the source-of-truth distinction efficiently. Every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

As a read tool with no output schema and no annotations, the description provides reasonable context about what data is returned (structured message history). However, for a 2-param tool it doesn't explain the limit's role in result ordering or pagination, and with no output schema, some return-format expectations would help. Adequate for a simple fetch operation but leaves minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. The description adds value by framing the data as 'structured message history' and establishing it as the source of truth, which helps the agent understand what the 'agent' parameter refers to. However, the description doesn't explain the 'limit' parameter semantics (ordering, truncation behavior) beyond what the schema constraints imply. With 0% coverage and 2 params, it partially compensates but leaves the limit behavior implicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Fetch'), resource ('an agent's structured message history'), and distinguishes it from the tmux pane as a live view. It identifies this as the source of truth, which differentiates it from sibling tools like tmux_send and tmux_broadcast. However, it doesn't reference sibling read tools specifically, so it's clear but not fully differentiated against the sibling set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context ('source of truth' vs 'tmux pane is just a live view'), which helps the agent know this is the canonical way to retrieve history. However, it doesn't explicitly state when to use this versus tmux_attach_info or tmux_list_agents, nor does it note any exclusions or alternatives. The context is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tmux_list_agentsList agentsA

List every agent registered in the mesh.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, but for a read-only list operation the description covers the core behavior adequately. It doesn't disclose whether this is read-only, whether it reflects live or cached state, ordering, or pagination, but a simple list operation has limited behavioral surface to disclose. Acceptable given the simple nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, zero waste. Front-loaded with the verb 'List' confirming the scope. Exactly as concise as it should be for a simple no-parameter list operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter listing tool with no output schema, the description is largely sufficient. No prerequisite setup, auth, or state dependencies are mentioned, which could matter in a mesh context, but the primary function is fully conveyed. Slight gap on return format but acceptable for an agent listing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has 0 parameters, so there is nothing to document beyond the description itself. Schema coverage is 100% trivially, and the description accurately conveys what the tool returns (registered agents in the mesh). Baseline 4 for a zero-parameter tool is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb+resource: 'List every agent registered in the mesh.' Distinguishes from siblings like register/send/broadcast which are mutation/communication tools. Could be slightly sharper about why it differs from tmux_attach_info, which likely also lists agents/attachments, but the verb+scope is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or alternatives guidance. The context signals show 0 parameters and sibling tools for discovery vs registration vs messaging. The description implies it's for discovering registered agents but doesn't state when to prefer it over tmux_attach_info or contrast with registration.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tmux_open_claudeOpen live Claude chat paneA

Spawn an interactive Claude Code session in a tmux pane as the given agent. From then on, tmux_send to that agent types the message directly into that chat — it appears on screen and Claude responds, no polling and no human input.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: the session becomes live (messages appear on screen), Claude responds automatically, no polling is needed, and no human input is required. It doesn't explicitly state safety side-effects (e.g., whether it affects existing panes or requires tmux running), but the core live-chat behavior is well disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste. First sentence states the core action; second explains the persistent behavior and its implications. Every sentence earns its place and it's front-loaded with the primary purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (1 param, no output schema, no nested objects), so the description is largely sufficient. It connects the tool to the tmux agent workflow (live chatting vs polling), which is the key context. A minor gap: it doesn't clarify whether the agent parameter must reference a previously registered agent (via tmux_register_agent) — but given low complexity, this is a minor completeness miss rather than a critical one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and there's just one parameter (agent) with no description. The description adds context that the agent names the identity under which the Claude session runs, and implies 'From then on, tmux_send to that agent' establishes agent as the key. For a single self-evident parameter (agent = what agent to spawn as), the description gives enough meaning, but it doesn't explicitly state what values are valid (e.g., must be a registered agent).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool spawns an interactive Claude Code session in a tmux pane as a given agent, with specific verb (spawn), resource (Claude Code session in tmux pane), and a clear distinction from siblings — it's the setup tool before using tmux_send, and it explicitly contrasts live typing (no polling) against the alternative. This is specific and distinguishes purpose well.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the follow-up workflow (tmux_send types directly into the chat afterward) and sets expectations around behavior (no polling, no human input). It doesn't explicitly state when NOT to use it or name alternatives for other scenarios, but the interaction with tmux_send is clear enough context for when this is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tmux_register_agentRegister agentB

Register an agent and ensure its live tmux pane exists. Not required before send/broadcast — they self-provision — but useful to pre-create a pane before anyone messages that agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals the side effect of creating a live tmux pane, which is helpful. However, it doesn't disclose whether re-registering an existing agent is idempotent, what happens if the pane already exists, whether registration has side effects beyond pane creation, or any error conditions. For a tool that mutates state, this is a meaningful gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact—two sentences—and front-loads the primary purpose before the usage caveat. Every sentence earns its place, and there's no wasted language. Minor deduction only because it could slightly clarify the parameter-relationship.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 1-parameter tool with no output schema and no nested objects, the description addresses the core purpose and usage context. However, without annotations, it doesn't fully disclose behavioral subtlety (idempotency, existing-pane behavior), which is relevant for an agent deciding whether to call it. It's adequate but leaves behavioral edge cases unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate for the single 'name' parameter. The description mentions 'agent' in the context of registration and implies the name identifies the agent, but it doesn't explicitly state that the 'name' parameter is the agent identifier. However, with only one parameter whose purpose is fairly self-evident from the tool name and required flag, the marginal value the description could add is limited.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Register an agent and ensure its live tmux pane exists' which clearly identifies the verb (register) and resource (agent) with a specific outcome (pane creation). However, it doesn't fully differentiate it from siblings like tmux_send or tmux_broadcast; the differentiation is only implied via the note that they self-provision. It's reasonably clear but not explicitly distinguishing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: 'Not required before send/broadcast — they self-provision — but useful to pre-create a pane before anyone messages that agent.' This gives clear contextual guidance on when it's needed vs. unnecessary, and implicitly contrasts with the send/broadcast siblings. This exceeds basic usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tmux_sendSend messageB

Send a message to one agent. Appears instantly in the recipient's tmux pane (push-based, no polling) and is recorded in their queryable history.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
bodyYes
fromYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It does add meaningful behavioral context: messages appear instantly (push-based, no polling) and are 'recorded in queryable history' — which points to tmux_history's capability. However, it doesn't disclose any side effects, delivery failure behavior, whether the 'from' must be a registered agent, or what happens if the recipient isn't online. These gaps are notable for a messaging/side-effect tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, tight and efficient. Each sentence earns its place: the first states purpose and scope, the second adds behavioral details (push mechanism, persistence). No wasted words, properly framed for a single-sentence-per-concept structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a state-changing tool (sends messages) with no annotations and no output schema, so the description must carry more weight. It does convey the core delivery semantics (instant, push-based) and persistence (history), which is decent. However, it omits required prerequisites (agent registration via tmux_register_agent), error cases, and confirmation behavior. For a 3-param side-effect tool with zero annotation coverage, this is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. The description names 'recipient' (mapping to 'to') but provides no semantic detail for 'from' (is it an arbitrary label or must it match a registered agent?) or 'body' (format constraints, size limits). The description adds minimal parameter meaning beyond the generic property names in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource ('Send a message to one agent') that clearly differentiates from siblings like tmux_broadcast (which sends to many). It identifies the target recipient and the push mechanism. However, it doesn't explicitly name the differentiating sibling alternative (tmux_broadcast) which would strengthen the purpose statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is for one-to-one messaging ('to one agent') which distinguishes from broadcast, but it doesn't explicitly provide when-to-use/when-not-to-use guidance or name alternative tools. The push-based/polling distinction adds useful context about the delivery model but doesn't say when to prefer this over tmux_broadcast or tmux_history.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 7 tool updatesv0.1.0
    • First observedtmux_attach_info
    • First observedtmux_broadcast
    • First observedtmux_history
    • First observedtmux_list_agents
    • First observedtmux_open_claude
    • First observedtmux_register_agent
    • First observedtmux_send

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a clearly distinct operation: registration, unicast, broadcast, listing, history, interactive session spawning, and attach info. There is no meaningful overlap or confusion between any two tools.

Naming Consistency5/5

All tools follow a consistent tmux_verb_noun pattern (tmux_register_agent, tmux_send, tmux_broadcast, tmux_list_agents). The naming convention is uniform and predictable throughout.

Tool Count5/5

Seven tools is a well-scoped set for a messaging/orchestration mesh. Each tool earns its place, covering registration, messaging (unicast/broadcast), introspection, interactive session management, and operational info.

Completeness4/5

The surface covers the core lifecycle well: register, message, broadcast, list, view history, and open interactive sessions. Minor gaps exist (no explicit unregister/deregister or kill-session tool), but agents can still operate without these.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that enables AI agents to run fully interactive SSH sessions (via tmux) and execute commands like a human operator, with persistent sessions and multiple concurrent connections.
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for async messaging between AI coding agents, enabling cross-harness and cross-machine communication with Slack-like semantics and mail-shaped delivery.
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for persistent SSH sessions with tmux integration, port forwarding, and SFTP file writes, built for AI agent workflows.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JonusNattapong/oracle-tmux-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server