使用说明
MCP 服务器
习俗 模型上下文协议(MCP) 服务器,为Claude Code和其他MCP客户端提供对文件系统、系统信息、黑曜石保险库、SQLite数据库和UniFi网络控制器工具的安全访问。
特性
- 文件系统工具 -在允许的路径内读取、写入、列出和搜索文件
- 系统工具 -获取系统信息,运行白名单命令,查看进程和磁盘使用情况
- 黑曜石工具 -在vault中列出笔记、阅读内容、搜索文本和查找反向链接
- 数据库工具 -以只读访问方式查询SQLite数据库
- UniFi工具 -查询和管理UniFi Dream Machine网络,包括威胁管理(CyberSecure)
安全
- 带TLS证书的HTTPS(支持Let's Encrypt)
- 所有MCP请求的承载令牌身份验证
- 文件系统操作的路径限制
- 系统操作的命令白名单
- 具有查询筛选功能的只读数据库访问
- 用于UniFi集成的API密钥验证
需求
- Node.js 18+(用于本机获取支持)
- npm或纱线
- TLS证书(用于开发的自签名,用于生产的Let’s Encrypt)
- 可选:带API密钥的UniFi Dream Machine
安装
-
克隆存储库:
git clone https://github.com/your-username/mcp-server.git cd mcp-server -
安装依赖项:
npm install -
配置环境:
cp .env.example .env # Edit .env with your settings -
生成TLS证书(用于开发):
mkdir -p certs openssl req -x509 -newkey rsa:4096 -keyout certs/server.key -out certs/server.crt -days 365 -nodes -subj "/CN=localhost" -
构建并运行:
npm run build npm start
配置
复制 .env.example 到 .env 并配置:
| 变量 | 必填 | 描述 |
|---|---|---|
MCP_TOKEN |
是 | MCP客户端的身份验证令牌 |
MCP_PORT |
否 | 服务器端口(默认值:8443) |
USE_HTTPS |
否 | 使用HTTPS(默认值:true) |
SSL_CERT_PATH |
否 | SSL证书的路径 |
SSL_KEY_PATH |
否 | SSL私钥路径 |
ALLOWED_PATHS |
否 | 文件系统访问的逗号分隔路径 |
OBSIDIAN_VAULT_PATH |
否 | 黑曜石拱顶路径 |
DB_PATH |
否 | SQLite数据库的路径 |
UNIFI_HOST |
否 | UniFi控制器IP/主机名 |
UNIFI_API_KEY |
否 | UniFi API密钥 |
UNIFI_SITE |
否 | UniFi站点名称(默认:“默认”) |
用法
发展
npm run dev # Run with tsx (hot reload)
生产
npm run build # Compile TypeScript
npm start # Run compiled server
系统化服务
创建 /etc/systemd/system/mcp-server.service:
[Unit]
Description=MCP Server
After=network.target
[Service]
Type=simple
User=your-user
WorkingDirectory=/path/to/mcp-server
ExecStart=/usr/bin/npm start
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
然后:
sudo systemctl daemon-reload
sudo systemctl enable mcp-server
sudo systemctl start mcp-server
连接客户
克劳德代码(CLI)
claude mcp add --transport http my-mcp https://your-server.example.com:8443/mcp \
--header "Authorization: Bearer YOUR_MCP_TOKEN"
或添加到您的项目 .mcp.json:
{
"mcpServers": {
"my-mcp": {
"url": "https://your-server.example.com:8443/mcp",
"headers": {
"Authorization": "Bearer YOUR_MCP_TOKEN"
}
}
}
}
克劳德桌面版
添加到您的Claude Desktop配置文件中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"my-mcp": {
"url": "https://your-server.example.com:8443/mcp",
"headers": {
"Authorization": "Bearer YOUR_MCP_TOKEN"
}
}
}
}
保存后重新启动Claude Desktop。
可用工具
看 docs/tools-reference.md 获取完整的工具文档。
工具类别
| 类别 | 工具 | 描述 |
|---|---|---|
| 文件系统 | 4 | 文件读/写/列表/搜索 |
| 系统 | 4 | 系统信息和命令 |
| 黑曜石 | 4 | 保险库笔记和搜索 |
| 数据库 | 3 | SQLite查询 |
| UniFi | 19 | 网络管理和安全 |
总计:34个工具
项目结构
mcp-server/
├── src/
│ ├── index.ts # Entry point
│ ├── server.ts # Express + MCP setup
│ ├── auth.ts # Token authentication
│ └── tools/
│ ├── index.ts # Tool registry
│ ├── filesystem.ts # File operations
│ ├── system.ts # System commands
│ ├── obsidian.ts # Obsidian vault
│ ├── database.ts # SQLite queries
│ └── unifi.ts # UniFi controller
├── docs/ # Documentation
├── certs/ # TLS certificates (not in repo)
├── dist/ # Compiled output (not in repo)
├── .env # Configuration (not in repo)
└── .env.example # Example configuration
API终点
服务器提供两种访问工具的方式:
REST API(简单)
无需MCP协议握手即可直接访问工具。最适合脚本、自动化和测试。
| 端点 | 方法 | 身份验证 | 描述 |
|---|---|---|---|
/health |
GET | 否 | 健康检查 |
/api/tools |
GET | 是 | 列出所有具有模式的可用工具 |
/api/tools/:name |
GET | 是 | 获取特定工具的信息 |
/api/tools/:name |
POST | 是 | 执行一个工具(请求体中的参数) |
示例-调用工具的单个请求:
curl -X POST https://your-server.example.com:8443/api/tools/unifi_get_network_health \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'
响应格式:
{
"success": true,
"tool": "unifi_get_network_health",
"data": { ... }
}
MCP协议(完整)
带会话管理的标准MCP协议。克劳德代码和克劳德桌面需要。
| 端点 | 方法 | 身份验证 | 描述 |
|---|---|---|---|
/mcp |
GET | 是 | 服务器信息 |
/mcp |
POST | 是 | MCP协议消息 |
/mcp |
DELETE | 是 | 关闭会话 |
许可证
ISC
贡献
欢迎投稿!请随时提交问题和拉取请求。