Atlas / MCP servers / mungowang / mohou-mini-app

mohou-mini-appBLOCK

mcp/mungowang/mohou-mini-app

Mohou. Your own place to make mini-apps, and to run them.

Verdict
BLOCK
Grade
F
Trust score
50 /100
Exposed tools
74 70r · 4w · 0d
Transport
stdio · streamable-http
License
—
Stars
0
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

English | 中文

[](https://github.com/mungowang/mohou-mini-app/actions/workflows/check.yml) [](package.json) [](package.json) [](package.json) [](docs/architecture/decisions.md)

Mohou. Your own place to make mini-apps, and to run them.

  • It lays out the desk, so the agent you already use can build your library of programs and a workbench to go with it.
  • The shelves are steady. You invent. It runs them and looks after them. Open it and start.
  • Make the front page of your day however you like. A different situation gets a different workbench.

阶段看板, opened from the library. Counts on top, four columns under them, and a button that asks the model to log time.

Those apps call back into this machine. ctx.llm and ctx.agent use the provider Shell started (Echo, or Pi when it is installed). ctx.mcp calls an MCP server you already connected. ctx.bash runs on this computer.

What you can build

You describe the thing. The agent scaffolds it, opens it, reads the errors, and keeps going until the screen matches.

These need nothing but the host. Connect your own systems later and the same shape covers them.

Read from source at commit a5c067132007OBSERVED · 2026-10-11
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add values --env MCP_TOKEN=${MCP_TOKEN} -- npx -y @mohou/[email protected]
claude-desktop
{
  "mcpServers": {
    "values": {
      "command": "npx",
      "args": [
        "-y",
        "@mohou/[email protected]"
      ],
      "env": {
        "MCP_TOKEN": "${MCP_TOKEN}"
      }
    }
  }
}
03

Exposed tools (74)

70 read · 4 write · 0 destructive.

ToolRiskDescription
BetareadOne line
BoardreadWorkbench board
DeskreadHome
Earlyreada
ExamplereadOne line
ForestreadGreen
GITLAB_BASE_URLreadGitLab instance root, for example http://gitlab.example.com
GITLAB_TOKENreadPersonal access token with the api scope
JENKINS_API_TOKENreadJenkins API token
JENKINS_URLreadJenkins root, for example https://jenkins.example.com
JENKINS_USERNAMEreadJenkins user
JIRA_BASE_URLreadJira instance root, for example https://jira.example.com
JIRA_PASSWORDreadJira password or API token
JIRA_USERNAMEreadJira account name
Latereadb
Minereadx
Nonereadc
NotesreadA pad
Otherreaddesk notes
TodoreadA list
Xreadd
areadone
com.mohou.labwriteschedule
githubread个人 GitHub
gitlabreadGitLab
gitlab_branches_listread项目分支,新建 MR 前确认源分支
gitlab_labels_listread项目标签名——写标签前先查,避免建出拼错的标签
gitlab_mr_changeswrite逐文件 diff 摘要(patch 有截断上限)
gitlab_mr_getread一个合并请求的字段,含 work_in_progress
gitlab_mr_listread项目的合并请求,默认只看 opened
gitlab_mr_pipelinesread这个合并请求的流水线状态,合并前的闸门
gitlab_project_getread按路径或 id 读项目,拿默认分支
gitlab_project_searchread按名字搜项目,拿项目路径
gitlab_server_versionread目标实例的 GitLab 版本
gitlab_whoamiread当前凭据对应的账号——证明 token 可用最便宜的一步
jenkins_get_build_changesread这次构建带的提交
jenkins_get_build_statusread一次构建的结果、时长、参数
jenkins_get_console_logread控制台输出(排错主入口)
jenkins_get_job_statusread一个任务的状态与最近构建
jenkins_get_pipeline_stagesread流水线各阶段与耗时
jenkins_get_recent_buildsread最近几次构建的编号与结果
jenkins_get_versionread控制器版本与就绪状态,最便宜的一次探活
jenkins_list_jobsread任务列表(可按 folder 收窄)
jenkins_list_nodesread节点与在线状态
jenkins_search_jobsread按名字搜任务
jira_get_current_userread当前凭据对应的账号,用来确认 token 配对正确
jira_get_fieldsread字段目录(自定义字段用 id 才稳)
jira_get_issueread读一条 issue 的字段与描述
jira_get_transitionsread一条 issue 当前可做的状态流转
jira_list_commentsread一条 issue 的评论
jira_list_projectsread可见项目列表,拿 project key 用
jira_search_issuesread按 JQL 搜索 issue
jira_server_inforead确认 Jira 版本与部署类型(Server / Cloud),不取业务数据
labread课表
mini_app_registerwriteCreate an app
nreadd
openaireadOpenAI
pingreadpong
一键杂事read三个按钮,在这台机器上跑已知脚本,结果回到 app
今日待办read打开就看见我的一屏:本地事项 + 筛选 + 归档
会计read课表
信息雷达read拉源、做简报、长任务可取消
值班屏read打开就自己在跳。没有开始按钮。
实验台read
工作台read第一屏是今天要处理的事,应用列表在旁边
我的今日readedited
执行器write模型自己走多步,UI 就是这条 run,可取消
桌面read自定义首页
模型实验台readLLM / Agent / MCP 三台实验,流式输出、执行步骤跟踪、运行记录
每日站会readDaily standup review
表格台read文件进,格子上干活,哪里变了
识图read粘贴截图
阶段看板read看板/表格双视图 · 状态与评论 · AI 记一笔
骨架示例read最小可运行:一次 call 往返 + 读 Host 配置
04

Trust audit

BLOCKgrade F · trust 50/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (6 observation(s))
Network
declared (7 observation(s))
Shell
declared (3 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
packages/host/src/events/view-bridge.ts:176
const run = new Function('mma', `return (async () => {\n${data.code}\n})()`) as (mma: typeof helpers) => Promise<unknown>
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHPrompt injection · prompt.rtl_override · CWE-94, CWE-1427
.agents/notes/implemented/simplification/2026-10-08-grok-marked-block.md:23
file_path/Users/wangpeng/Workspace/Source/monkey-mini-app-next/.agents/notes/implemented/simplification/2026-10-08-grok-marked-block.md
Why it matters. bidirectional override can render text differently from how it is read
MEDIUMInventory / provenance · inv.binary · CWE-1104
packages/launcher/tauri/icons/icon.icns
icon.icns
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/host/src/http/bind.ts:84
url: `http://127.0.0.1:${input.policy().hostPort}${httpLayout.mcp}`,
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/host/src/http/owner.ts:53
url: `http://127.0.0.1:${ports.readPolicy().hostPort}${httpLayout.mcp}`,
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
packages/mcp/client/tests/secrets.spec.ts:16
for (const value of ['Bearer abcdefgh', 'sk-live-123', 'ghp_abcdef', 'eyJhbGciOiJIUzI1NiJ9', '-----BEGIN RSA PRIVATE KEY-----', '0123456789abcdef0123456789abcdef01234567']) {
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
packages/mcp/client/tests/secrets.spec.ts:39
expect(maskCredential('-----BEGIN RSA PRIVATE KEY-----')).toBe('-----BEGIN RSA PRIVATE KEY-----')
LOWInventory / provenance · inv.hidden_file · CWE-1104
.oxlintrc.json
.oxlintrc.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.oxlintrc.staged.json
.oxlintrc.staged.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.no_license · CWE-1104
Why it matters. no LICENSE file and no repo licence
Fix. add a licence
LOWInventory / provenance · inv.symlink · CWE-1104
CLAUDE.md
CLAUDE.md
Why it matters. link not followed
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
packages/host/tests/runner.spec.ts:15
eval(source: string): void
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
packages/host/tests/runner.spec.ts:62
eval(source: string): void
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
packages/host/tests/view-bridge.spec.ts:215
const start = new Function(source) as () => void
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/app/ui/examples/components/misc-editors/misc-editors-02.tsx:11
import { JIRA_WIKI_SAMPLE } from "../../shared/jira-wiki-sample";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/app/ui/src/products/full-calendar/views/agenda-view/agenda-events.tsx:14
import { useCalendar } from '../../contexts/calendar-context';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/app/ui/src/products/full-calendar/views/agenda-view/agenda-events.tsx:15
import { EventDetailsDialog } from '../../dialogs/event-details-dialog';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/app/ui/src/products/full-calendar/views/agenda-view/agenda-events.tsx:23
} from '../../helpers';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/app/ui/src/products/full-calendar/views/month-view/calendar-month-view.tsx:1
import { motion } from '../../shims/motion';
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
.agents/notes/implemented/architecture/2026-09-27-tauri-supervises-sidecar.md:11
The Tauri binary is `Contents/MacOS/Mohou`. With no origin argument, and with `Contents/Resources/prefix` present, it is the parent: it resolves Node and the login-shell `PATH`, links the Pi peers, an
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
.agents/notes/proposed/architecture/2026-09-23-shell-sidecar-and-launcher.md:34
│  http://127.0.0.1:<port>/                              │
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/host/tests/author-mcp-admin.spec.ts:50
url: `http://127.0.0.1:${http.port}/mcp`,
LOWObfuscation / stealth · obf.rtl_override · CWE-506, CWE-94
.agents/notes/implemented/simplification/2026-10-08-grok-marked-block.md:23
file_path/Users/wangpeng/Workspace/Source/monkey-mini-app-next/.agents/notes/implemented/simplification/2026-10-08-grok-marked-block.md
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@stylistic/eslint-plugin, @types/node, eslint-plugin-sonarjs, jsdom, lefthook, typescript
Why it matters. 6 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/app/templates/package.json
@types/lodash, @types/react, @types/react-dom, exceljs, lodash, react, react-dom
Why it matters. 7 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass, no_license.

Audited 2026-10-11 · audit v0.4.1 · source sha a5c067132007full audit observations/trust-audit/mcp-server/mungowang__mohou-mini-app.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-11a5c067132007BLOCKF50first audit
06

Questions

What is the mohou-mini-app MCP server?

Mohou. Your own place to make mini-apps, and to run them.

What tools does mohou-mini-app expose?

74 in total: 70 read-only, 4 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is mohou-mini-app safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (50/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does mohou-mini-app need?

It reads MCP_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does mohou-mini-app run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as @mohou/values at 1.0.54.

How current is this page?

The grade is for one exact copy of the source (a5c067132007), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement