Kaomoji

Created By
frankunderwood-w2 months ago
MCP Server that provides kaomoji between conversations for AI Agents
Overview

kaomoji-mcp

CLI-safe kaomoji for AI Agents at key interaction points

npm version License: GPL v3

A Model Context Protocol (MCP) server that gives AI agents expressive kaomoji (ASCII emoticons) at key moments — thinking, celebrating, and apologizing. All kaomoji are CLI-safe: no full-width characters, no decorative Unicode, no rendering surprises in any terminal.

Searching for auth middleware
(..)

All tests passed! (^o^)/

Table of Contents


Why kaomoji-mcp?

Modern AI agents work through multiple sub-tasks before delivering an answer. Without visual indicators, the user sees nothing until the final response. kaomoji-mcp solves this by asking the agent to:

  • Show a thinking kaomoji before each sub-task so the user can follow progress in real time
  • Show a celebration kaomoji when a task completes successfully
  • Show an apology kaomoji when results are not found or an error occurs

Because all characters are ASCII / half-width compatible, they render correctly in every terminal, IDE panel, and chat interface.


Tools, Prompts & Resources

Tools

ToolWhen to callKey parameter
thinking_kaomojiBefore each sub-task or reasoning phasephase (string, max 80 chars); optional mcp_server
celebrate_kaomojiAfter a task completes successfullyintensity: "subtle" / "moderate" / "intense"
apologize_kaomojiOn no-results, error, or user dissatisfactionreason: "not_found" / "error" / "dissatisfied"

thinking_kaomoji — Progress indicator. Call once per sub-task. Accepts an optional mcp_server parameter to show which external MCP server is being delegated to:

**Reading project files** [filesystem]
(._.)

celebrate_kaomoji — Completion signal. Choose intensity to match the moment:

  • subtle — gentle fix, formal context → (^-^)
  • moderate — regular task done → (^o^)/
  • intense — major breakthrough → \(^∀^)/

apologize_kaomoji — Failure signal. The reason field classifies the situation:

  • not_found — search returned no results
  • error — unexpected error occurred
  • dissatisfied — user expressed unhappiness

Prompt

PromptDescription
react_with_kaomojiFull behavior guide — load this prompt to give the agent detailed rules about when and how to use all three tools

Resource

URIMIMEDescription
kaomoji://catalogapplication/jsonFull kaomoji database with all scenes, intensities, states, reasons, fallback strings, and bilingual tags

Installation

Requirements

  • Node.js ≥ 20

Option A — npx (no install, always latest)

No installation needed. Just reference the package in your MCP client config (see below) and the agent runtime will fetch it automatically.

npx kaomoji-mcp

Option B — Global install

npm install -g kaomoji-mcp
kaomoji-mcp   # starts the stdio server

Option C — Local project clone

git clone https://github.com/frankunderwood-w/kaomoji_mcp_server.git
cd kaomoji-mcp
npm install
npm run build
node build/index.js   # starts the stdio server

Option D — Local project by npm

mkdir my-project && cd my-project
npm init -y
npm install kaomoji-mcp

Quickstart

Once configured, your MCP-compatible agent will automatically receive the server instructions on connection and will know to call the tools at the right moments. You can also explicitly load the behavior guide by requesting the react_with_kaomoji prompt in your system prompt.


Configuration by Client

All configurations below launch the server over stdio transport. Replace node /absolute/path/to/build/index.js with npx kaomoji-mcp if you prefer to use the npm package directly.


Claude Desktop

Config file location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "kaomoji": {
      "command": "npx",
      "args": ["-y", "kaomoji-mcp"]
    }
  }
}

Or, if you cloned the repo locally:

{
  "mcpServers": {
    "kaomoji": {
      "command": "node",
      "args": ["/absolute/path/to/kaomoji-mcp/build/index.js"]
    }
  }
}

Restart Claude Desktop after saving. The server should appear under Settings → Developer → MCP Servers.


Claude Code (CLI)

Add the server to your project or user configuration:

# Project-scoped (adds to .claude/mcp.json)
claude mcp add kaomoji -- npx -y kaomoji-mcp

# Or global
claude mcp add --global kaomoji -- npx -y kaomoji-mcp

Or edit .claude/mcp.json manually:

{
  "mcpServers": {
    "kaomoji": {
      "command": "npx",
      "args": ["-y", "kaomoji-mcp"]
    }
  }
}

Cursor

Config file location (global): ~/.cursor/mcp.json
Config file location (project): <project-root>/.cursor/mcp.json

{
  "mcpServers": {
    "kaomoji": {
      "command": "npx",
      "args": ["-y", "kaomoji-mcp"]
    }
  }
}

Or via the Cursor UI: Settings → Cursor Settings → MCP → click + Add new MCP server and enter the command above.


VS Code + GitHub Copilot

VS Code 1.99+ supports MCP servers natively when the GitHub Copilot extension is active.

Option 1 — Workspace config (.vscode/mcp.json):

{
  "servers": {
    "kaomoji": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "kaomoji-mcp"]
    }
  }
}

Option 2 — User settings (settings.json):

{
  "mcp": {
    "servers": {
      "kaomoji": {
        "type": "stdio",
        "command": "npx",
        "args": ["-y", "kaomoji-mcp"]
      }
    }
  }
}

Open the Copilot Chat panel in Agent mode and the server will be available automatically.


Windsurf

Config file location: ~/.codeium/windsurf/mcp_config.json

{
  "mcpServers": {
    "kaomoji": {
      "command": "npx",
      "args": ["-y", "kaomoji-mcp"]
    }
  }
}

Or via the Windsurf UI: Windsurf Settings → Cascade → MCP Servers → click the + button.


Zed

Config file location: ~/.config/zed/settings.json

{
  "context_servers": {
    "kaomoji": {
      "command": {
        "path": "npx",
        "args": ["-y", "kaomoji-mcp"]
      }
    }
  }
}

Continue.dev

Config file location: ~/.continue/config.json (global) or .continue/config.json (project)

{
  "mcpServers": [
    {
      "name": "kaomoji",
      "command": "npx",
      "args": ["-y", "kaomoji-mcp"]
    }
  ]
}

Cline / Roo Cline

In VS Code, open the Cline extension sidebar → click the MCP Servers icon → Edit MCP Settings.

{
  "mcpServers": {
    "kaomoji": {
      "command": "npx",
      "args": ["-y", "kaomoji-mcp"],
      "disabled": false,
      "autoApprove": []
    }
  }
}

Smithery

This server is deployable on Smithery. The smithery.ts entry point exposes a configSchema (empty — no configuration required) and a createServer factory.

To deploy or install via Smithery CLI:

npx @smithery/cli install kaomoji-mcp

Development

# Clone and install
git clone https://github.com/frankunderwood-w/kaomoji_mcp_server.git
cd kaomoji-mcp
npm install

# Compile TypeScript → build/
npm run build

# Watch mode (recompiles on save)
npm run dev

# Type-check without emitting
npm run type:check

Project Structure

src/
├── index.ts              # stdio entry point (CLI / npx)
├── smithery.ts           # Smithery deployment entry point
├── create-server.ts      # Server factory + SERVER_INSTRUCTIONS
├── tools/
│   ├── celebrate-kaomoji.ts
│   ├── thinking-kaomoji.ts
│   └── apologize-kaomoji.ts
├── prompts/
│   └── react-with.ts     # react_with_kaomoji prompt
├── resources/
│   └── catalog.ts        # kaomoji://catalog resource
└── data/
    ├── loader.ts          # cached JSON loader
    └── kaomoji.json       # CLI-safe kaomoji database (75+ entries)

Running Tests

# Run all tests once
npm test

# Watch mode
npm run test:watch

The test suite covers:

SuiteFileWhat it tests
Data loadertests/data/loader.test.tsJSON loading, schema shape, caching
CLI-safe validationtests/data/cli-safe.test.tsNo full-width / decorative Unicode in database
celebrate_kaomojitests/tools/celebrate.test.tsRandomness, intensity, fallback, _instruction field
thinking_kaomojitests/tools/thinking.test.tsPhase names, mcp_server param, length limits
apologize_kaomojitests/tools/apologize.test.tsReason codes, fallback, _instruction field
Integrationtests/integration/server.test.tsFull server: tool list, prompt, resource, end-to-end calls

All tests use in-memory MCP transport — no network or stdio required.


License

This project is licensed under the GNU General Public License v3.0.

Project Info
Created At
2 months ago
Updated At
2 months ago
Author Name
frankunderwood-w
Star
-
Language
-
License
-
Category

Recommend Servers

View All
Template Vault

3 hours ago
Demand Chain - AI Agent native demand matching platform
@文明天梯

让你的Agent来跟全世界对接需求,你的AI助理帮你把需求传达出去,又帮你接受别人给你的需求。 需求链平台是将整个人类联结在一起的一个工具,组成一个网络。 告诉你的AI助理,你的需求,Agent会在需求链平台上寻找到能解决你需求的人。 别人也会将他的需求传达给你,你接受你能处理的需求,你也可以将这个需求拆分,变成数个小的需求,继续放在需求链上传递下去。 比如说你想要一种技术的创新,一个人工智能的新算法,或者是需要一种新材料,想要一种新的解决方案,去解决工作生活中的真实痛点。 你或许有一个天才的想法,需要有人与你一起去验证是否可行。 或者你已经有一套成功的技术,需要让全世界都知道你的方案。 总之每个人都有各种需求需要解决,而需求链平台,就是帮你解决各种需求而存在的机制。 赶快打开你的Agent,告诉他,你的需求吧。 此需求链平台是地球人类共有的基础设施,永久开源,中立,免费。 Let your Agent connect with demands from across the globe. Your AI assistant will forward your requests and receive demands from others for you. The Demand Chain Platform is a tool that unites all humanity into a connected network. Simply tell your AI assistant what you need, and your Agent will find people on the platform who can address your requirements. Others will also send their demands to you. You may take on tasks you are capable of handling, or split a single demand into several smaller ones to keep them circulating on the Demand Chain. For instance, you may seek technological innovation, a new AI algorithm, advanced new materials, or practical solutions to real problems in work and daily life. You might have a brilliant idea and need partners to verify its feasibility. Or you possess proven technologies and wish to share your solutions with the whole world. Everyone has various needs to fulfill, and the Demand Chain Platform is built precisely for this purpose. Launch your Agent and submit your demands right away. As a shared infrastructure for all people on Earth, this Demand Chain Platform is permanently open-source, neutral and free of charge.

21 hours ago
Howtocook Mcp

16 hours ago
Abm.dev

a day ago