MCP HTTP服务器-Node.js运行时
A. Docker优化 Node.js/TypeScript模型上下文协议(MCP)服务器的HTTP服务器,使用 mcp-server-as-http-core 二元的。
🎯 专注于Node.js:此实现专门针对Node.js和TypeScript MCP服务器进行了优化,具有自动依赖管理、TypeScript编译和npm/yarn/pnpm支持。
🐳 仅限Docker:此版本使用预构建的核心二进制文件,专注于Docker部署和Node.js环境优化。
🏗️ 建筑
mcp-server-as-http-node/
├── Dockerfile # Node.js optimized container
├── docker-compose.yml # Docker Compose configuration
├── docker-build.sh # Build and deployment script
├── mcp_servers.config.json # Node.js server examples
├── .env.example # Environment template
└── README.md # This file核心组件:
- 预构建二进制文件:用途
mcp-server-as-http-core二进制(在Docker镜像创建过程中构建) - Node.js环境:Node.js 18+,支持npm、npx和Git
- Docker优化:多阶段构建,实现最小运行时映像
- 卷管理:持久的npm缓存和MCP服务器存储
🚀 快速开始
先决条件
- 码头工人 和 Docker Compose
- Git (用于存储库克隆)
选项1:Docker Compose(推荐)
# Clone repository
git clone https://github.com/your-repo/mcp-server-as-http-node.git
cd mcp-server-as-http-node
# Copy and configure environment
cp .env.example .env
# Edit .env with your settings
# Start with Docker Compose
docker-compose up -d
# View logs
docker-compose logs -f选项2:构建脚本
# Clone repository
git clone https://github.com/your-repo/mcp-server-as-http-node.git
cd mcp-server-as-http-node
# Copy and configure environment
cp .env.example .env
# Edit .env with your settings
# Build and run
./docker-build.sh
# Or use docker-compose via script
./docker-build.sh --use-compose选项3:手动Docker
# Build image
docker build -t mcp-http-server-node .
# Run container
docker run -d \
--name mcp-http-server-node \
-p 3000:3000 \
--env-file .env \
-v mcp_cache:/tmp/mcp-servers \
-v npm_cache:/app/.npm-cache \
mcp-http-server-node⚙️ 配置
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
MCP_CONFIG_FILE | mcp_servers.config.json | MCP服务器配置路径 |
MCP_SERVER_NAME | redmine | 从配置中使用的服务器名称 |
PORT | 3000 | HTTP服务器端口 |
HTTP_API_KEY | - | 用于身份验证的承载令牌 |
DISABLE_AUTH | false | 禁用身份验证 |
NODE_PACKAGE_MANAGER | npm | 包管理器(npm/yarn/pnpm) |
ENABLE_TYPESCRIPT | true | 启用TypeScript编译 |
AUTO_INSTALL_DEPS | true | 自动安装依赖项 |
WORK_DIR | /tmp/mcp-servers | MCP服务器的工作目录 |
Node.js MCP服务器配置
重要:配置文件必须遵循 *.config.json 命名约定。在构建过程中,这些文件会自动复制到Docker容器中。
创建或更新 mcp_servers.config.json:
{
"version": "1.0",
"servers": {
"redmine": {
"repository": "https://github.com/yonaka15/mcp-server-redmine",
"build_command": "npm install && npm run build",
"command": "node",
"args": ["dist/index.js"],
"runtime_config": {
"node": {
"version": ">=18.0.0",
"package_manager": "npm"
}
}
}
}
}其他服务器示例
如果你想添加更多的服务器,这里有一些例子:
{
"version": "1.0",
"servers": {
"redmine": {
"repository": "https://github.com/yonaka15/mcp-server-redmine",
"build_command": "npm install && npm run build",
"command": "node",
"args": ["dist/index.js"],
"runtime_config": {
"node": {
"version": ">=18.0.0",
"package_manager": "npm"
}
}
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your-token"
}
},
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": "your-brave-api-key"
}
}
}
}🛠️ API使用
通过身份验证
curl -X POST http://localhost:3000/api/v1 \
-H "Authorization: Bearer your-secret-api-key" \
-H "Content-Type: application/json" \
-d '{"command": "{\"jsonrpc\": \"2.0\", \"id\": 1, \"method\": \"tools/list\", \"params\": {}}"}'无身份验证
集 DISABLE_AUTH=true 在……里面 .env:
curl -X POST http://localhost:3000/api/v1 \
-H "Content-Type: application/json" \
-d '{"command": "{\"jsonrpc\": \"2.0\", \"id\": 1, \"method\": \"tools/list\", \"params\": {}}"}'健康检查
curl -f http://localhost:3000/health🐳 Docker功能
多阶段构建
- 第1阶段:在图像创建过程中从源代码构建核心二进制文件
- 第2阶段:Node.js 18精简运行时,带有预构建的二进制文件
Node.js优化
- 自动npm缓存管理
- TypeScript编译支持
- 包管理器检测(npm/yarn/pnpm)
- Git存储库的克隆和构建
- 非root用户执行
卷管理
- mcp_cache:MCP服务器文件的持久存储
- npm_cache:NPM包缓存,以实现更快的构建
安全
- 非root用户执行(
mcpuser) - 运行时依赖性最小
- 健康检查端点
📊 监测和管理
查看日志
# Docker Compose
docker-compose logs -f
# Docker
docker logs -f mcp-http-server-node
# Build script helper
docker logs -f mcp-http-server-node容器管理
# Docker Compose
docker-compose up -d # Start
docker-compose down # Stop
docker-compose restart # Restart
# Docker
docker start mcp-http-server-node
docker stop mcp-http-server-node
docker restart mcp-http-server-node健康监测
# Check container health
docker inspect mcp-http-server-node | grep -A 10 Health
# Manual health check
curl -f http://localhost:3000/health
# Check running processes
docker exec mcp-http-server-node ps aux🔧 开发与调试
编译选项
# Build without cache
./docker-build.sh --no-cache
# Build only (don't run)
./docker-build.sh --build-only
# Custom port
./docker-build.sh --port 8080
# Use docker-compose
./docker-build.sh --use-compose调试
# Execute shell in container
docker exec -it mcp-http-server-node /bin/bash
# Check Node.js environment
docker exec mcp-http-server-node node --version
docker exec mcp-http-server-node npm --version
# Check Git availability
docker exec mcp-http-server-node git --version
# View environment variables
docker exec mcp-http-server-node env | grep MCP故障排除
# Check container status
docker ps -a | grep mcp-http-server-node
# Inspect container configuration
docker inspect mcp-http-server-node
# Check volume mounts
docker volume ls | grep mcp
docker volume inspect mcp_cache🧩 Node.js特定功能
自动依赖关系管理
- 发现
package.json并运行适当的包管理器 - 支持npm、yarn和pnpm
- 自动处理TypeScript编译
存储库支持
- 自动克隆Git存储库
- 在启动MCP服务器之前执行构建命令
- 管理隔离容器中的工作目录
环境验证
- 验证Node.js版本兼容性
- 检查npm/npx的可用性
- 报告存储库操作的Git状态
📦 预构建二进制文件
这个Docker镜像构建了 mcp-server-as-http-core 在图像创建过程中从源代码获取二进制文件。二进制文件提供:
- 高性能HTTP服务器(Rust/Axum)
- 身份验证中间件
- MCP服务器的流程管理
- 配置管理
- 运行时抽象
🔗 相关项目
- mcp服务器作为http核心:核心库和二进制文件
- mcp服务器作为http-python:Python运行时(计划中)
- mcp服务器作为httpdocker:Docker运行时中的Docker(计划中)
🤝 贡献
- 分叉存储库
- 克隆你的叉子:
git clone - 创建要素分支
- 进行更改(重点关注Docker、配置和文档)
- 测试用
./docker-build.sh --build-only - 提交拉取请求
核心变化
如需更改HTTP服务器功能,请向 mcp-server-as-http-core 存储库。
此存储库侧重于:
- Node.js环境下的Docker优化
- 配置管理
- 构建脚本和部署工具
- 文件和示例
📄 许可证
这个项目是MIT许可证下的开源项目。有关详细信息,请参阅LICENSE文件。
⚠️ 重要提示
- 需要Docker:此实现仅适用于Docker,需要Docker运行
- 无局部锈蚀:本地不需要Rust工具链-二进制文件是在Docker中构建的
- Node.js焦点:专门针对Node.js/TypeScript MCP服务器进行了优化
- 核心依赖:使用最新
mcp-server-as-http-core从源代码构建
🔄 更新
要更新到最新的核心服务器:
# Rebuild with latest core
./docker-build.sh --no-cache
# Or with docker-compose
docker-compose build --no-cacheDocker构建过程会自动拉取并构建核心服务器的最新版本。
🆘 支持
- 问题:报告此存储库中的错误和请求功能
- 核心问题:对于HTTP服务器核心功能,请使用 岩心库
- 讨论:使用GitHub讨论来回答问题和社区支持
______________________________________________________________________
内置于❤️ MCP(模型上下文协议)社区
🐳 Docker优化•🚀 以Node.js为中心⚡ 准备部署
