模型上下文协议服务器

一个基于Smithery部署的轻量级模型上下文协议服务器,提供问候、随机数生成、天气查询和OpenAI摘要生成等功能。

  • by FelixYifeiWang
  • JavaScript
  • 混合部署
  • 更新于
在 GitHub 查看 FelixYifeiWang/felix-mcp-smithery

使用说明

费利克斯·MCP(史密斯里)

一个小小的 模型上下文协议 部署在服务器上的几个实用工具 “Smithery”可以翻译为“铁匠铺”或“锻造工坊”。这个词汇结合了“Smith”(通常指铁匠或工匠)和“-ery”(表示某种场所或职业的后缀),共同表达了与铁匠工作或锻造活动相关的场所或工艺,经测试在 克劳德桌面版并被收录于 NANDA(南丁格尔护理诊断协会).

包含的工具

  • hello(name) – 快速问候
  • randomNumber(max?) – 随机整数(默认值为100)
  • weather(city) – 通过 wttr.in 查看当前天气
  • summarize(text, maxSentences?, model?) – 由OpenAI提供的摘要 (需要 OPENAI_API_KEY)

公共服务器页面 https://smithery.ai/server/@FelixYifeiWang/felix-mcp-smithery

MCP 端点(可流式传输的 HTTP) https://server.smithery.ai/@FelixYifeiWang/felix-mcp-smithery/mcp (在Smithery/NANDA中,认证信息通过查询参数附加) api_key 和可选的 profile在平台用户界面中进行配置;执行 不是 在这里硬编码秘密。)


演示

在Claude Desktop(推荐使用)

  1. 打开 设置 → 开发者 → mcp服务器 并补充:

    {
      "mcpServers": {
        "felix-mcp-smithery": {
          "command": "npx",
          "args": [
            "-y",
            "@smithery/cli@latest",
            "run",
            "@FelixYifeiWang/felix-mcp-smithery",
            "--key",
            "YOUR_SMITHERY_API_KEY",
            "--profile",
            "YOUR_PROFILE_ID"
          ]
        }
      }
    }
    
  2. 开始一个新的聊天并运行:

    • “列出工具列表 费利克斯-MCP-史密斯里(注:此翻译基于假设的英文原名,实际翻译可能因具体人名或背景而异,“felix-mcp-smithery”可能是一个虚构或特定语境下的名字)“
    • “Call 你好 与;带有;用 { "name": "Felix" }“
    • “Call 总结 关于这段文字(2句话):……”

特点/特性

  • 可流式传输的HTTP多播控制协议(或简化为:支持流式传输的HTTP MCP) – Express + MCP SDK(软件开发工具包) StreamableHTTPServerTransport 开启;在……上 /mcp (POST/GET/DELETE)(注:这通常指的是HTTP协议中的三种请求方法,分别翻译为“提交/获取/删除”,但通常在技术语境中直接使用英文缩写)。
  • 会话感知的 – 正确处理 Mcp-Session-Id (不关闭递归)。
  • OpenAI摘要生成 – 通过聊天完成提供简洁的总结(模型默认功能) gpt-4o-mini)。
  • 零摩擦托管 – 以容器形式打包并在Smithery上部署。

安装(本地)

需要 节点 18+ (在 Node 20 上测试)。

git clone https://github.com/FelixYifeiWang/felix-mcp-smithery
cd felix-mcp-smithery
npm install

设置环境(仅在需要调用时需要) summarize (本地):

export OPENAI_API_KEY="sk-..."

运行:

node index.js
# ✅ MCP Streamable HTTP server on 0.0.0.0:8081 (POST/GET/DELETE /mcp)

本地卷曲(或局部卷曲):

curl -s -X POST "http://localhost:8081/mcp" \
  -H 'Content-Type: application/json' \
  -H 'Mcp-Protocol-Version: 2025-06-18' \
  --data '{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":"2025-06-18"}}'

使用(工具)

你好

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"hello","arguments":{"name":"Felix"}}}

随机数

{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"randomNumber","arguments":{"max":10}}}

天气

{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"weather","arguments":{"city":"Boston"}}}

总结 (需要 OPENAI_API_KEY (在服务器上设置)

{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"summarize","arguments":{"text":"(paste long text)","maxSentences":2}}}

它是如何工作的

  • 服务器核心: McpServer 来自 @modelcontextprotocol/sdk 使用已注册的工具 buildServer()。 交通: StreamableHTTPServerTransport on /mcp 处理:

    • POST /mcp — JSON-RPC 请求(以及首次 initialize)
    • GET /mcp — 服务器到客户端的通知(SSE)
    • DELETE /mcp — 会议结束
  • CORS:跨源资源共享(Cross-Origin Resource Sharing) 允许所有来源;暴露(或“公开”) Mcp-Session-Id 标题(适用于托管客户)。

  • OpenAI总结: 薄 fetch 围绕……的包装/外壳 /v1/chat/completions 附带一个简短的“简洁总结者”系统提示。


部署(Smithery,此处可能指特定系统或平台的名称,直译为“锻造厂”,但根据上下文可能需具体翻译为相关术语或保持原样)

  1. 包含以下内容的GitHub仓库:

    • index.js (快递 + MCP)

    • package.json (@modelcontextprotocol/sdk, express, cors, zod)

    • Dockerfile

    • smithery.yaml:

      kind: server
      name: felix-mcp-smithery
      version: 1.0.0
      runtime: container
      
      startCommand:
        type: http
      
      transport: streamable-http
      port: 8081
      path: /mcp
      ssePath: /mcp
      health: /
      
  2. 在史密斯里(Smithery):

    • 从仓库中创建服务器。
    • 添加 环境变量: OPENAI_API_KEY (可选,对于 summarize)。
    • 部署 → 确认日志显示: ✅ MCP Streamable HTTP server on 0.0.0.0:8081 (POST/GET/DELETE /mcp)

NANDA指数

  • 首选 join39.org → 上下文代理 → 添加

    • 代理名称: Felix MCP (Smithery)
    • MCP 端点: https://server.smithery.ai/@FelixYifeiWang/felix-mcp-smithery/mcp?api_key=YOUR_KEY&profile=YOUR_PROFILE
    • 描述: Streamable-HTTP MCP hosted on Smithery. Tools: hello, randomNumber, weather, summarize (OpenAI).
  • 来自NANDA的测试: initialize → tools/list → 打电话 hello。


项目结构

.
├─ index.js            # Express + Streamable HTTP + tools
├─ package.json        # sdk/express/cors/zod
├─ Dockerfile          # container build for Smithery
└─ smithery.yaml       # Smithery project config

作业评分标准映射

  • ✅ 表示“正确”或“勾选”。 查找/构建: 带有4种工具的定制MCP服务器
  • ✅ 部署: 托管在Smithery上(已附上公共服务器页面链接)
  • ✅ 在主机上进行测试: 在Claude桌面版中已验证(附有截图/录屏)
  • ✅(勾选标记,表示正确、确认或完成) NANDA指数: 作为上下文代理添加(附截图)
  • ✅ 可交付成果: 仓库链接 + 可用的终端节点 + 主机截图

什么奏效了

  • 一旦避免了闭环陷阱,带有会话管理的可流式HTTP传输就是稳定的。
  • Smithery 使部署和授权密钥分发变得简单直接。
  • Claude Desktop 通过(某种方式)干净利落地连接 @smithery/cli run …。

人工智能致谢

该项目的部分内容(工具脚手架搭建、错误修复和文档润色)是在AI辅助下完成的。 最终的代码、部署和测试步骤均由我完成并验证。