使用说明
模型上下文协议(MCP)服务器
模型上下文协议的简单服务器实现,为多个人工智能模型提供商提供统一的API。
特性
- 适用于多个人工智能提供商的统一API(Anthropic、OpenAI)
- 支持聊天完成和传统完成
- 工具调用支持
- 上下文/系统消息处理
- 基于环境的配置
- 用于持久性和状态管理的MongoDB数据库
- 工具执行历史和分析
安装
# Clone the repository
git clone <repository-url>
cd testmcp
# Install dependencies
npm install
# Run the interactive setup
npm run setup
设置脚本将指导您配置必要的API密钥:
ANTHROPIC_API_KEY-适用于克劳德模特OPENAI_API_KEY-用于GPT模型和DALL-E映像生成STABILITY_API_KEY-用于生成稳定扩散图像GOOGLE_CSE_API_KEY和GOOGLE_CSE_ID-用于网络搜索功能BING_SEARCH_API_KEY-用于回退网络搜索
您还可以手动编辑 .env 文件,如果你喜欢。
MongoDB设置
MCP服务器使用MongoDB进行数据持久化。您有几个设置MongoDB的选项:
选项1:自动设置(推荐)
运行MongoDB安装脚本,它将指导您完成整个过程:
# Run the MongoDB setup script
npm run setup-mongodb
此脚本将:
- 检查Docker是否可用
- 使用Docker Compose启动MongoDB(如果可用)
- 在.env文件中配置连接
- 验证MongoDB连接
选项2:手动Docker设置
开始使用MongoDB的最简单方法是使用附带的Docker Compose配置:
# Start MongoDB and Mongo Express in Docker
docker compose up -d
# Update your .env file with the connection string
echo "MONGODB_URI=mongodb://mcpuser:mcppassword@localhost:27017/mcp-server" >> .env
MongoDB将在 mongodb://mcpuser:mcppassword@localhost:27017/mcp-server
Mongo Express(网络管理员)将在 http://localhost:8081
选项3:本地MongoDB安装
如果您更喜欢在本地安装MongoDB:
- 从以下位置安装MongoDB https://www.mongodb.com/try/download/community
- 启动MongoDB服务
- 更新您的
.env文件包含:MONGODB_URI=mongodb://localhost:27017/mcp-server
选项4:MongoDB Atlas(云)
对于生产使用,建议使用MongoDB Atlas:
- 在以下网址创建帐户 https://www.mongodb.com/cloud/atlas
- 创建新集群
- 设置数据库用户并将您的IP地址列入白名单
- 获取您的连接字符串并更新您的
.env文件:MONGODB_URI=mongodb+srv://<username>:<password>@<cluster>.mongodb.net/mcp-server?retryWrites=true&w=majority
数据库迁移
要将现有数据迁移到MongoDB:
# Run the migration script
npm run migrate-mongodb
此脚本将:
- 将工具定义迁移到MongoDB
- 将配置(如API密钥)迁移到MongoDB
- 导入任何可用的备份数据
用法
启动服务器
# Interactive startup (checks for API keys)
npm start
# Development mode with auto-reload
npm run dev
# Quick start (skips environment checks)
npm run quick-start
# Start server with PM2 process manager
npm run pm2:start
# Start server with PM2 in production mode
npm run pm2:start:prod
服务器将在以下时间运行http://localhost:3000(或您在.env中指定的端口)。
启动选项
-
标准启动 (
npm start):- 检查是否配置了API密钥
- 如果找不到密钥,则提示进行设置
- 建议首次使用
-
发展模式 (
npm run dev):- 使用nodemon在代码更改时自动重新加载
- 仍执行环境检查
- 最有利于发展
-
快速开始 (
npm run quick-start):- 绕过所有环境检查
- 立即启动服务器
- 当您知道您的配置正确时很有用
-
PM2生产模式 (
npm run pm2:start:prod):- 使用PM2进程管理器运行服务器
- 如果服务器崩溃,则自动重新启动
- 针对生产环境进行了优化
- 绕过环境检查
使用PM2流程管理器
该服务器可以使用PM2运行,PM2是Node.js应用程序的生产流程管理器。PM2提供以下功能:
- 进程管理(崩溃时重新启动)
- 日志管理
- 性能监控
- 负载平衡(适用于多个实例)
PM2命令
# Start the server with PM2
npm run pm2:start
# Start in production mode
npm run pm2:start:prod
# View logs
npm run pm2:logs
# Monitor performance
npm run pm2:monit
# Restart the server
npm run pm2:restart
# Stop the server
npm run pm2:stop
# Remove the server from PM2
npm run pm2:delete
PM2配置存储在 ecosystem.config.js。您可以修改此文件以更改:
- 进程名称
- 环境变量
- 内存限制
- 部署配置
- 实例数(用于负载平衡)
API终点
POST /mcp/:provider
通过统一的API向人工智能模型提出请求。
URL参数:
provider:要使用的AI提供商(anthropic或openai)
请求正文:
{
"messages": [
{ "role": "user", "content": "Your prompt here" }
],
"model": "claude-3-opus-20240229", // Optional, provider-specific model name
"tools": [...], // Optional, tools for function calling
"context": "System message or context" // Optional
}
OR(传统格式):
{
"prompt": "Your prompt here",
"model": "claude-3-opus-20240229", // Optional
"context": "System message or context" // Optional
}
答复: 返回来自提供程序的API的原始响应。
GET /tools/available
获取所有可用工具的完整列表和详细信息。
查询参数:
format-响应格式:json(默认),yaml,table,或htmlcategory-按类别筛选工具(可选)enabled-按启用状态筛选:true(默认)或falsesearch-按名称、描述或标签搜索工具provider-按提供商过滤工具(例如。,openai,google)limit-要返回的最大工具数(用于分页)offset-分页偏移量(默认值:0)
响应(JSON格式):
{
"success": true,
"count": 10,
"metadata": {
"categories": ["web", "image", "utility"],
"providers": ["openai", "anthropic", "internal"],
"totalCount": 24,
"offset": 0,
"limit": 10
},
"tools": [
{
"name": "web_search",
"description": "Search the web for information",
"category": "web",
"version": "1.0.0",
"provider": "google",
"enabled": true,
"parameters": {
"query": {
"type": "string",
"description": "The search query",
"required": true
},
"limit": {
"type": "number",
"description": "Maximum number of results",
"required": false,
"default": 5
}
},
"usage": {
"endpoint": "/tools/web/search",
"method": "POST",
"parameters": { /* same as above */ }
},
"metadata": {
"createdAt": "2023-10-15T12:00:00Z",
"updatedAt": "2024-04-20T09:30:00Z",
"usageCount": 1245
}
}
// ... more tools
]
}
GET /health
如果服务器正在运行,则返回状态200的健康检查端点。
数据管理
数据库备份
您可以创建和管理数据库备份:
# Create a full backup
npm run backup-mongodb
# Create a backup with execution history
npm run backup-mongodb -- --with-executions
# List existing backups
npm run backup-mongodb -- --list
测试数据库连接
要验证您的MongoDB设置:
# Run the database test script
npm run test-mongodb
客户示例
命令行客户端
测试客户端包含在 src/client.js。要运行它,请执行以下操作:
node src/client.js
网络客户端
一个简单的web界面可在http://localhost:3000当服务器正在运行时。您可以使用它直接从浏览器测试API。
可用工具
MCP服务器提供了一个工具发现端点,允许用户和AI代理以编程方式列出所有可用工具:
工具发现
GET /tools/available -列出所有可用工具及其详细信息。
- 支持多种格式:JSON、YAML、HTML和ASCII表
- 提供按类别、提供者和搜索词进行筛选
- 包括每个工具的详细元数据和使用示例
示例用法:
# Get all tools in JSON format
curl http://localhost:3000/tools/available
# Get tools in a specific category
curl http://localhost:3000/tools/available?category=web
# Search for image-related tools
curl http://localhost:3000/tools/available?search=image
# Get a formatted HTML page of all tools
curl http://localhost:3000/tools/available?format=html > tools.html
网络搜索工具
该服务器包括内置的网络搜索和检索工具:
-
网页搜索 (
/tools/web/search)- 在网络上搜索给定查询的信息
- 参数:
query(必填),limit(可选) - 要求:
GOOGLE_CSE_API_KEY和GOOGLE_CSE_ID环境变量 - 回落到
BING_SEARCH_API_KEY如果谷歌搜索失败
-
Web内容 (
/tools/web/content)- 从特定URL检索和提取内容
- 参数:
url(必填),useCache(可选)
-
Web批处理 (
/tools/web/batch)- 并行从多个URL检索内容
- 参数:
urls(所需数组),useCache(可选)
图像生成工具
该服务器还包括图像生成、编辑和变体工具:
-
生成图像 (
/tools/image/generate)- 根据文本提示生成图像
- 参数:
prompt(必填):图像的详细描述provider(可选):openai或stability(默认为openai)options(可选):特定于提供商的选项
-
编辑图像 (
/tools/image/edit)- 使用文本提示编辑现有图像
- 参数:
imagePath(必填):要编辑的图像的路径prompt(必填):要进行的编辑的描述maskPath(可选):遮罩图像的路径
-
创建图像变体 (
/tools/image/variation)- 创建现有图像的变体
- 参数:
imagePath(必填):创建图像变体的路径
注: 要使用这些工具,您需要在
.env文件:
- 对于OpenAI图像:
OPENAI_API_KEY- 对于Stability AI图像:
STABILITY_API_KEY- 对于网络搜索:
GOOGLE_CSE_API_KEY和GOOGLE_CSE_ID
工具与AI模型的集成
MCP服务器自动处理AI模型的工具调用和执行。当模型决定使用工具时,服务器:
- 使用提供的参数执行请求的工具
- 返回工具对模型的响应
- 然后,模型可以将工具的响应纳入其最终答案中
AI模型的工具发现
AI模型可以使用 /tools/available 端点,以发现可用的工具以及如何使用它们。这对于以下情况特别有用:
- 运行时动态工具发现
- AI代理的自我文档
- 使人工智能系统能够适应可用功能
AI模型的示例系统提示:
You have access to external tools through the MCP server.
Before using any tools, you should check what tools are available by calling:
GET /tools/available
This will return a list of all available tools with their parameters and usage instructions.
You can then use these tools by following the provided usage patterns.
工具使用示例
看 /examples 演示工具使用的示例代码目录。
添加新的提供者或工具
添加新的AI提供商
要添加新的AI提供商:
- 将提供者的SDK添加到项目中
- 在中创建新的处理程序函数
server.js - 在主路由处理程序中添加新案例
添加新工具
要向服务器添加新工具,请执行以下操作:
- 在中创建新的工具实现
/src/tools目录 - 将工具定义添加到
tool-definitions.js - 更新中的工具执行功能
server.js - 添加新的API端点以直接使用工具(如果需要)
许可证
GNU MIT