模型上下文协议服务器

一个提供友好问候和获取Tabnews文章的MCP服务器,支持STDIO和HTTP传输。

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

使用说明

PatrickCarmo MCP 服务器🚀

MCP(模型上下文协议)服务器,提供友好的问候并获取Tabnews文章,支持 标准输入输出 和 超文本传输协议 运输。

🌟 特性

  • 双重运输:支持STDIO和HTTP
  • 友好问候:生成带有日期、时间和有趣事实的个性化问候
  • 标签新闻集成:从Tabnews获取最新文章
  • 会话管理:HTTP会话管理
  • CORS支持:已为web客户端做好准备
  • 健康检查:健康检查端点

📋 可用工具

1. friendly_greeting

  • 描述:用当前日期、时间和一个有趣的事实来表达热烈的问候
  • 参数:
    • name (可选):用于个性化问候的名称
  • 示例: { "name": "Patrick" }

2. get_tabnews_articles

  • 描述:从Tabnews获取包含标题、URL和元数据的最新文章
  • 参数:
    • limit (可选):要获取的最大文章数(默认值:10,最大值:30)
  • 示例: { "limit": 5 }

🚀 安装

npm install

🔧 用法

STDIO模式(适用于Claude Desktop和其他MCP客户端)

npm run start:stdio
# or
npm run start

HTTP模式(适用于web客户端和REST API)

npm run start:http
# or
npm run start:http:dev  # runs on port 8080

🌐 HTTP端点

在HTTP模式下运行时:

  • MCP端点: http://localhost:3000/mcp
  • 健康检查: http://localhost:3000/health

📝 HTTP测试

使用提供的 mcp-server.http 具有VS代码REST客户端扩展名的文件:

  1. 安装 REST客户端 VS代码中的扩展
  2. 打开 mcp-server.http
  3. 启动服务器: npm run start:http
  4. 点击 “发送请求” 根据文件中的任何请求

请求示例:

# Initialize session
POST http://localhost:3000/mcp
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2024-11-05",
    "capabilities": { "tools": {} },
    "clientInfo": { "name": "rest-client", "version": "1.0.0" }
  }
}

# Call friendly greeting
POST http://localhost:3000/mcp
Content-Type: application/json
mcp-session-id: YOUR_SESSION_ID

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "friendly_greeting",
    "arguments": { "name": "Patrick" }
  }
}

🔄 两种运输方式是如何工作的

你的 服务/工具保持完全相同 无论运输方式如何:

  • 标准输入输出:使用标准输入/输出进行通信
  • 超文本传输协议:使用HTTP请求进行会话管理

传输层是 完全分开 根据你的工具逻辑,所以:

  • ✅ 你的 friendly_greeting 该工具可在两种模式下工作
  • ✅ 你的 get_tabnews_articles 该工具可在两种模式下工作
  • ✅ Claude Desktop仍然可以通过STDIO连接
  • ✅ Web客户端可以通过HTTP连接

🤖 与Claude Desktop一起使用

添加到您的Claude Desktop MCP配置中:

{
  "mcpServers": {
    "patrickcarmo-mcp-server": {
      "command": "node",
      "args": ["/path/to/your/mcp-server/index.js"],
      "env": {}
    }
  }
}

🌟 示例用法

STDIO模式

npm run start:stdio
# Server starts and waits for MCP protocol messages

HTTP模式

npm run start:http
# Server starts on http://localhost:3000

📚 MCP协议支持

  • 版本: 2024-11-05
  • 能力:工具
  • 运输:STDIO和HTTP
  • 会话管理:支持HTTP模式

🛠️ 发展

# Run in STDIO mode
npm run start:stdio

# Run in HTTP mode
npm run start:http

# Run HTTP on custom port
node index.js --mode=http --port=8080

# Test STDIO client
npm test

🏗️ 建筑

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   MCP Client    │    │   MCP Client    │    │   Web Client    │
│  (Claude, etc)  │    │  (STDIO/CLI)    │    │  (Browser/API)  │
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │                       │                       │
         │ STDIO                 │ STDIO                 │ HTTP
         │                       │                       │
         └─────────────────────────┴───────────────────────┘
                                 │
                    ┌─────────────────────────┐
                    │   PatrickCarmo MCP      │
                    │       Server            │
                    │                         │
                    │  ┌─────────────────┐    │
                    │  │ friendly_greeting│    │
                    │  └─────────────────┘    │
                    │                         │
                    │  ┌─────────────────┐    │
                    │  │get_tabnews_articles│  │
                    │  └─────────────────┘    │
                    └─────────────────────────┘

🔧 配置

环境变量

  • NODE_ENV:设置为 production 用于生产模式
  • PORT:HTTP端口(默认值:3000)
  • MCP_MODE:运输方式(stdio 或 http)

命令行参数

  • --mode=stdio|http:设置运输模式
  • --port=3000:设置HTTP端口

📖 api参考

健康检查

GET /health

MCP端点

POST /mcp
GET /mcp     # For SSE in HTTP mode
DELETE /mcp  # For session cleanup

🤝 贡献

  1. 分叉存储库
  2. 创建功能分支
  3. 提交您的更改
  4. 推到分支
  5. 创建拉取请求

📄 许可证

ISC许可证-有关详细信息,请参阅许可证文件


已准备好与Claude Desktop(STDIO)和web客户端(HTTP)一起使用! 🎉