sjis mcp
用于处理Shift JIS文件的Claude Code用MCP服务器。
如旧Windows项目(Borland C++Builder等)所示,在Shift JIS中写入源代码时 Claude Code的内置Read/Edit/Write工具会发生乱码。 通过使用该服务器,可以在保持Shift JIS文件的同时正确读写Claude。
工具列表
工具|说明| |--------|------| | read_sjis 读入Shift JIS文件,作为UTF-8返回(行范围指定、检索对应、regex: true 中查找正则表达式) | write_sjis 用Shift JIS将UTF-8字符串新建文件写入(拒绝现有文件) | edit_sjis |替换Shift JIS文件中的字符串(用dry_run显示diff,CRLF/LF自动保持)| | detect_encoding 判断文件的编码(shift_jis/utf8/utf8_bom/ascii/binary/unknown)。确信度和根据也返还
构建
GOPATH=/usr/share/gocode go build -o sjis-mcp .Windows交叉编译:
GOPATH=/usr/share/gocode GOOS=windows GOARCH=amd64 go build -o sjis-mcp.exe .注册Claude Code
全局注册(所有项目通用)
~/.claude/claude_desktop_config.json 或Claude Code的MCP设置:
{
"mcpServers": {
"sjis": {
"command": "/path/to/sjis-mcp"
}
}
}对于Windows:
{
"mcpServers": {
"sjis": {
"command": "C:\\tools\\sjis-mcp\\sjis-mcp.exe"
}
}
}项目本地注册
项目根目录 .mcp.json 设置:
{
"mcpServers": {
"sjis": {
"command": "C:\\tools\\sjis-mcp\\sjis-mcp.exe"
}
}
}CLAUDE.md中记载例
Shift JIS项目的 CLAUDE.md 中添加以下内容,Claude将自动使用正确的工具:
## 文字コードについて
このプロジェクトのソースファイル(.cpp, .h, .pas 等)はすべて **Shift JIS** です。
### ファイル操作のルール
- ファイルを読む場合: **必ず `read_sjis` ツールを使う**(組み込みの Read は使用禁止)
- 既存ファイルを編集する場合: **必ず `edit_sjis` ツールを使う**(組み込みの Edit は使用禁止)
- 一部置換は `old_str` / `new_str`、行範囲置換は `line_start` / `line_end` モードを使い分ける
- 大きい変更は事前に `dry_run: true` で diff を確認すると安全
- 新規ファイルを作成する場合のみ `write_sjis` を使う(既存ファイルは拒否される)
- grep/find/diff 等のシェルコマンドは Bash ツールで直接実行して構わない
- ただし grep で日本語を検索する場合は `LANG=ja_JP.SJIS grep ...` のように指定する
### SJIS / UTF-8 混在時のルール
このプロジェクトは一部のディレクトリ(例: `docs/`)が UTF-8 です。
迷ったら `detect_encoding` で判定してから:
- `encoding: shift_jis` → `read_sjis` / `edit_sjis` / `write_sjis` を使う
- `encoding: utf8` / `utf8_bom` / `ascii` → 組み込みの Read / Edit / Write を使う
- `encoding: unknown` / `confidence: low` → ユーザーに確認するv1.4.0中的改进
基于实际利用反馈的改善(阶段B):
- 新工具
detect_encoding添加 —在SJIS/UTF-8混合项目中,在文件操作前判定编码。返回值为encoding(shift_jis/utf8/utf8_bom/ascii/binary/未知)confidence(高/中/低/未知)、reason(判定根拠)、alternatives(备选)。判定优先顺序是BOM→ASCII-only→UTF-8/SJIS妥当性检查→字节统计的顺序 read_sjis添加正则表达式搜索模式 —regex: true的search作为Go的RE2正则表达式进行解释。(?i)忽略大小写|在OR、^/$的下界。现有完全匹配模式保持兼容
混合项目中的建议工作流:在使用文件之前 detect_encoding 按钮,来查看主文件中将要发送的内容 read_sjis / edit_sjis选择(SJIS时)或内置Read/Edit(UTF-8时)。
v1.3.0中的改进
基于实际利用反馈的改进:
write_sjis更改为新的 —拒绝现有文件。在结构上防止错误覆盖,并在错误消息中edit_sjis来定义自定义外观edit_sjis用dry_run显示diff -匹配位置和替换前/替换后的内容-/+查看项目中可用的所有族。易于在运行前确认- 在结果消息中明示换行代码(CRLF/LF) —显示编辑和写入完成时保存的换行代码。可确认BCB系CRLF源是否维持
read_sjis输出edit_sjis行范围模式提示 —在行号/部分读取/检索模式的结果末尾,保持原样edit_sjis的,之line_start/line_end的例子
v1.2.0中的改进
read_sjis:行范围指定 —line_start/line_end参数允许部分导入。即使是大文件也不超过令牌上限read_sjis:検索机能 —search/context_lines参数中相当于grep的检索在MCP内完成。Shift JIS文件内的日语检索也不依赖环境edit_sjis:日语匹配改善 —通过Unicode NFC规范化,包括日语old_str中的失败edit_sjis:诊断情报改善 -失败时old_str的前三行显示类似行
注意事项
edit_sjis啊old_str在文件中存在多个情况下replace_all: true缺少支持的问题。
指定包含上下文的唯一字符串,或单击replace_all 中所述修改相应参数的值。
write_sjis仅用于创建新文件。编辑现有文件edit_sjis中所述修改相应参数的值。- 请勿用于二进制文件。
