于阿里云Dify的高德地图MCP服务器完整配置教程
准备工作
第一步:获取高德地图API Key
访问高德开放平台 打开浏览器,输入网址 高德开放平台 | 高德地图API 进入高德地图开放平台。
注册并登录账号
- 如果是新用户,点击"注册"按钮完成账号注册
- 已有账号直接登录
进入控制台 登录成功后,点击右上角"控制台"进入管理界面。
创建新应用
- 在左侧导航栏选择"应用管理" → "我的应用"
- 点击"创建新应用"按钮
- 填写应用信息:
- 应用名称:Dify地图服务
- 应用类型:选择"Web服务"
- 服务平台:根据实际需要选择
- 点击"确定"完成创建
获取API Key
- 在新创建的应用详情页中找到"Key"字段
- 点击"复制"按钮保存该Key值
- 建议将该Key保存在安全的位置(如密码管理器)
第二步:准备阿里云轻量应用服务器
登录阿里云控制台
- 访问 阿里云-计算,为了无法计算的价值
- 使用阿里云账号登录
购买轻量应用服务器
- 在控制台搜索"轻量应用服务器"
- 点击"立即购买"
- 推荐配置:
- 地域:选择离用户最近的区域
- 实例规格:2核CPU、4GB内存
- 系统镜像:Ubuntu 20.04 LTS
- 存储:至少60GB SSD
- 带宽:建议5Mbps及以上
配置安全组规则
- 在实例详情页找到"安全组"配置
- 添加以下端口规则:
- 80端口(HTTP)
- 443端口(HTTPS)
- 3000端口(Dify默认端口)
- 8000端口(备用API端口)
- 设置源IP为0.0.0.0/0(允许所有IP访问)或指定特定IP段
部署Dify平台
步骤一:部署Dify
1.1 连接服务器
# 使用终端SSH连接到你的阿里云服务器
# 替换以下命令中的IP地址和密码
ssh root@你的服务器IP
# 输入服务器密码后按回车
1.2 安装Docker和Docker Compose
# 更新系统软件包
apt update && apt upgrade -y
# 安装必要的依赖
apt install -y apt-transport-https ca-certificates curl software-properties-common
# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –
# 添加Docker稳定版仓库
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 再次更新软件包索引
apt update
# 安装Docker CE
apt install -y docker-ce docker-ce-cli containerd.io
# 验证Docker安装
docker –version
# 安装Docker Compose
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 赋予执行权限
chmod +x /usr/local/bin/docker-compose
# 验证Docker Compose安装
docker-compose –version
# 启动Docker服务并设置开机自启
systemctl start docker
systemctl enable docker
1.3 部署Dify
# 克隆Dify官方GitHub仓库
git clone https://github.com/langgenius/dify.git
# 进入docker目录
cd dify/docker
# 复制环境变量示例文件
cp .env.example .env
# 使用vim编辑环境变量文件
vim .env
1.4 配置.env文件
# 基础配置
CONSOLE_WEB_URL=http://你的服务器IP
CONSOLE_API_URL=http://你的服务器IP/console/api
SERVICE_API_URL=http://你的服务器IP/v1
APP_WEB_URL=http://你的服务器IP/app
# 数据库配置
POSTGRES_HOST=db
POSTGRES_PORT=5432
POSTGRES_DB=dify
POSTGRES_USER=postgres
POSTGRES_PASSWORD=difyai123456 # 建议更改为更复杂的密码
# Redis配置
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD= # 如需安全访问可设置密码
# 重要:允许安装未验证插件
FORCE_VERIFYING_SIGNATURE=false # 必须设置为false才能使用高德地图插件
# 其他配置
SECRET_KEY=sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U # 建议更改为随机字符串
ENCRYPT_PUBLIC_KEY=你的加密公钥 # 可保留默认或生成新的
# 高德地图MCP服务器配置
MCP_SERVERS_CONFIG='{
"mcpServers": {
"amap-amap-sse": {
"url": "https://mcp.amap.com/sse?key=您的高德API Key"
}
}
}'
# 1.5 启动Dify服务
## 启动所有服务
执行以下命令启动所有Dify容器服务:
```bash
docker-compose up -d
该命令将以守护进程模式(-d)启动docker-compose.yml中定义的所有服务。
查看服务状态
启动完成后,检查服务运行状态:
docker-compose ps
正常状态下应显示:
Name Command State Ports
———————————————————————————-
dify-api /entrypoint.sh /bin/bash -c … Up (healthy) 5000/tcp
dify-backend /entrypoint.sh /bin/bash -c … Up (healthy)
dify-frontend /docker-entrypoint.sh ngin … Up (healthy) 80/tcp, 443/tcp
dify-mysql docker-entrypoint.sh mysqld Up (healthy) 3306/tcp, 33060/tcp
dify-redis docker-entrypoint.sh redis … Up (healthy) 6379/tcp
2. 登录Dify和接入大模型
2.1 访问Dify控制台
- 创建管理员账号(建议使用强密码)
- 完成系统初始化配置(选择语言、时区等)
- 设置组织信息
2.2 配置大模型
- 选择OpenAI或其他支持的模型提供商
- 输入有效的API Key
- 点击"测试连接"验证配置
- 确保API Key有足够额度
- 建议创建专用API Key用于Dify
- 可以配置多个模型供应商作为备用
3. 安装MCP插件
3.1 安装Agent策略插件
# 进入Dify API容器
docker exec -it dify-api bash
# 下载插件安装脚本
curl -o install_plugin.py https://raw.githubusercontent.com/junjiem/dify-plugin-agent-mcp_sse/main/scripts/install_plugin.py
# 安装插件(版本0.0.6)
python install_plugin.py https://github.com/junjiem/dify-plugin-agent-mcp_sse/releases/download/v0.0.6/junjiem-agent_mcp_sse-0.0.6.difypkg
# 退出容器并重启服务
exit
docker-compose restart api
3.2 安装MCP SSE工具插件
# 再次进入容器
docker exec -it dify-api bash
# 安装SSE工具插件
python install_plugin.py https://github.com/junjiem/dify-plugin-tools-mcp_sse/releases/download/v0.0.6/junjiem-mcp_sse-0.0.6.difypkg
# 退出并重启
exit
docker-compose restart api
插件安装完成后:
- HTTP with SSE
- Streamable HTTP
- 粘贴MCP Server配置地址
- 示例地址:http://<server_ip>:3000
4. 验证插件安装
- Agent策略(支持 MCP 工具)
- MCP SSE
5. 创建高德地图MCP服务器
5.1 创建项目
# 创建项目目录
mkdir -p /opt/amap-mcp-server && cd $_
# 初始化Node.js项目
npm init -y
# 安装依赖
npm install @modelcontextprotocol/sdk axios dotenv
5.2 配置server.js
创建server.js文件,包含以下功能:
#!/usr/bin/env node
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
import axios from 'axios';
import 'dotenv/config';
const AMAP_API_KEY = process.env.AMAP_API_KEY;
const AMAP_BASE_URL = 'https://restapi.amap.com/v3';
// 服务器实现代码…
// 包含三个主要工具方法:
// – geocode(address, city)
// – regeocode(location)
// – aroundSearch(location, keywords, radius)
环境配置
AMAP_API_KEY=你的高德地图API_KEY
启动服务器
node server.js
提示:建议使用pm2等进程管理工具保持服务持续运行:
npm install -g pm2
pm2 start server.js –name amap-mcp
5.3 配置环境变量
创建 .env 文件用于存储敏感信息和配置参数:
# 高德地图开发者API Key
AMAP_API_KEY=你的高德地图API_Key
# 调试模式设置
DEBUG=true
# 服务器端口配置
PORT=3000
# MCP签名验证设置(开发环境可关闭)
FORCE_VERIFYING_SIGNATURE=false
注意事项:
5.4 配置package.json
完整项目配置文件示例:
{
"name": "amap-mcp-server",
"version": "1.0.0",
"description": "高德地图MCP服务集成",
"type": "module",
"main": "server.js",
"scripts": {
"start": "node server.js",
"dev": "nodemon server.js",
"test": "jest"
},
"dependencies": {
"@modelcontextprotocol/sdk": "^0.5.0",
"axios": "^1.6.0",
"dotenv": "^16.3.0",
"express": "^4.18.2",
"cors": "^2.8.5"
},
"devDependencies": {
"nodemon": "^3.0.2",
"jest": "^29.7.0"
},
"engines": {
"node": ">=16.0.0"
}
}
配置说明:
5.5 启动MCP服务器
详细启动流程:
# 1. 安装项目依赖
npm install
# 2. 开发模式启动(使用nodemon自动重启)
npm run dev
# 3. 生产环境启动
npm start
# 4. 测试运行
npm test
启动后检查:
6.1 创建智能助手应用
详细创建步骤:
- 应用名称:地图助手
- 应用分类:工具类
- 应用描述:基于高德地图的智能位置服务助手
6.2 配置系统提示词
旅游助手模板的详细配置:
你是一位智能旅游助手,名字叫地图小助手,专门为用户提供地理位置和旅游信息查询服务。
服务规则:
1、优先使用MCP地图工具获取准确的地理信息;
2、当用户询问"位置信息"时,请这样回答:"该地点位于[省市区],具体地址为[详细地址],经纬度坐标为[经度,纬度]";
3、当用户询问"周边景点"时,请这样回答:"该位置周边主要景点有:[景点1](距离约X公里)、[景点2](距离约X公里)、[景点3](距离约X公里)";
4、当用户询问"交通指南"时,请这样回答:"可乘坐地铁[X号线]到[站名],或乘坐公交[线路号]到[站名];自驾车可通过[主要道路]到达,周边有停车场";
5、当用户询问"周边设施"时,请这样回答:"周边设施包括:餐饮([餐厅名称]等)、住宿([酒店名称]等)、购物([商场名称]等)、医疗([医院名称]等)";
6、当用户询问"最佳路线"时,请这样回答:"从[起点]到[终点],建议路线:[具体路线描述],预计用时[时间],距离约[公里数]";
7、如果无法查询到相关信息,请回复:"抱歉,暂时无法获取该位置的详细信息,建议您核实地址或稍后重试"。
6.3 添加MCP工具
详细配置步骤:
- HTTP模式:http://your-server-ip:3000/mcp
- Stdio模式:node /path/to/server.js
6.4 配置Agent策略
策略配置要点:
- 允许自动调用MCP工具
- 设置最大重试次数(建议3次)
- 配置工具调用超时(建议5000ms)
- 优先使用MCP获取的数据
- 次选内置知识库
7.1 使用PM2管理MCP服务器
生产环境部署指南:
# 全局安装PM2进程管理器
npm install -g pm2
# 创建PM2配置文件
cat > ecosystem.config.js << EOF
module.exports = {
apps: [{
name: 'amap-mcp-server',
script: 'server.js',
cwd: '/opt/amap-mcp-server',
instances: 2, // 根据CPU核心数设置
exec_mode: 'cluster',
autorestart: true,
watch: false,
max_memory_restart: '1G',
env: {
NODE_ENV: 'production',
AMAP_API_KEY: 'your_production_key'
},
log_date_format: 'YYYY-MM-DD HH:mm:ss',
error_file: '/var/log/mcp-server/err.log',
out_file: '/var/log/mcp-server/out.log',
merge_logs: true
}]
}
EOF
# 创建日志目录
mkdir -p /var/log/mcp-server
# 启动服务
pm2 start ecosystem.config.js
# 设置开机自启
pm2 save
pm2 startup
7.2 配置Nginx反向代理
安全部署方案:
# 安装Nginx
sudo apt update && sudo apt install -y nginx
# 创建SSL证书(可选)
sudo apt install -y certbot python3-certbot-nginx
sudo certbot –nginx -d yourdomain.com
# 配置Nginx
sudo tee /etc/nginx/sites-available/mcp-server << EOF
server {
listen 80;
server_name yourdomain.com;
return 301 https://\\$host\\$request_uri;
}
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade \\$http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host \\$host;
proxy_set_header X-Real-IP \\$remote_addr;
proxy_set_header X-Forwarded-For \\$proxy_add_x_forwarded_for;
proxy_cache_bypass \\$http_upgrade;
proxy_read_timeout 300;
}
access_log /var/log/nginx/mcp-access.log;
error_log /var/log/nginx/mcp-error.log;
}
EOF
# 启用配置
sudo ln -s /etc/nginx/sites-available/mcp-server /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
8.1 基础功能测试
测试用例表:
坐标查询 | "查询上海东方明珠的坐标" | 返回精确经纬度 |
逆地理编码 | "121.499740,31.239670在哪里" | 返回"上海市浦东新区" |
周边搜索 | "搜索北京西站附近的餐厅" | 返回5个餐厅信息 |
路径规划 | "从北京站到首都机场怎么走" | 返回多条交通方案 |
8.2 业务规则测试
格式验证要点:
常见问题解决
详细排错指南:
插件安装问题
- 检查Node.js版本(要求≥16)
- 确认依赖安装完整
- 查看npm错误日志
MCP连接问题
# 检查服务状态
curl -v http://localhost:3000/status
# 端口检测
netstat -tulnp | grep 3000
# 查看日志
journalctl -u mcp-server -f
API调用限制
- 实施请求缓存
- 使用批处理接口
- 监控API使用量
安全建议
- 定期轮换API Key
- 配置IP白名单
- 启用HTTPS加密
- 设置访问频率限制
评论前必须登录!
注册