模型上下文协议服务器示例

提供新闻和天气数据的MCP服务器示例,展示如何为Claude Code和其他MCP客户端构建自定义集成。

  • by AppSecHQ
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 AppSecHQ/mcp-demos

使用说明

MCP服务器演示

示例MCP(模型上下文协议)服务器,展示如何为Claude Code和其他MCP客户端构建自定义集成。

什么是MCP?

这个(或“该”) 模型上下文协议(MCP) 这是一个开放标准,使人工智能应用程序能够安全地连接到外部数据源和工具。它为人工智能助手提供了一个通用接口,以与各种系统进行交互。

演示服务器

此存储库包含两个示例MCP服务器:

1. 新闻服务器(Python)

地点: news-mcp-server/

一个基于Python的MCP服务器,用于从RSS订阅中获取新闻标题。

工具:

  • get_headlines按类别获取最新新闻(科技、综合、商业、体育)
  • get_news_from_source从特定来源获取新闻(BBC、路透社、TechCrunch、The Verge、Wired、ESPN、华尔街日报)

技术栈: Python 3,mcp SDK,feedparser,httpx

2. 天气服务器(Node.js)

地点: weather-mcp-server/

一个基于Node.js的MCP服务器,提供实时天气信息。

工具:

  • get_weather获取全球任何城市的当前天气

技术栈: Node.js,@modelcontextprotocol/sdk,wttr.in API

快速入门

先决条件

  • Python 3.8+(用于新闻服务器)
  • Node.js 18+(用于天气服务器)
  • 克劳德·科德 或另一个MCP客户端
  • MCP 检查员 (可选,用于测试)

安装

新闻服务器(Python)

cd news-mcp-server

# Create virtual environment
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

天气服务器(Node.js)

cd weather-mcp-server

# Install dependencies
npm install

配置

这个仓库包含一个 .mcp.json 在Claude Code中,将该仓库用作工作目录时有效的配置文件。

使用随附的配置

该 .mcp.json 存储库根目录中的文件被配置为使用相对路径工作:

{
  "mcpServers": {
    "news": {
      "command": "./news-mcp-server/venv/bin/python",
      "args": ["news-mcp-server/news-server.py"]
    },
    "weather": {
      "command": "node",
      "args": ["weather-mcp-server/server.js"]
    }
  }
}

要使用此配置:

  1. 确保两台服务器都已安装(参见上文的安装部分)
  2. 在(此处)打开Claude代码 mcp-demos 目录
  3. 重启Claude代码以加载配置

备选方案:CLI 配置

您也可以使用Claude Code CLI添加这些服务器:

# Add news server (use absolute path to venv python)
claude mcp add --transport stdio news \
  -- /absolute/path/to/mcp-demos/news-mcp-server/venv/bin/python \
  news-mcp-server/news-server.py

# Add weather server
claude mcp add --transport stdio weather \
  -- node weather-mcp-server/server.js

验证安装

claude mcp list

你应该看到两者 news 并且 weather 列出的服务器。

使用MCP Inspector进行测试

这个(或:该) MCP 检查器 这是一个基于浏览器的工具,用于测试MCP服务器。

测试新闻服务器

# From the repository root
npx @modelcontextprotocol/inspector \
  /absolute/path/to/mcp-demos/news-mcp-server/venv/bin/python \
  /absolute/path/to/mcp-demos/news-mcp-server/news-server.py

注: 在使用检查器时,你必须使用绝对路径。替换 /absolute/path/to/mcp-demos 与实际路径相符。

测试天气服务器

# From the repository root
npx @modelcontextprotocol/inspector \
  node \
  /absolute/path/to/mcp-demos/weather-mcp-server/server.js

检查员将:

  1. 启动您的MCP服务器
  2. 在(指定地址)启动一个网页用户界面 http://localhost:6274
  3. 允许您交互式地测试工具并查看日志

使用示例

一旦在Claude Code中进行配置,您就可以提问:

  • “东京的天气怎么样?”
  • “给我带来最新的科技新闻”
  • “给我看看体育新闻头条”
  • “BBC 有什么新闻?”

项目结构

mcp-demos/
├── README.md
├── .mcp.json                # MCP server configuration
├── news-mcp-server/
│   ├── news-server.py       # Python MCP server implementation
│   ├── requirements.txt     # Python dependencies
│   └── venv/                # Python virtual environment (created during setup)
└── weather-mcp-server/
    ├── server.js            # Node.js MCP server implementation
    ├── package.json         # Node.js dependencies
    ├── package-lock.json    # Locked dependency versions
    └── node_modules/        # Node.js packages (created during setup)

故障排除

新闻服务器问题

模块未找到错误:

# Make sure virtual environment is activated and dependencies installed
cd news-mcp-server
source venv/bin/activate
pip install -r requirements.txt

服务器无响应:

  • 检查虚拟环境是否已创建并已激活
  • 验证所有依赖项是否已安装
  • 检查Claude Code的日志以查找错误信息
  • 确保你正在从 mcp-demos 目录运行 Claude 代码

天气服务器问题

模块未找到错误:

# Reinstall dependencies
cd weather-mcp-server
npm install

服务器无响应:

  • 验证 Node.js 版本是否为 18 或更高版本: node --version
  • 检查 node_modules 目录是否存在
  • 确保网络可以访问wttr.in API

检查器连接错误

浏览器中出现“连接错误”:

  • 确保你使用的是绝对路径,而不是相对路径
  • 检查命令是否在一行内,或者是否使用反斜杠进行换行续接
  • 验证服务器进程能否无错误启动

“spawn ENOENT”错误:

  • 再次检查文件路径是否正确
  • 使用绝对路径以避免歧义
  • 确认你处于正确的工作目录中

配置问题

服务器未在Claude代码中显示:

  • 验证 .mcp.json 存在于你的项目根目录中
  • 检查JSON语法是否有效(无尾随逗号,引号使用正确)
  • 确保在配置更改后重新启动了 Claude Code
  • 跑 claude mcp list 查看服务器是否已加载
  • 确保为Python服务器创建了虚拟环境(venv)
  • 确保已为Node.js服务器安装了node_modules

了解更多

许可证

麻省理工学院(MIT)

做出贡献

欢迎贡献!如有任何建议,请创建一个议题。