一款最小可用且可扩展的模型上下文协议(MCP)服务器,用于提供模型所需的:
非常适合与Context7(或任何“Cangjie语法/标准库参考”的MCP)同时启用:
my_mcp_server/
├── server.py # MCP服务器主程序(FastMCP + stdio)
├── prompts.json # 提示模板配置文件(可选)
├── README.md # 本文件
├── resources/ # 暴露给模型的只读资料
│ ├── global/ # 全局通用文档
│ │ ├── CANGJIE_C_FFI_SUMMARY.md # Cangjie-C FFI使用总结
│ │ └── libs/ # 标准库文档(可选)
│ │ └── std/ # 标准库各模块文档
│ └── modules/ # 各模块专属文档(按模块拆分上下文)
│ ├── incremental engine/ # 增量引擎模块
│ │ ├── 增量引擎串讲.md
│ │ ├── 增量引擎调用流程总结.md
│ │ ├── 仓颉函数调用流程详解.md
│ │ ├── 仓颉增量引擎相关概念解析.md
│ │ ├── 仓颉状态变更失效和更新机制详解.md
│ │ └── Dependency系统对比分析.md
│ ├── ui/ # UI模块
│ │ ├── CALLBACK_FFI_DESIGN.md
│ │ └── onClick_Callback_Flow_Analysis.md
│ └── serialization_deserialization/ # 序列化模块(待补充)
└── .cursor/ # Cursor配置(在项目根目录,不在本仓库)
└── mcp.json # MCP服务器配置
# 任选其一
# (A) conda
conda create -n mcp-env python=3.11 -y
conda activate mcp-env
pip install -r requirements.txt
# (B) python venv
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# 在仓库根运行
python server.py
# 如果成功,会“静默挂起”——表示在stdio等待MCP客户端连接
### 在Cursor中注册MCP
重要:`.cursor/mcp.json`要放在你打开的项目根目录(与`.git`同层)。
在项目根目录创建`.cursor/mcp.json`(如果不存在),添加以下配置:
```json
{
"mcpServers": {
"cj-mcp": {
"command": "python",
"args": ["/home/maxime/ws/my_mcp_server/server.py"],
"env": {
"PYTHONPATH": "/home/maxime/ws/my_mcp_server"
}
}
}
}
注意:
/home/maxime/ws/my_mcp_server/server.py翻译成英文,并替换为你实际路径command应该指向虚拟环境中的Python,例如:"/path/to/.venv/bin/python"CJ-MCP提供了以下资源,模型可以通过MCP协议访问:
cj://syntax - Cangjie语法/标准总结
resources/global/下所有.md文档cj://global - 所有全局文档
libs/std/下的标准库文档proj://modules/{module} - 指定模块的所有文档
module参数示例:"incremental engine","ui","serialization_deserialization".md文件并聚合"incremental engine")使用示例:
获取增量引擎模块文档:proj://modules/incremental engine
获取UI模块文档:proj://modules/ui
summarize_module为指定模块提供粗略的文档摘要,提取文件顺序中的前几个字符。
参数:
module (str) - 模块名称max_chars (int,默认值:12000) - 最大字符数返回:以==== FILE:分隔的文档摘要
cj_module_dev某个模块的开发任务提示模板。
参数:
module (str) - 模块名称task (str) - 具体任务描述使用场景:当需要开发或修改模块功能时,使用此提示允许模型:
cj://global)proj://modules/{module})示例:
module = "incremental engine"
task = "把增量引擎的navigation补齐,帮我进行增量引擎开发"
cj_module_summary模块设计的概述提示模板。
参数:
module (str) - 模块名称返回内容:
在Cursor中可以直接调用提示:
请使用cj_module_dev提示,module = "incremental engine",
task = "把增量引擎的navigation补齐,帮我进行增量引擎开发"
模型将自动:
cj://global获取全局规范proj://modules/incremental engine获取增量引擎文档模型可以直接请求资源:
请读取cj://syntax了解仓颉语法
请读取proj://modules/ui了解UI模块设计
请使用gen_cj_component工具生成一个名为MyView的组件
resources/modules/创建一个模块目录(支持中文名称).md文档放入该目录proj://modules/{module}资源中示例:
mkdir -p resources/modules/my_module
# 添加文档
echo "# My Module" > resources/modules/my_module/README.md
resources/global/目录libs/std/).md文件将被自动处理并聚合到cj://syntax和cj://global资源中在server.py中间添加一个新的@mcp.tool()装饰器函数:
@mcp.tool()
def my_custom_tool(param1: str, param2: int = 10) -> str:
"""
工具描述。
"""
# 实现逻辑
return result
在server.py中间添加一个新的@mcp.prompt()装饰器函数:
@mcp.prompt()
def my_custom_prompt(context: str) -> str:
"""
提示模板描述。
"""
return f"""
你的提示模板内容...
[上下文] {context}
"""
主要依赖:
mcp - 模型上下文协议服务器框架(FastMCP)安装:
pip install mcp
或者创建requirements.txt:
mcp>=0.1.0
然后安装:
pip install -r requirements.txt
建议使用Python 3.11或更高版本。
A: 在Cursor中打开MCP面板(通常通过命令面板),查看cj-mcp服务器状态。如果显示'已连接',则表示配置成功。
A: 支持。模块名称可以是中文,例如"incremental engine"。在访问资源时使用:proj://modules/incremental engine
A: CJ-MCP专注于项目特定知识,而Context7专注于语言语法和标准库。两者可以同时启用:
A: 目前主要支持Markdown(.md)文件。其他格式的文件将被忽略。
A: 可以直接运行python server.py。服务器将通过STDio与客户端通信。如果发生错误,将在终端上显示。
A: 在.cursor/mcp.json中,command字段应指向虚拟环境中的Python可执行文件:
{
"command": "/path/to/.venv/bin/python",
"args": ["/path/to/server.py"]
}
欢迎提交Issue和Pull Requests!
[根据实际情况填写]