该项目提供了一个模型上下文协议(MCP)服务器,允许AI代理和其他MCP客户端与OpenAlex数据库进行交互,特别关注学术作品。它利用了pyalex Python库来与OpenAlex API通信,并使用MCP Python SDK (fastmcp) 将功能暴露为MCP工具。
为了激发灵感,这里有一些你可以向启用了此MCP的AI代理询问的示例查询:
我最喜欢的AI代理是cline:https://github.com/cline/cline
该服务器提供了以下MCP工具用于与OpenAlex作品互动:
search_works:
search_query (字符串,必需):搜索词。filters (对象,可选):用于过滤的键值对(例如,{"publication_year": 2023, "is_oa": true})。参见OpenAlex过滤文档以获取可能的键。search_field (字符串,可选,默认:"default"):要搜索的字段('title','abstract','fulltext','title_and_abstract','default' - 搜索标题、摘要和全文)。select_fields (字符串数组,可选):要返回的顶级字段列表(例如,["id", "doi", "title", "abstract"])。如果请求,则包括纯文本摘要。sort (对象,可选):排序字段及方向(例如,{"cited_by_count": "desc"})。per_page (整数,可选,默认:25):每页结果数(最大200)。cursor (字符串,可选):分页游标。results(工作对象列表)和meta(分页信息,包括next_cursor)的对象。get_work_details:
work_id (字符串,必需):作品标识符。select_fields (字符串数组,可选):要返回的顶级字段列表。如果请求,则包括纯文本摘要。get_referenced_works:
get_work_details获取每个引用的更多信息。work_id (字符串,必需):引用作品的OpenAlex ID。referenced_work_ids(字符串列表)的对象,或错误对象。get_citing_works:
work_id (字符串,必需):被引用作品的OpenAlex ID。select_fields (字符串数组,可选):每个引用作品的顶级字段列表。per_page (整数,可选,默认:25):每页结果数(最大200)。cursor (字符串,可选):分页游标。results(引用作品对象列表)和meta(分页信息)的对象,或错误对象。get_work_ngrams:
work_id (字符串,必需):作品的OpenAlex ID。OpenAlex通常不存储全文内容,因为版权原因。 这也意味着OpenAlex搜索功能不会搜索全文,而只会搜索标题+摘要。
克隆仓库(可选):
git clone <repository-url>
cd openalex-mcp-server
安装依赖项:
uv venv
source .venv/bin/activate
uv pip install .
这会安装服务器包及其依赖项(mcp[cli],pyalex)。
运行服务器:
uv --directory /YOUR/INSTALL/DIRECTORY/openalex-mcp-server run server.py
OPENALEX_EMAIL环境变量为您的电子邮件地址。
export OPENALEX_EMAIL="your.email@example.com"
如果未设置此变量,服务器将使用匿名池,该池有更严格的速率限制。要将此服务器与MCP客户端(如Claude VS Code扩展或Claude桌面版)一起使用,您需要将其配置添加到客户端的设置文件中。
示例配置(cline_mcp_settings.json或类似文件):
{
"mcpServers": {
"... 其他服务器 ...": {},
"openalex": {
"autoApprove": [],
"disabled": false,
"timeout": 60,
"command": "uv",
"args": [
"--directory", "/YOUR/INSTALL/DIRECTORY/openalex-mcp-server", "run", "server.py"
],
"env": {
"OPENALEX_EMAIL": "your.email@example.com" // 在此处设置您的电子邮件!
},
"transportType": "stdio"
}
}
}
"your.email@example.com"替换为您实际的电子邮件地址。一旦服务器已配置并运行(无论是通过MCP客户端集成还是手动开发),您可以在AI代理中使用use_mcp_tool命令与其互动。
示例工具调用:
搜索2023年发布的关于“机器学习”的论文:
<use_mcp_tool>
<server_name>openalex</server_name>
<tool_name>search_works</tool_name>
<arguments>
{
"search_query": "机器学习",
"filters": { "publication_year": 2023 },
"select_fields": ["id", "doi", "title", "publication_year", "cited_by_count"]
}
</arguments>
</use_mcp_tool>
获取特定作品的详细信息:
<use_mcp_tool>
<server_name>openalex</server_name>
<tool_name>get_work_details</tool_name>
<arguments>
{
"work_id": "W2741809807",
"select_fields": ["title", "authorships", "abstract", "open_access"]
}
</arguments>
</use_mcp_tool>
获取作品的引用:
<use_mcp_tool>
<server_name>openalex</server_name>
<tool_name>get_referenced_works</tool_name>
<arguments>
{
"work_id": "W2741809807"
}
</arguments>
</use_mcp_tool>
要在本地运行服务器进行开发和测试:
OPENALEX_EMAIL环境变量。mcp dev server.py