云计算百科
云计算领域专业知识百科平台

基于阿里云Dify的高德地图MCP服务器

 

于阿里云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控制台

  • 在浏览器访问:http://<你的服务器IP>
  • 首次访问需要:
    • 创建管理员账号(建议使用强密码)
    • 完成系统初始化配置(选择语言、时区等)
    • 设置组织信息
  • 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

    插件安装完成后:

  • 在Dify顶部菜单点击【工具】
  • 搜索框中输入"mcp"
  • 点击安装,选择传输方式:
    • HTTP with SSE
    • Streamable HTTP
  • 单次授权配置:
    • 粘贴MCP Server配置地址
    • 示例地址:http://<server_ip>:3000
  • 4. 验证插件安装

  • 登录Dify控制台
  • 进入【设置】→【插件管理】
  • 确认以下插件状态为"已启用":
    • 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文件,包含以下功能:

  • 地理编码(地址→坐标)
  • 逆地理编码(坐标→地址)
  • 周边POI搜索
  • #!/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)

    环境配置

  • 创建.env文件:
  • 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

    注意事项:

  • API Key应妥善保管,不要上传到公共代码仓库
  • 生产环境建议将DEBUG设置为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"
    }
    }

    配置说明:

  • type: "module" 支持ES模块
  • 添加了开发依赖和测试脚本
  • 指定了Node.js版本要求
  • 5.5 启动MCP服务器

    详细启动流程:

    # 1. 安装项目依赖
    npm install

    # 2. 开发模式启动(使用nodemon自动重启)
    npm run dev

    # 3. 生产环境启动
    npm start

    # 4. 测试运行
    npm test

    启动后检查:

  • 访问http://localhost:3000/status验证服务状态
  • 查看控制台输出确认无错误
  • 检查端口占用情况
  • 6.1 创建智能助手应用

    详细创建步骤:

  • 登录Dify控制台(https://cloud.dify.ai)
  • 进入"应用管理" → "新建应用"
  • 选择"智能助手"模板
  • 填写应用信息:
    • 应用名称:地图助手
    • 应用分类:工具类
    • 应用描述:基于高德地图的智能位置服务助手
  • 点击"确认创建"
  • 6.2 配置系统提示词

    旅游助手模板的详细配置:

    你是一位智能旅游助手,名字叫地图小助手,专门为用户提供地理位置和旅游信息查询服务。

    服务规则:
    1、优先使用MCP地图工具获取准确的地理信息;
    2、当用户询问"位置信息"时,请这样回答:"该地点位于[省市区],具体地址为[详细地址],经纬度坐标为[经度,纬度]";
    3、当用户询问"周边景点"时,请这样回答:"该位置周边主要景点有:[景点1](距离约X公里)、[景点2](距离约X公里)、[景点3](距离约X公里)";
    4、当用户询问"交通指南"时,请这样回答:"可乘坐地铁[X号线]到[站名],或乘坐公交[线路号]到[站名];自驾车可通过[主要道路]到达,周边有停车场";
    5、当用户询问"周边设施"时,请这样回答:"周边设施包括:餐饮([餐厅名称]等)、住宿([酒店名称]等)、购物([商场名称]等)、医疗([医院名称]等)";
    6、当用户询问"最佳路线"时,请这样回答:"从[起点]到[终点],建议路线:[具体路线描述],预计用时[时间],距离约[公里数]";
    7、如果无法查询到相关信息,请回复:"抱歉,暂时无法获取该位置的详细信息,建议您核实地址或稍后重试"。

    6.3 添加MCP工具

    详细配置步骤:

  • 在Dify应用编辑界面,导航至"工具配置"
  • 点击"添加工具"按钮
  • 选择"MCP SSE"类型
  • 配置连接方式:
    • HTTP模式:http://your-server-ip:3000/mcp
    • Stdio模式:node /path/to/server.js
  • 设置超时时间(建议30000ms)
  • 测试连接成功后保存配置
  • 6.4 配置Agent策略

    策略配置要点:

  • 选择"Agent策略(支持 MCP 工具)"
  • 设置工具调用权限:
    • 允许自动调用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加密
    • 设置访问频率限制
  • 赞(0)
    未经允许不得转载:网硕互联帮助中心 » 基于阿里云Dify的高德地图MCP服务器
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!