模型上下文协议服务器

一个远程模型上下文协议(MCP)服务器实现,为AI助手提供与外部服务交互和执行各种操作的工具。

  • by crebish
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 crebish/mcp-server

使用说明

MCP服务器

一种远程模型上下文协议(MCP)服务器实现,为AI助手提供与外部服务交互和执行各种操作的工具。

概述

此MCP服务器实现 模型上下文协议 规范,允许AI助手通过标准化的JSON-RPC接口访问自定义工具和功能。服务器在端口8000上运行,并为基本操作和会话归档提供了几个内置工具。

特性

  • JSON-RPC 2.0协议:全面实施MCP规范
  • 内置工具:
    • add:执行基本算术运算
    • reverse:反转文本字符串
    • save_conversation:将对话存档到aiarchives.duckdns.org
  • 健康监测:内置健康检查端点
  • CORS支持:已启用跨源资源共享
  • 错误处理:使用正确的JSON-RPC错误代码进行全面的错误处理

先决条件

  • Node.js(版本16或更高)
  • npm或yarn包管理器

用法

配置Claude桌面

要将此MCP服务器与Claude Desktop一起使用,您需要将其添加到Claude Desktop配置文件中。

查找配置文件

  1. 打开克劳德桌面
  2. 首选 设置 (左下角的齿轮图标)
  3. 点击 高级 在左侧边栏中
  4. 点击 打开配置文件夹 -这将打开包含以下内容的文件夹 claude_desktop_config.json
  5. 打开 claude_desktop_config.json 在首选文本编辑器中创建文件

添加MCP服务器配置

将以下配置添加到您的 claude_desktop_config.json 文件:

{
  "mcpServers": {
    "aiarchives": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://aiarchives.duckdns.org/mcp",
        "--allow-http",
        "--transport",
        "http-only"
      ]
    }
  }
}

注: 请确保在更改配置文件后重新启动Claude Desktop。

服务器访问

此MCP服务器远程托管,可访问 https://aiarchives.duckdns.org/mcp。如上所述配置完Claude Desktop后,您可以立即开始使用可用的工具,而无需在本地运行任何东西。

注: 服务器始终在运行,并准备通过MCP协议接受请求。

本地部署(可选)

如果您想在本地运行服务器进行开发或测试:

  1. 启动服务器:

    npm start
    

    或者直接用Node.js运行:

    node server-mcp.js
    
  2. 更新Claude Desktop配置 指向您的本地服务器:

    {
      "mcpServers": {
        "aiarchives": {
          "command": "npx",
          "args": [
            "-y",
            "mcp-remote",
            "http://localhost:8000/mcp",
            "--allow-http",
            "--transport",
            "http-only"
          ]
        }
      }
    }
    

重要提示: 在本地运行时 save_conversation 该工具将无法工作,因为它依赖于仅在托管服务器上可用的远程aiarchives API。这 add 和 reverse 工具将正常工作。

可用端点

发布 /mcp

处理JSON-RPC请求的主MCP协议端点。

请求示例:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list"
}

获取 /health

返回服务器状态的健康检查终结点。

答复:

{
  "status": "healthy",
  "server": "Remote MCP Server",
  "timestamp": "2024-01-01T00:00:00.000Z"
}

获取 /mcp

确认服务器正在运行的调试终结点。

可用工具

1. add

执行两个数字的加法。

参数:

  • a (number):第一个数字
  • b (number):第二个数字

例子:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "add",
    "arguments": {
      "a": 5,
      "b": 3
    }
  }
}

2. reverse

反转文本字符串。

参数:

  • text (string):要反转的文本

例子:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "reverse",
    "arguments": {
      "text": "Hello World"
    }
  }
}

3. save_conversation

将对话内容保存到aiarchives.duckdns.org,并返回一个可共享的URL。

参数:

  • conversation (string):HTML或纯文本形式的完整对话内容

例子:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "save_conversation",
    "arguments": {
      "conversation": "<html><body>Conversation content...</body></html>"
    }
  }
}

MCP协议方法

服务器实现以下MCP协议方法:

  • initialize:初始化MCP连接
  • tools/list:列出可用工具
  • tools/call:执行特定工具
  • notifications/initialized:处理客户端初始化通知
  • notifications/cancelled:处理请求取消通知

错误处理

服务器返回正确的JSON-RPC 2.0错误响应和标准错误代码:

  • -32600:无效请求
  • -32601:未找到方法
  • -32602:无效参数
  • -32603:内部错误

发展

项目结构

mcp-server/
├── server-mcp.js      # Main server implementation
├── package.json       # Dependencies and scripts
├── .gitignore        # Git ignore rules
└── README.md         # This file

添加新工具

要添加新工具,请修改 tools/list 响应并在中添加相应的案例 tools/call switch语句 server-mcp.js.

测试

目前,还没有自动测试。您可以使用curl或任何HTTP客户端手动测试服务器:

# Health check
curl http://localhost:8000/health

# List tools
curl -X POST http://localhost:8000/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

依赖项

  • 表达:Node.js的Web框架
  • 正文分析器:用于解析请求体的中间件
  • 课程:跨源资源共享中间件