这是一个模型上下文协议(MCP)服务器,它暴露了来自新闻API(https://newsapi.org)的端点,用于搜索和检索新闻文章。此服务器允许通过MCP协议以编程方式访问新闻数据。
克隆仓库或确保你在项目目录中。
安装依赖项:
npm install
构建服务器:
npm run build
这将创建一个包含编译后的JavaScript代码的build目录。
设置你的新闻API密钥:
服务器从NEWSAPI_KEY环境变量读取API密钥。在运行服务器之前,请在环境中设置该变量。
示例(Bash/Zsh):
export NEWSAPI_KEY="YOUR_API_KEY"
将"YOUR_API_KEY"替换为您的实际新闻API密钥。
直接运行:
确保设置了NEWSAPI_KEY环境变量,然后运行:
node build/index.js
或者,如果您有一个启动脚本:
npm run start
通过MCP运行器: 配置您的MCP客户端以使用stdio传输运行服务器。您还需要在MCP运行器的设置中配置API密钥的环境变量。 示例MCP设置条目:
"mcp-newsapi": {
"transportType": "stdio",
"command": "node",
"args": [
"/path/to/mcp-newsapi/build/index.js"
],
"environment": {
"NEWSAPI_KEY": "YOUR_API_KEY"
}
// ... 其他可选设置 ...
}
将"YOUR_API_KEY"替换为您的实际新闻API密钥。
服务器通过MCP公开以下工具,对应于新闻API端点:
q(字符串,必需):要在文章标题和正文中的关键词或短语。sources(字符串,可选):新闻来源或博客标识符的逗号分隔字符串,您希望从中获取头条新闻。domains(字符串,可选):要搜索的域的逗号分隔字符串(例如,bbc.co.uk, techcrunch.com)。excludeDomains(字符串,可选):要从搜索中排除的域的逗号分隔字符串(例如,bbc.co.uk, techcrunch.com)。from(字符串,可选):允许的最旧文章的日期和可选时间。格式:YYYY-MM-DD 或 YYYY-MM-DDTHH:MM:SS(例如,2024-01-01 或 2024-01-01T10:00:00)。to(字符串,可选):允许的最新文章的日期和可选时间。格式:YYYY-MM-DD 或 YYYY-MM-DDTHH:MM:SS。language(字符串,可选):您想要获取头条新闻的语言的2位ISO 639-1代码。可能选项:ar, de, en, es, fr, he, it, nl, no, pt, ru, sv, ud, zh。默认:返回所有语言。sortBy(枚举:'relevancy', 'popularity', 'publishedAt',可选):文章排序顺序。可能选项:relevancy, popularity, publishedAt。默认:relevancy。pageSize(整数,可选,默认值100):每页(请求)返回的结果数量。默认值为20,最大值为100。page(整数,可选,默认值1):如果找到的总结果大于pageSize,则使用此参数进行分页。status,totalResults以及带有源、作者、标题、描述、URL、图片URL、发布日期和内容的文章数组的对象。q(字符串,可选):要在文章标题和正文中的关键词或短语。sources(字符串,可选):新闻来源或博客标识符的逗号分隔字符串,您希望从中获取头条新闻。category(枚举:'business', 'entertainment', 'general', 'health', 'science', 'sports', 'technology',可选):您想要获取头条新闻的类别。可能选项:business, entertainment, general, health, science, sports, technology。language(字符串,可选):您想要获取头条新闻的语言的2位ISO 639-1代码。可能选项:ar, de, en, es, fr, he, it, nl, no, pt, ru, sv, ud, zh。默认:返回所有语言。country(字符串,可选):您想要获取头条新闻的国家的2位ISO 3166-1国家代码。可能选项:ae, ar, at, au, be, bg, br, ca, ch, cn, co, cu, cz, de, eg, fr, gb, gr, hk, hu, id, ie, il, in, it, jp, kr, lt, lv, ma, mx, my, ng, nl, no, nz, ph, pl, pt, ro, rs, ru, sa, se, sg, si, sk, th, tr, tw, ua, us, ve, za。默认:返回所有国家。pageSize(整数,可选,默认值100):每页(请求)返回的结果数量。默认值为20,最大值为100。page(整数,可选,默认值1):如果找到的总结果大于pageSize,则使用此参数进行分页。status,totalResults以及带有源、作者、标题、描述、URL、图片URL、发布日期和内容的文章数组的对象。服务器尝试根据新闻API响应提供有意义的错误消息。如果API调用失败,工具将抛出一个包含有关失败详情的错误,包括可用的新闻API错误消息和代码。
要添加更多新闻API端点作为工具,在src/tools/中创建一个新的TypeScript文件,使用Zod定义其输入模式,实现调用新闻API SDK的处理器函数,并导出工具定义。然后,在src/tools/index.ts中导入并注册新的工具。