@jemidev/mcp

@jemidev/mcp

MCP server for Jemi that lets AI assistants read and edit Jemi projects via a local WebSocket bridge.

Category
Visit Server

README

@jemidev/mcp

MCP server for Jemi. It lets an AI assistant - Claude Code, Codex, Cursor, and anything else that speaks the Model Context Protocol - read and edit your Jemi projects.

It listens on 127.0.0.1:4401, and forwards every request to a Jemi tab over a local WebSocket bridge.

assistant  ──HTTP──▶  jemi-mcp (127.0.0.1:4401)  ──WebSocket──▶  your Jemi tab  ──▶  Jemi API
                       no keys, no storage                        holds the keys

Usage

Start the server and leave it running:

bunx @jemidev/mcp    # or: npx -y @jemidev/mcp

Register it with your assistant:

claude mcp add --transport http jemi http://127.0.0.1:4401/mcp

Then open Jemi, go to Settings → MCP and press Connect. That page also has ready-made snippets for Claude Desktop, Codex, OpenCode, Cursor, Gemini CLI, VS Code and Windsurf.

Configuration

Variable Default Purpose
JEMI_MCP_PORT 4401 Port to listen on. Change it in your client config too.
JEMI_MCP_ALLOWED_ORIGINS https://app.jemi.dev Comma-separated origins allowed to attach a bridge.

The origin allowlist matters: without it any page you visit could connect to the local port and feed your assistant fabricated project data. It could not read anything — it has no keys — but it could lie.

Tools

34 tools covering projects, channels, tasks, documents, comments, chat, dictionaries (tags, priorities, difficulties) and members. Ids are opaque, so resolve them first — jemi_list_projectsjemi_list_channels — before acting. The exception is a task number like ALP-0254: jemi_find_task_by_key resolves it in one call.

jemi_list_tasks filters by board, title, tag, priority, difficulty, assignee and by what a task is missing, and returns a brief shape by default — listing a busy channel in full does not fit in an assistant's context. Bulk tools (jemi_update_tasks, jemi_update_dictionary_items, jemi_create_tasks, jemi_delete_tasks) exist so twenty edits are one call.

Task bodies, comments and chat messages are TipTap documents. jemi_document_format returns the accepted nodes and marks for each surface.

Destructive tools (deleting a task, a channel, a dictionary entry) require a confirmation argument that the assistant must get from you in words. That is a guardrail against an over-eager agent, not a security boundary.

Bridge protocol

The frame types the server and the browser exchange are published as a subpath export, for anyone building another bridge:

import { MCP_PROTOCOL_VERSION, parseFrame, type TMcpBridgeFrame } from '@jemidev/mcp/protocol'

Only one bridge may be attached at a time: every operation targets "the tab the user is looking at", and with two tabs connected there is no way to say which one that is.

Development

bun install
bun run dev          # watch mode, from source
bun run build        # bundles dist/ for Node
bun run check-types

The runtime is plain Node (node:http + ws) so the package works under npx as well as bunx; Bun is used for the toolchain.

License

MIT © Jemi

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured