Skip to main content
Glama

Jarvis MCP

Bring your AI to life—talk to assistants instantly in your browser. Compatible with Claude Desktop, OpenCode, and other MCP-enabled AI tools.

✅ No extra software, services, or API keys required—just open the web app in your browser and grant microphone access.

Features

🎙️ Voice Conversations - Speak naturally with AI assistants
🌍 30+ Languages - Speech recognition in multiple languages
📱 Remote Access - Use from phone/tablet while AI runs on computer
⚙️ Smart Controls - Collapsible settings, always-on mode, custom voices
⏱️ Dynamic Timeouts - Intelligent wait times based on response length
🧰 Zero Extra Software - Runs entirely in your browser—no extra installs or API keys
🔌 Optional Whisper Streaming - Plug into a local Whisper server for low-latency transcripts

Related MCP server: livechat-mcp

Easy Installation

🚀 One-Command Setup

Claude Desktop:

npx @shantur/jarvis-mcp --install-claude-config
# Restart Claude Desktop and you're ready!

OpenCode (in current project):

npx @shantur/jarvis-mcp --install-opencode-config --local
npx @shantur/jarvis-mcp --install-opencode-plugin --local
# Start OpenCode and use the converse tool

Claude Code CLI:

npx @shantur/jarvis-mcp --install-claude-code-config --local
# Start Claude Code CLI and use voice tools

🤖 Why Install the OpenCode Plugin?

  • Stream voice messages into OpenCode even while tools are running or tasks are in progress.

  • Auto-forward pending Jarvis MCP conversations so you never miss a user request.

  • Works entirely locally—no external services required, just your OpenCode project and browser.

  • Installs with one command and stays in sync with the latest Jarvis MCP features.

📦 Manual Installation

From NPM:

npm install -g @shantur/jarvis-mcp
jarvis-mcp

From Source:

git clone <repository-url>
cd jarvis-mcp
npm install && npm run build && npm start

How to Use

  1. Hook it into your AI tool – Use the install command above for Claude Desktop, OpenCode, or Claude Code so the MCP server is registered.

  2. Kick off a voice turn – Call the converse tool from your assistant; Jarvis MCP auto-starts in the background and pops open https://localhost:5114 if needed.

  3. Allow microphone access – Approve the browser prompt the first time it appears.

  4. Talk naturally – Continue using converse for every reply; Jarvis MCP handles the rest.

Voice Commands in AI Chat

Use the converse tool to start talking:
- converse("Hello! How can I help you today?", timeout: 35)

Browser Interface

The web interface provides:

  • Voice Settings (click ⚙️ to expand)

    • Language selection (30+ options)

    • Voice selection

    • Speech speed control

    • Always-on microphone mode

    • Silence detection sensitivity & timeout (for Whisper streaming)

  • Smart Controls

    • Pause during AI speech (prevents echo)

    • Stop AI when user speaks (natural conversation)

  • Mobile Friendly - Works on phones and tablets

Remote Access

Access from any device on your network:

  1. Find your computer's IP: ifconfig | grep inet (Mac/Linux) or ipconfig (Windows)

  2. Visit https://YOUR_IP:5114 on your phone/browser

  3. Accept the security warning (self-signed certificate)

  4. Grant microphone permissions

Perfect for continuing conversations away from your desk!

Configuration

Environment Variables

export MCP_VOICE_AUTO_OPEN=false  # Disable auto-opening browser
export MCP_VOICE_HTTPS_PORT=5114  # Change HTTPS port
export MCP_VOICE_STT_MODE=whisper  # Switch the web app to Whisper streaming
export MCP_VOICE_WHISPER_URL=http://localhost:12017/v1/audio/transcriptions  # Whisper endpoint (full path)
export MCP_VOICE_WHISPER_TOKEN=your_token  # Optional Bearer auth for Whisper server

Whisper Streaming Mode

  • Whisper mode records raw PCM in the browser, converts it to 16 kHz mono WAV, and streams it through the built-in HTTPS proxy, so the local whisper-server sees OpenAI-compatible requests.

  • By default we proxy to the standard whisper-server endpoint at http://localhost:12017/v1/audio/transcriptions; point MCP_VOICE_WHISPER_URL at your own host/port if you run it elsewhere.

  • The UI keeps recording while transcripts are in flight and ignores Whisper’s non-verbal tags (e.g. [BLANK_AUDIO], (typing)), so only real speech is queued.

  • To enable it:

    1. Run your Whisper server locally (e.g. whisper-server from pfrankov/whisper-server).

    2. Set the environment variables above (MCP_VOICE_STT_MODE=whisper and the full MCP_VOICE_WHISPER_URL).

    3. Restart jarvis-mcp and hard-refresh the browser (empty-cache reload) to load the streaming bundle.

    4. Voice status (voice_status() tool) now reports whether Whisper or browser STT is active.

Ports

  • HTTPS: 5114 (required for microphone access)

  • HTTP: 5113 (local access only)

Requirements

  • Node.js 18+

  • Google Chrome (only browser tested so far)

  • Microphone access

  • Optional: Local Whisper server (like pfrankov/whisper-server) if you want streaming STT via MCP_VOICE_STT_MODE=whisper

Troubleshooting

Certificate warnings on mobile?

  • Tap "Advanced" → "Proceed to site" to accept self-signed certificate

Microphone not working?

  • Ensure you're using HTTPS (not HTTP)

  • Check browser permissions

  • Try refreshing the page

AI not responding to voice?

  • Make sure the converse tool is being used (not just speak)

  • Check that timeouts are properly calculated

Development

npm install
npm run build
npm run dev     # Watch mode
npm run start   # Run server

License

MIT

Available Tools

5 tools
converseA

Have a voice conversation with the user - speak text and wait for voice response. Automatically starts browser interface if not running. IMPORTANT: Once you start using converse, first use text AND then converse for all responses in this conversation.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to speak to the user
timeoutYesREQUIRED: Time to wait for voice input in seconds. Calculate as: estimated speech duration + at least 120 seconds of user-response buffer. Examples: ~30s speech → 150s timeout; ~45s speech → 165s; ~60s speech → 180s.
wait_for_responseNoWhether to wait for voice input from user (default: true)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden and adds useful behavioral detail: it 'Automatically starts browser interface if not running' and imposes a conversation-mode rule. It does not explain timeout failure behavior or the wait_for_response=false case, but the schema covers the timeout formula and the core behavior is 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?

The description is three sentences, front-loaded with purpose, followed by operational context and an important protocol note. There is no wasted content and each sentence earns its place.

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 description plus schema are sufficient for selecting and invoking the tool: purpose, auto-start behavior, required timeout calculation, and a conversation protocol rule are all present. It lacks explicit cross-references to sibling tools, but the tool is simple enough that this does not create a major gap.

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 description coverage is 100%, so the baseline is 3. The description adds no parameter-specific meaning beyond the schema; the schema already provides detailed timeout calculation guidance and wait_for_response semantics.

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?

Description clearly states a specific verb+resource: 'Have a voice conversation with the user - speak text and wait for voice response.' This distinguishes it from siblings like speak (which likely only outputs speech) and get_voice_input (which likely only captures input). The automatic browser start is additional scope context.

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 provides clear context for use: it is for voice conversation and includes a protocol rule: 'Once you start using converse, first use text AND then converse for all responses in this conversation.' It does not explicitly name alternatives or exclusion cases, but the purpose and protocol give enough guidance for selection.

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

end_conversationA

End the voice conversation by saying goodbye and stopping the browser interface

ParametersJSON Schema
NameRequiredDescriptionDefault
good_byeYesThe goodbye message to speak before ending the conversation

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses two key behaviors: speaking a goodbye message and stopping the browser interface. While it doesn't mention reversibility or side effects, the terminal nature of ending a conversation is well conveyed.

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 sentence of 11 words, front-loaded with the main purpose and method. Every word earns its place with no filler or redundancy.

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?

Given the tool's simplicity (one required parameter, no output schema), the description is adequately complete. It explains what the tool does, how it does it, and the parameter is documented in schema. Minor gap: no mention of prerequisites or post-conditions, but overall sufficient.

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 100% with the parameter 'good_bye' already described as 'The goodbye message to speak before ending the conversation'. The description adds no additional semantic value beyond the schema, so a baseline 3 is appropriate.

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 has a specific verb and resource: 'End the voice conversation' with clear method 'by saying goodbye and stopping the browser interface'. It clearly distinguishes from siblings like speak, converse, and get_voice_input by indicating this is the termination action.

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?

Although no explicit alternatives are named, the description clearly implies this tool is for ending the conversation, which is contextually distinct from the sibling tools. The phrase 'End the voice conversation' directly indicates the when-to-use scenario, and the method gives additional guidance.

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

get_voice_inputA

Get pending voice input from users (auto-delivered by default)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/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 only mentions 'pending' and 'auto-delivered by default', but fails to describe return values, side effects (e.g., whether calling clears the queue), or whether it blocks for input. This is a significant gap for an unannotated tool.

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, front-loaded sentence that includes the core action and a useful parenthetical note. Every word earns its place, with zero redundancy.

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 getter with no parameters and no output schema, the description conveys the basic functionality but lacks context about the delivery mechanism, what constitutes 'pending', and how this interacts with auto-delivery. It is minimally sufficient but not thorough.

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?

The input schema has no parameters (0 params), so the baseline is 4. The description does not need to explain parameters, and it adds no parameter-related meaning beyond the schema, but also does not detract from it.

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 'Get pending voice input from users' clearly states a specific verb (get) and resource (pending voice input). It distinguishes itself from sibling tools like 'speak' (output) and 'voice_status' (status) by focusing on retrieving input.

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 phrase '(auto-delivered by default)' implies that this tool may be used for manually retrieving input when auto-delivery is not active, but it does not explicitly state when to use it instead of alternatives like 'voice_status' or 'converse'. No exclusions or alternative tool names are provided.

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

speakA

Speak text using browser text-to-speech. Automatically starts browser interface if not running.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text to speak aloud

TDQS

A3.8/5.0
Behavior3/5

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

The description discloses the side-effect of automatically starting the browser interface, which is useful, but with no annotations it doesn't cover return values, blocking behavior, or error conditions.

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 focused sentences, front-loaded with the action, no wasted words.

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 simple one-parameter tool with a clear schema, the description covers the key behavior and side effect; it's sufficient for an agent to invoke correctly.

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 already fully describes the text parameter, and the description adds no additional meaning beyond restating that text is spoken.

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 uses a specific verb 'Speak' and identifies the resource 'text using browser text-to-speech', making the action clear and distinguishing it from sibling tools like voice_status and get_voice_input.

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?

It implies the tool is for speaking text aloud but does not explicitly state when to use it versus alternatives, nor provide exclusions or prerequisites beyond noting the browser auto-start.

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

voice_statusB

Get current voice system status and pending voice input

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for behavioral disclosure, but it only states what data is retrieved. It does not indicate side effects, whether pending input is consumed, or any permissions. The phrase 'pending voice input' hints at state, but lacks detail.

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 concise sentence that is front-loaded with the action. It contains no fluff, though it could be slightly more informative.

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?

The tool has no parameters and no output schema, so the description minimally covers the return content. However, it lacks context about the voice system's behavior, such as whether calling this affects pending input, making it only minimally complete.

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?

There are zero parameters, so the baseline is 4. The description logically does not need to explain parameter semantics when none exist.

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 ('Get') and resource ('voice system status and pending voice input'), making the tool's function clear. It partially distinguishes from sibling 'get_voice_input' by focusing on status rather than the input itself, though the overlap is not fully addressed.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'get_voice_input' or 'speak'. There is no mention of typical scenarios or exclusions.

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

TDQS

A3.7/5.0
Disambiguation4/5

Most tools have distinct purposes, though speak and converse overlap (converse includes speaking plus waiting for input). voice_status and get_voice_input are related but clearly different in scope. Descriptions help resolve ambiguity.

Naming Consistency3/5

Tool names mix single-word verbs (speak, converse) with noun-based names (voice_status) and verb_noun phrases (get_voice_input, end_conversation). No consistent pattern, but the naming remains readable and intuitive.

Tool Count5/5

Five tools is a well-scoped set for a voice interaction server. Each tool serves a clear function in the conversation lifecycle without unnecessary bloat.

Completeness4/5

The core voice lifecycle is covered: speaking, receiving input, full conversation, and ending. Minor gaps exist, such as not having a dedicated 'listen only' tool or explicit browser start control, but the automatic startup and status check mitigate these.

Maintenance

ActivityInactive
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
    C
    maintenance
    Lets AI assistants control your real Chrome browser to perform web tasks like reading pages, taking screenshots, clicking, and typing, using your existing logged-in sessions.
    132
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables continuous voice conversation with AI coding assistants by locally transcribing speech with Whisper and delivering utterances as text prompts.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to have voice conversations and screen sharing capabilities via WebRTC, using Pipecat for speech-to-text and text-to-speech.
    BSD 2-Clause "Simplified"

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/shantur/jarvis-mcp'

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