README
🚀 冰岛新闻MCP服务器
这是一个MCP(模型上下文协议)服务器,它通过RSS订阅源从冰岛新闻媒体获取最新新闻。
🚀 快速开始
配置完成后,你可以让你的AI助手获取冰岛新闻,例如:
- "Get the latest news from Iceland"
- "Show me sports news from Morgunblaðið"
- "What's the latest international news from RÚV?"
- "Fetch 5 articles from the MBL English feed"
- "List all available feeds"
- "Get news from the University of Iceland"
✨ 主要特性
- 从6个冰岛新闻媒体获取新闻
- 涵盖60多种不同类别的新闻订阅源
- 支持冰岛语、英语和波兰语的新闻订阅源
- 可配置获取文章的数量(1 - 50篇)
- 内置工具可列出所有可用的订阅源
📦 安装指南
前提条件
- Node.js 18或更高版本
- npm
从源代码构建
git clone https://github.com/olibuijr/iceland-news-mcp.git
cd iceland-news-mcp
npm install
npm run build
配置
Claude Code
将以下内容添加到你的Claude Code配置文件 ~/.claude/claude_code_config.json 中:
{
"mcpServers": {
"iceland-news": {
"command": "node",
"args": ["/absolute/path/to/iceland-news-mcp/dist/index.js"]
}
}
}
然后重启Claude Code或运行 /mcp 以刷新MCP服务器。
Claude Desktop
将以下内容添加到你的Claude Desktop配置文件中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"iceland-news": {
"command": "node",
"args": ["/absolute/path/to/iceland-news-mcp/dist/index.js"]
}
}
}
然后重启Claude Desktop。
Cursor
将以下内容添加到你的Cursor MCP配置文件 ~/.cursor/mcp.json 中:
{
"mcpServers": {
"iceland-news": {
"command": "node",
"args": ["/absolute/path/to/iceland-news-mcp/dist/index.js"]
}
}
}
然后重启Cursor或使用命令面板重新加载MCP服务器。
VS Code with Continue Extension
将以下内容添加到你的Continue配置文件 ~/.continue/config.json 中:
{
"mcpServers": [
{
"name": "iceland-news",
"command": "node",
"args": ["/absolute/path/to/iceland-news-mcp/dist/index.js"]
}
]
}
Windsurf
将以下内容添加到你的Windsurf MCP配置文件 ~/.windsurf/mcp.json 中:
{
"mcpServers": {
"iceland-news": {
"command": "node",
"args": ["/absolute/path/to/iceland-news-mcp/dist/index.js"]
}
}
}
Zed
将以下内容添加到你的Zed设置文件 ~/.config/zed/settings.json 中:
{
"context_servers": {
"iceland-news": {
"command": {
"path": "node",
"args": ["/absolute/path/to/iceland-news-mcp/dist/index.js"]
}
}
}
}
💻 使用示例
工具:get_news
从特定的新闻源和订阅源获取新闻文章。
参数:
| 参数 | 类型 | 默认值 | 描述 |
|-----------|------|---------|-------------|
| source | 字符串 | ruv | 新闻源:ruv, mbl, heimildin, mannlif, landsbankinn, 或 hi |
| feed | 字符串 | frettir | 要获取的订阅源(见上文表格) |
| limit | 数字 | 10 | 要返回的文章数量(1 - 50) |
示例:
{
"name": "get_news",
"arguments": {
"source": "mbl",
"feed": "sport",
"limit": 5
}
}
工具:list_feeds
列出一个或所有新闻源的所有可用订阅源。
参数:
| 参数 | 类型 | 默认值 | 描述 |
|-----------|------|---------|-------------|
| source | 字符串 | all | 要列出的新闻源:ruv, mbl, heimildin, mannlif, landsbankinn, hi, 或 all |
示例:
{
"name": "list_feeds",
"arguments": {
"source": "hi"
}
}
📚 详细文档
支持的新闻源
RÚV(冰岛国家广播公司)
| 订阅源 | 描述 |
|------|-------------|
| frettir | 所有新闻 |
| innlent | 国内新闻 |
| erlent | 国际新闻 |
| ithrottir | 体育新闻 |
| menning-og-daegurmal | 文化与时事新闻 |
| audskilid | 简易冰岛语新闻 |
| english | 英语新闻 |
| polski | 波兰语新闻 |
Morgunblaðið(mbl.is)
主要新闻
| 订阅源 | 描述 |
|------|-------------|
| fp | 头版新闻 |
| innlent | 国内新闻 |
| erlent | 国际新闻 |
| togt | 科技与科学新闻 |
| english | 英语新闻 |
| helst | 头条新闻 |
| nyjast | 最新新闻 |
| sjonvarp | 电视新闻 |
体育新闻
| 订阅源 | 描述 |
|------|-------------|
| sport | 所有体育新闻 |
| fotbolti | 足球新闻 |
| enski | 英超联赛新闻 |
| golf | 高尔夫新闻 |
| handbolti | 手球新闻 |
| korfubolti | 篮球新闻 |
| pepsideild | 百事联赛(冰岛足球)新闻 |
| formula | F1赛车新闻 |
| hestar | 赛马新闻 |
| rafithrottir | 电竞新闻 |
商业与工业新闻
| 订阅源 | 描述 |
|------|-------------|
| vidskipti | 商业新闻 |
| 200milur | 海洋与渔业新闻 |
| fasteignir | 房地产新闻 |
文化与生活新闻
| 订阅源 | 描述 |
|------|-------------|
| menning | 文化新闻 |
| folk | 人物新闻 |
| verold | 世界/名人新闻 |
| matur | 美食新闻 |
| ferdalog | 旅游新闻 |
| bill | 汽车新闻 |
Smartland(生活方式)
| 订阅源 | 描述 |
|------|-------------|
| smartland | Smartland相关新闻 |
| stars | 名人新闻 |
| tiska | 时尚新闻 |
| heimili | 家居与设计新闻 |
| utlit | 美容新闻 |
| heilsa | 健康与营养新闻 |
| frami | 成功故事新闻 |
| samkvaemislifid | 社交生活新闻 |
| fjolskyldan | 家庭新闻 |
Morgunblaðið报纸
| 订阅源 | 描述 |
|------|-------------|
| mogginn-idag | 今日报纸 |
| mogginn-featured | 特色文章 |
| mogginn-leidarar | 社论 |
| mogginn-sunnudagur | 周日版 |
| mogginn-netgreinar | 精选文章 |
其他
| 订阅源 | 描述 |
|------|-------------|
| k100 | K100电台新闻 |
| smaaugl | 分类广告 |
| blog | 博客讨论 |
Heimildin
| 订阅源 | 描述 |
|------|-------------|
| frettir | 所有新闻 |
Mannlíf
| 订阅源 | 描述 |
|------|-------------|
| frettir | 所有新闻 |
Landsbankinn
| 订阅源 | 描述 |
|------|-------------|
| frettir | 新闻与公告 |
冰岛大学(Háskóli Íslands)
全校新闻
| 订阅源 | 描述 |
|------|-------------|
| frettir | 大学新闻 |
| vidburdir | 大学活动 |
社会科学学院
| 订阅源 | 描述 |
|------|-------------|
| felagsvisindasvid-frettir | 社会科学新闻 |
| felagsvisindasvid-vidburdir | 社会科学活动 |
健康科学学院
| 订阅源 | 描述 |
|------|-------------|
| heilbrigdisvisindasvid-frettir | 健康科学新闻 |
| heilbrigdisvisindasvid-vidburdir | 健康科学活动 |
人文学院
| 订阅源 | 描述 |
|------|-------------|
| hugvisindasvid-frettir | 人文新闻 |
| hugvisindasvid-vidburdir | 人文活动 |
教育学院
| 订阅源 | 描述 |
|------|-------------|
| menntavisindasvid-frettir | 教育新闻 |
| menntavisindasvid-vidburdir | 教育活动 |
工程与自然科学学院
| 订阅源 | 描述 |
|------|-------------|
| verkfraedi-natturuvisindasvid-frettir | 工程与自然科学新闻 |
| verkfraedi-natturuvisindasvid-vidburdir | 工程与自然科学活动 |
项目结构
iceland-news-mcp/
├── src/
│ └── index.ts # 主MCP服务器源代码
├── dist/
│ └── index.js # 编译后的JavaScript文件
├── package.json
├── tsconfig.json
└── README.md
脚本
# 构建项目
npm run build
# 运行服务器(用于测试)
npm start
测试
你可以通过发送JSON - RPC消息手动测试服务器:
# 测试获取新闻
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_news","arguments":{"source":"mbl","feed":"sport","limit":3}}}' | node dist/index.js
# 测试列出订阅源
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_feeds","arguments":{"source":"all"}}}' | node dist/index.js
🔧 技术细节
v1.2.0 (2025-12-03)
重大变更:
- 移除了ElevenLabs对话式AI集成
- 替换为Google Gemini Live API以降低延迟
新特性:
- Gemini Live API:直接通过WebSocket流式传输,实现低延迟语音响应
- 混合语音转文本(STT):使用Whisper进行准确的冰岛语转录,Gemini实现快速响应
- 语音活动检测自动停止(VAD Auto - Stop):在1.5秒静音后自动停止录音
- 音频电平可视化:录音时实时显示输入电平
- 新闻搜索:新增
search_news工具,可在所有新闻源中进行关键词搜索 - 更多新闻源:新增Vísir、DV、Stundin、Fréttablaðið、Kjarninn、Iceland Review、Grapevine、Vedirstofa(共14个)
技术方面:
- 使用AudioWorklet进行高效的实时音频处理
- 并行Whisper转录以准确显示文本
- 移除
@elevenlabs/client和@elevenlabs/react依赖项 - 简化UI,移除ElevenLabs设置面板
v1.1.0 (2025-12-03)
新特性:
- Web UI:添加了SvelteKit Web界面,用于实时语音对话
- 语音助手:集成Gemini Live API,实现原生音频响应
- 冰岛语语音识别:添加了Whisper STT服务,并使用微调后的冰岛语模型(
language - and - voice - lab/whisper - large - icelandic - 62640 - steps - 967h) - 函数调用:Gemini现在可以使用MCP工具(
get_all_news,get_news_by_source,get_news_by_category)获取新闻 - 语音活动检测(VAD):用户停止说话时自动转录
- 自动头条:应用启动时自动朗读10条最新头条新闻
- 多语音选择:可从5种不同语音(Puck, Charon, Kore, Fenrir, Aoede)中选择
技术方面:
- 新闻API端点用于RSS订阅源聚合
- Whisper服务在CUDA(RTX 3080)上运行,实现快速推理
- SvelteKit代理用于Whisper服务请求
- 采用专业冰岛新闻记者人设
v1.0.0 (2025-12-03)
初始版本:
- MCP服务器包含2个工具:
get_news和list_feeds - 支持6个冰岛新闻源
- 涵盖60多种RSS订阅源
- 支持多语言(冰岛语、英语、波兰语)
📄 许可证
ISC
致谢
- 新闻内容由以下媒体提供:
- RÚV(冰岛国家广播公司)
- Morgunblaðið(mbl.is)
- Heimildin
- Mannlíf
- Landsbankinn
- 冰岛大学(Háskóli Íslands)
- 使用 模型上下文协议SDK 构建
作者
Ólafur Búi Ólafsson 邮箱:olibuijr@olibuijr.com GitHub:@olibuijr
Scan to join WeChat group