这是一个基于Spring AI框架和**模型上下文协议(MCP)**的服务器,用于与墨问笔记软件进行交互。通过此服务器,你可以在支持MCP的应用(如Cursor、Claude Desktop等)中直接创建、编辑和管理墨问笔记。
本项目是原Python版本 mowen-mcp-server 的Java重构版本,使用Spring AI框架实现,提供更好的企业级特性和扩展性。
- 🔗 兼容MCP协议:完全支持模型上下文协议规范
- 🌱 Spring AI集成:基于Spring AI框架,支持多种AI模型集成
- 📝 创建笔记:统一的富文本格式,支持段落、加粗、高亮、链接、引用和内链笔记
- ✏️ 编辑笔记:统一的富文本格式,完全替换笔记内容
- 📁 文件上传:支持图片、音频、PDF文件上传,本地文件和远程URL两种方式
- 💬 引用段落:创建引用文本块,支持富文本格式
- 🔗 内链笔记:引用其他笔记,创建笔记间的关联
- 🔒 隐私设置:设置笔记的公开、私有或规则公开权限
- 🔄 密钥管理:重置API密钥功能
- 🎨 统一接口:所有笔记操作使用一致的富文本参数格式
- 🚀 企业级特性:基于Spring Boot,支持配置管理、监控、日志等
- 更好的类型安全:Java强类型系统,减少运行时错误
- 企业级框架:基于Spring Boot,提供完整的企业级特性
- AI模型集成:内置Spring AI支持,可轻松集成各种AI模型
- 更好的性能:JVM优化和响应式编程支持
- 配置管理:支持多环境配置和外部化配置
- 监控和运维:内置健康检查、指标监控等功能
- 打包部署:支持JAR包独立部署,无需Python环境
- Java 17+
- Maven 3.6+
- 墨问Pro会员账号(API功能仅对Pro会员开放)
- 墨问API密钥(在墨问小程序中获取)
git clone <repository-url>
cd mowen-mcp-server-Java
# Linux/macOS
export MOWEN_API_KEY="你的墨问API密钥"
# Windows PowerShell
$env:MOWEN_API_KEY="你的墨问API密钥"
# Windows CMD
set MOWEN_API_KEY=你的墨问API密钥
在 src/main/resources/application.yml
中设置:
mowen:
api-key: "你的墨问API密钥"
在项目根目录创建 .env
文件:
MOWEN_API_KEY=你的墨问API密钥
# 编译项目
cd /Users/yubobo/Documents/traeProject/mowen-mcp-server-Java
mvn clean package -DskipTests
# 使用启动脚本运行项目(推荐)
./scripts/start-server.sh
# 或者后台运行
./scripts/start-server.sh --daemon
./scripts/stop-server.sh
服务启动后,访问以下端点验证:
- 健康检查:http://localhost:8080/actuator/health
- 工具列表:http://localhost:8080/mcp/tools
- 应用信息:http://localhost:8080/actuator/info
在Cursor设置中添加以下配置:
{
"mcpServers": {
"mowen-mcp-server-java": {
"command": "java",
"args": [
"-jar",
"/绝对路径/mowen-mcp-server-Java/target/mowen-mcp-server-java-1.0.0.jar"
],
"env": {
"MOWEN_API_KEY": "${env:MOWEN_API_KEY}",
"SERVER_PORT": "8080"
}
}
}
}
在Claude Desktop的配置文件中添加:
{
"mcpServers": {
"mowen-mcp-server-java": {
"command": "java",
"args": [
"-jar",
"/绝对路径/mowen-mcp-server-Java/target/mowen-mcp-server-java-1.0.0.jar"
],
"env": {
"MOWEN_API_KEY": "你的墨问API密钥"
}
}
}
}
注意: 请将 /绝对路径/
替换为你的实际项目路径。
创建一篇新的墨问笔记,使用统一的富文本格式
参数:
paragraphs
(数组,必需):富文本段落列表auto_publish
(布尔值,可选):是否自动发布,默认为falsetags
(字符串数组,可选):笔记标签列表
示例:
{
"paragraphs": [
{
"texts": [
{"text": "这是标题", "bold": true},
{"text": "这是普通文本"}
]
},
{
"type": "quote",
"texts": [
{"text": "这是引用段落", "highlight": true}
]
}
],
"auto_publish": false,
"tags": ["标签1", "标签2"]
}
编辑现有的墨问笔记,完全替换笔记内容
参数:
note_id
(字符串,必需):要编辑的笔记IDparagraphs
(数组,必需):新的富文本段落列表
设置笔记的隐私权限
参数:
note_id
(字符串,必需):笔记IDprivacy_type
(字符串,必需):隐私类型(public/private/rule)rule
(对象,可选):隐私规则
上传本地文件到墨问笔记
参数:
file_path
(字符串,必需):本地文件的绝对路径file_type
(字符串,必需):文件类型(image/audio/pdf)file_name
(字符串,可选):文件名
通过URL上传文件到墨问笔记
参数:
url
(字符串,必需):文件URLfile_type
(字符串,必需):文件类型(image/audio/pdf)file_name
(字符串,可选):文件名
重置墨问API密钥
mowen:
api-key: "你的API密钥" # 墨问API密钥
base-url: "https://open.mowen.cn" # API基础URL
timeout: 30 # 请求超时时间(秒)
upload-timeout: 300 # 文件上传超时时间(秒)
enable-detailed-logging: true # 是否启用详细日志
spring:
ai:
openai:
api-key: "你的OpenAI密钥"
chat:
options:
model: "gpt-3.5-turbo"
temperature: 0.7
server:
port: 8080 # 服务端口
servlet:
context-path: / # 上下文路径
curl http://localhost:8080/actuator/health
curl http://localhost:8080/actuator/info
curl http://localhost:8080/actuator/metrics
-
API密钥错误
- 检查环境变量
MOWEN_API_KEY
是否正确设置 - 确认API密钥在墨问小程序中有效
- 检查环境变量
-
文件上传失败
- 确保文件路径使用绝对路径
- 检查文件是否存在且可读
- 确认文件类型支持(image/audio/pdf)
-
连接超时
- 检查网络连接
- 调整
mowen.timeout
配置
-
权限错误
- 确认墨问账号为Pro会员
- 检查API密钥权限
logging:
level:
cn.mowen.mcp: DEBUG # 开启调试日志
file:
name: logs/mowen-mcp-server.log # 日志文件路径
mvn test
mvn verify
# 测试工具列表
curl http://localhost:8080/mcp/tools
# 测试创建笔记
curl -X POST http://localhost:8080/mcp/tools/create_note \
-H "Content-Type: application/json" \
-d '{
"paragraphs": [
{
"texts": [
{"text": "测试笔记", "bold": true}
]
}
]
}'
# Dockerfile
FROM openjdk:17-jre-slim
WORKDIR /app
COPY target/mowen-mcp-server-java-1.0.0.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
# 构建镜像
docker build -t mowen-mcp-server-java .
# 运行容器
docker run -d \
-p 8080:8080 \
-e MOWEN_API_KEY="你的API密钥" \
--name mowen-mcp-server \
mowen-mcp-server-java
创建systemd服务文件 /etc/systemd/system/mowen-mcp-server.service
:
[Unit]
Description=Mowen MCP Server Java
After=network.target
[Service]
Type=simple
User=mowen
WorkingDirectory=/opt/mowen-mcp-server
ExecStart=/usr/bin/java -jar mowen-mcp-server-java-1.0.0.jar
Environment=MOWEN_API_KEY=你的API密钥
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
# 启用并启动服务
sudo systemctl enable mowen-mcp-server
sudo systemctl start mowen-mcp-server
# 查看服务状态
sudo systemctl status mowen-mcp-server
欢迎提交Issue和Pull Request!
- Fork本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 开启Pull Request
本项目采用MIT许可证 - 查看 LICENSE 文件了解详情。
- 感谢墨问团队提供的API服务
- 感谢Spring AI团队提供的优秀框架
- 感谢原Python版本的开发者
- 感谢一支烟花社区的支持
- 项目地址:[GitHub Repository]
- 问题反馈:[GitHub Issues]
- 墨问API文档:https://mowen.apifox.cn/
注意:本项目仅供学习和研究使用,请遵守墨问API的使用条款和限制。