Neron MCP服务器
为Claude Desktop和MCP客户端提供OAuth 2.1身份验证的安全MCP服务器。
建筑
Client (Claude Desktop) → HTTPS → Caddy Reverse Proxy
↓
┌────────────────┴────────────────┐
↓ ↓
OAuth Server (port 8001) MCP Server (port 8000)
- /authorize - Token validation
- /token - MCP tools
- /register - Database queries
- Discovery endpoints特性
- OAuth 2.1授权:Claude Desktop的完整OAuth流程
- 语义搜索:使用Voyage AI嵌入查询笔记
- 基于日期的检索:获取特定日期的笔记
- 超文本传输安全协议:自动加密证书
- 基于令牌的身份验证:承载令牌验证
安装
先决条件
- Python 3.8+
- PostgreSQL与pgvector
- Caddy网络服务器
- Voyage AI API键
设置
- 安装依赖项:
cd /home/Neron-MCP
source venv/bin/activate
pip install -r requirements.txt- 配置环境 (
.env文件):
- MCP_AUTH_TOKEN:承载令牌(由OAuth流返回) - VOYAGE_API_KEY:Voyage AI API键 - DB_PASSWORD:PostgreSQL密码 - SERVER_DOMAIN:您的域名(例如,mcp.neron.guru)
- 安装服务:
# OAuth server
sudo cp neron-oauth.service /etc/systemd/system/
sudo systemctl enable neron-oauth
sudo systemctl start neron-oauth
# MCP server
sudo cp neron-mcp.service /etc/systemd/system/
sudo systemctl enable neron-mcp
sudo systemctl start neron-mcp
# Caddy
sudo cp Caddyfile /etc/caddy/Caddyfile
sudo systemctl restart caddyOAuth流
服务器实现了 简化的OAuth 2.1流程:
- 客户端通过以下方式发现OAuth服务器
/.well-known/oauth-authorization-server - 客户通过以下方式注册
/register端点 - 客户端重定向到
/authorize征得用户同意 - 用户点击“授权”按钮
- 服务器使用授权码重定向回
- 客户在以下地址交换不记名代币代码
/token - 客户端对所有MCP请求使用令牌
备注:OAuth服务器始终从以下位置返回相同的承载令牌 .env 为了简单起见。授权所有设备后,您可以关闭OAuth服务器(端口8001)-MCP服务器将继续验证令牌。
技术细节:
- 使用303 See Other重定向转换POST→ GET用于OAuth回调
- CORS已启用,可进行跨源令牌交换
- S256代码挑战方法支持PKCE
从克劳德桌面连接
- 将服务器配置添加到Claude Desktop
- Claude将打开浏览器进行授权
- 在浏览器中单击“授权”
- Claude Desktop自动接收令牌
- 开始使用MCP工具
服务器URL: https://mcp.neron.guru
可用工具
1.get_notes_per_day
{"day": "2025-12-14"}2.获取所有注释
无需参数。
3.搜索
{"text": "meeting notes", "top_k": 5}数据库
连接到现有的PostgreSQL数据库:
- 数据库:Postgres
- 表格:neron
- 矢量维度:1024(航程3小时)
与Neron Bot共享数据输入。
监控
检查服务
sudo systemctl status neron-oauth
sudo systemctl status neron-mcp
sudo systemctl status caddy查看日志
# OAuth server
sudo journalctl -u neron-oauth -f
# MCP server
sudo journalctl -u neron-mcp -f
# Caddy
sudo tail -f /var/log/caddy/mcp-neron.log测试终点
# OAuth discovery
curl https://mcp.neron.guru/.well-known/oauth-authorization-server
# Protected resource metadata
curl https://mcp.neron.guru/.well-known/oauth-protected-resource
# MCP endpoint (requires token)
curl -H "Authorization: Bearer " https://mcp.neron.guru安全
- ✅ OAuth 2.1与PKCE(S256代码挑战)
- ✅ 仅限HTTPS(TLS 1.2+)
- ✅ 对每个请求进行承载令牌验证
- ✅ 符合CORS的OAuth实现
- ✅ 未存储密码(单用户身份验证)
- ✅ 可以在初始设置后禁用OAuth服务器
- ✅ 受保护的资源元数据(RFC 9728)
关闭OAuth服务器
授权您的所有设备后:
sudo systemctl stop neron-oauth
sudo systemctl disable neron-oauthMCP服务器将继续使用现有令牌。仅在添加新设备时重新启用OAuth服务器:
sudo systemctl enable neron-oauth
sudo systemctl start neron-oauth文件
├── server.py # MCP server core (3 tools)
├── http_server.py # MCP HTTP wrapper with token validation
├── fake_oauth_server.py # OAuth 2.1 authorization server
├── db_connector.py # Database operations
├── config.py # Configuration
├── requirements.txt # Dependencies
├── Caddyfile # HTTPS routing
├── neron-mcp.service # MCP systemd service
├── neron-oauth.service # OAuth systemd service
└── .env # Secrets (not in git)故障排除
OAuth服务器没有响应
sudo systemctl status neron-oauth
sudo journalctl -u neron-oauth -n 50MCP服务器连接问题
# Check if service is running
sudo systemctl status neron-mcp
# Verify token in .env matches what Claude has
grep MCP_AUTH_TOKEN /home/Neron-MCP/.env
# Test token manually
curl -H "Authorization: Bearer YOUR_TOKEN" https://mcp.neron.guruClaude桌面授权失败
- 确保OAuth服务器正在运行:
sudo systemctl start neron-oauth - 检查浏览器控制台是否有错误
- 验证域是否可访问:
curl https://mcp.neron.guru/.well-known/oauth-authorization-server - 查看Caddy日志:
sudo tail -f /var/log/caddy/mcp-neron.log
许可证
私人项目。
