codex-bilingual-overlay
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@codex-bilingual-overlaySwitch the overlay to hover translation mode"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Codex Bilingual Overlay / Codex 中英双语增强器
一个面向 Windows 版 Codex 的开源中英双语覆盖层。它保留 Codex 中的英文原文,并通过独立、点击穿透的窗口在旁边或下方显示简体中文翻译。
An open-source bilingual overlay for Codex on Windows. It preserves the original English UI and displays Simplified Chinese translations in a separate, click-through window.
功能
三种模式:关闭、悬停翻译、页面预翻译。
插件与 Skill 名称采用常见中文叫法,如
Computer Use(电脑控制)、Google Calendar(谷歌日历)。插件卡片标题和说明分别翻译,悬停时可同时显示。
所有符合结构特征的 Skill 详情页均使用一块完整中文面板,保留段落、标题和项目符号顺序,不依赖插件名称白名单。
以中文为主的对话只提取其中的英文片段,不重复“翻译”整段中文。
品牌、代码、参数键、路径、URL、JSON 和版本号受到保护。
模式保存在本机;重新打开控制卡不会自动跳回默认模式。
Related MCP server: webgpt MCP
安装或恢复
要求:Windows 10/11、Codex 桌面版、Node.js 20 或更高版本、可用的 Python 3(优先使用 Codex 自带运行时)。首次安装离线模型需要网络,约占 214 MB。
从 GitHub 下载 ZIP 并解压,或执行:
git clone https://github.com/mgjc22962/codex-bilingual-overlay.git
cd codex-bilingual-overlay
node .\scripts\install-plugin.mjs安装脚本会:
将插件复制到
%USERPROFILE%\plugins\codex-bilingual-overlay;安装 Node.js 依赖;
在
%PUBLIC%\CodexBilingualOverlay创建隔离的 Python 环境并安装离线英译中模型;写入个人插件市场条目,并尝试调用 Codex CLI 安装插件。
若 Codex CLI 不可用,脚本仍会完成文件和个人市场配置。随后重启 Codex,在“插件 → 个人”中安装“中英双语增强器”。打开一个新任务,输入“打开中英双语增强器控制卡”。
如果以后卸载了 Codex 或本插件,只需重新下载本仓库并再次运行同一个安装命令。详细步骤见 安装与恢复指南。
使用
控制卡提供:
关闭:停止覆盖层并清除译文;悬停翻译:鼠标指向英文后显示译文;Skill 正文悬停时显示完整中文面板;页面预翻译:持续显示当前页面的短译文,并在 Skill 详情页显示完整中文面板。
MCP 接口:
show_bilingual_controls()set_bilingual_mode({ mode: "off" | "hover" | "preload" })get_bilingual_status()
安全设计
不修改或注入 Codex,不写入 WindowsApps,不要求管理员权限。
覆盖窗口使用点击穿透和不可激活样式,不拦截鼠标、焦点或滚轮。
MCP 服务、翻译进程和覆盖层分开运行;任何翻译组件故障时只隐藏译文。
不读取或改写插件调用参数、返回值和账户数据。
Codex 大版本改变可访问性结构后可能需要适配;更新前可先切换到“关闭”。
架构说明见 ARCHITECTURE.md。
开发与验证
npm ci
npm test稳定性测试默认运行两小时,每 10 秒切换模式:
node .\scripts\soak-run.mjs 7200000 10000许可
本项目使用 MIT License,允许任何人免费使用、复制、修改、合并、发布、分发、再许可和销售本项目副本,但必须保留原版权和许可声明。离线翻译模型与第三方依赖使用各自的许可证,详见 THIRD_PARTY_NOTICES.md。
Copyright (c) 2026 mgjc22962
Available Tools
3 toolsget_bilingual_status读取双语增强器状态A
读取覆盖层、离线模型和翻译进度状态。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 correctly identifies the operation as a read, which is non-destructive, and lists the three status components. However, it does not disclose return format, potential side effects (e.g., might refresh data), or permissions. For a simple read tool, some additional context would be useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that immediately communicates the tool's purpose. No filler or redundant information; it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 params, no output schema), the description adequately covers what the tool does and its main returns (status of three components). It could be more complete by mentioning the response format (e.g., JSON structure or progress percentage), but it is sufficient for a simple status read.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema covers 100% of the (nonexistent) properties. The description adds no parameter details because none are needed, and the baseline for 0 parameters is 4. It does not miss anything.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb (读取/read) and resource (status of overlay, offline model, and translation progress). It distinguishes from sibling tools: show_bilingual_controls and set_bilingual_mode are about controls and mode setting, while this is about reading status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage—call this tool when you need to read status—but it does not explicitly state when to use this versus the siblings or provide any exclusion criteria. The usage is intuitive but not explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_bilingual_mode切换双语翻译模式C
切换关闭、悬停翻译或页面预翻译模式。
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It only states the action without revealing potential side effects, persistence of the mode, or how it affects ongoing translation activities. This is under-transparent for a state-changing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler or redundancy. It efficiently communicates the core action and the set of options, making it highly concise and direct.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple setter tool with one parameter, the description is minimal but lacks contextual details. It does not clarify what 'page pre-translation' entails, whether the setting is global or per-session, or how it interacts with the sibling tools. Even for a simple tool, more context is needed, especially without annotations or an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It does list the three modes (关闭, 悬停翻译, 页面预翻译) aligning with the enum values (off, hover, preload), which adds meaning beyond the raw enum. However, it does not explain the practical implications of each mode, so compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: switching between off, hover translation, and page pre-translation modes. It uses a specific verb (切换) and a defined resource (bilingual translation mode). While it doesn't explicitly differentiate from sibling tools, the tool name and sibling context make its purpose distinct enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 show_bilingual_controls or get_bilingual_status. There are no stated use cases, prerequisites, or exclusions, leaving the agent to infer usage solely from the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_bilingual_controls显示中英双语增强器B
显示中英双语增强器控制卡。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the transparency burden. It simply says 'show', implying a non-destructive UI action, but it does not disclose what the control card contains, whether it triggers any side effects, or what the user should expect. This is minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, concise and to the point. It adds the 'control card' detail beyond the title, but it is still largely redundant with the title, preventing a perfect conciseness score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
As a parameterless tool, the description is minimally sufficient to convey the basic action, but it fails to provide context about sibling tools or the purpose/content of the control card. Given the simplicity, this is an average level of completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to explain parameter details. Per the rubric, a baseline score of 4 applies when there are no parameters, and the description adds no unnecessary parameter-related complexity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('显示' / show) and resource ('中英双语增强器控制卡' / bilingual enhancer control card), which distinguishes it from the sibling tools that set mode or get status. However, it does not explicitly contrast with siblings, so it falls short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus set_bilingual_mode or get_bilingual_status. No prerequisites, exclusions, or context are provided, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool performs a distinct action: showing controls, setting the translation mode, and retrieving status. There is no overlap or ambiguity between them.
All three tool names follow the same verb_noun pattern: show_bilingual_controls, set_bilingual_mode, get_bilingual_status. The naming is predictable and consistent.
With exactly three tools, the server is tightly scoped to its purpose of managing a bilingual overlay. Each tool covers a necessary aspect without redundancy or bloat.
The tool set covers the full lifecycle of the overlay: displaying controls, changing modes, and checking status. No obvious gaps exist for the stated purpose.
Maintenance
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
MCP server for Translation Services
MCP server for Crowdin — projects, files, strings, translation progress, tasks, and members.
Translate MCP — wraps LibreTranslate API (https://libretranslate.com/)
MCP server for querying Forkast documentation
Related MCP Servers
- FlicenseBqualityDmaintenanceA local MCP server that enables Codex to inspect and interact with Chrome tabs through the Chrome DevTools Protocol, primarily for collecting authorized Brightspace course materials into local folders.16
- FlicenseNot gradedqualityCmaintenanceLocal MCP server for Codex to send prompts to ChatGPT Web Pro extension and manage repository tasks safely.1
- FlicenseNot gradedqualityBmaintenanceCodex Bridge MCP is a local MCP orchestration service for a stable Claude Code x Codex CLI development workflow.2
- AlicenseNot gradedqualityAmaintenanceA Windows-first local MCP server that lets Codex inspect and control Krita through a small, authenticated bridge.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/mgjc22962/codex-bilingual-overlay'
If you have feedback or need assistance with the MCP directory API, please join our Discord server