内容
# 英国央行MCP服务器
[](https://www.npmjs.com/package/boe-mcp)
[](https://github.com/moureauf/boe-mcp/actions/workflows/ci.yml)
[](https://www.npmjs.com/package/boe-mcp)
[](./LICENSE)
[](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.moureauf/boe-mcp)
一个MCP(模型上下文协议)服务器,为Claude Code或任何MCP客户端提供英国央行实时数据:基准利率(当前水平、变更历史、任意时间段的统计数据以及过去某日期生效的利率)、**英国央行IADB统计数据库中的任意序列**(SONIA、汇率、报价抵押贷款利率等数千种,附有精选目录),以及货币政策委员会会议日程。它默认通过stdio运行(可选Streamable HTTP模式用于远程托管),无需API密钥或配置,并在内存中缓存响应,以便重复查询不会重新访问央行。

已在npm上发布为[`boe-mcp`](https://www.npmjs.com/package/boe-mcp),并附有构建[溯源声明](https://docs.npmjs.com/generating-provenance-statements/) — 使用`npx -y boe-mcp`安装并运行。
## 工具列表
| 工具 | 描述 | 示例输出 |
|------|-------------|----------------|
| `get_current_rate` | 当前基准利率、生效日期、维持该水平月份数 | `{ "rate": 3.75, "effectiveDate": "2025-12-18", "monthsHeld": 6, "source": "https://www.bankofengland.co.uk/boeapps/iadb/...", "cachedAt": "2026-07-07T04:11:28Z" }` |
| `get_rate_history` | 最近N次利率变更(默认为10次)- 日期、利率、与上次变更的基点差异(最早已知记录为`null`) | `{ "entries": [{ "date": "2025-12-18", "rate": 3.75, "changeBps": -25 }, ...], "source": "...", "cachedAt": "..." }` |
| `get_rate_at` | 特定历史日期的基准利率 | `{ "date": "2020-03-15", "rate": 0.25, "effectiveDate": "2020-03-11", "source": "...", "cachedAt": "..." }` |
| `get_rate_stats` | 基准利率在指定日期范围内的汇总统计数据(可选`from`/`to`,默认为完整历史):最小/最大利率及其生效日期、时间加权平均值、起始/结束利率及净基点变动 | `{ "from": "2025-01-01", "to": "2025-12-31", "min": { "rate": 3.75, "date": "2025-12-18" }, "max": { "rate": 4.75, "date": "2025-01-01" }, "average": 4.2514, "startRate": 4.75, "endRate": 3.75, "changeBps": -100, "source": "...", "cachedAt": "..." }` |
| `get_next_mpc_meeting` | 下一次货币政策委员会公告的日期及距离该日期的天数 | `{ "date": "2026-07-30", "daysUntil": 23, "source": "https://www.bankofengland.co.uk/monetary-policy/upcoming-mpc-dates", "cachedAt": "..." }` |
| `get_mpc_dates` | 所有即将举行的货币政策委员会公告日期,每个日期均附有距离该日期的天数 | `{ "dates": [{ "date": "2026-07-30", "daysUntil": 23 }, { "date": "2026-09-17", "daysUntil": 72 }, ...], "source": "https://www.bankofengland.co.uk/monetary-policy/upcoming-mpc-dates", "cachedAt": "..." }` |
| `list_series` | 精选的知名IADB序列目录(政策利率、市场利率、外汇、家庭利率)及其代码、名称、描述、单位和频率 — `get_series`的起点 | `{ "series": [{ "code": "IUDSOIA", "name": "SONIA (Sterling Overnight Index Average)", "description": "...", "unit": "percent per annum", "frequency": "daily (business days)" }, ...], "note": "get_series also accepts any other IADB code..." }` |
| `get_series` | 按代码获取**任意**英国央行IADB序列的观测值,可选`from`/`to` ISO日期和`limit`(1-500,默认为50)以获取最近的观测点 | `{ "seriesCode": "IUDSOIA", "name": "SONIA (Sterling Overnight Index Average)", "unit": "percent per annum", "frequency": "daily (business days)", "points": [{ "date": "2025-12-19", "value": 3.69 }, ...], "source": "...", "cachedAt": "..." }` |
`get_series`接受任意有效的IADB代码(不仅限于目录中的代码);未知或空代码返回干净的`Unknown or empty IADB series "XXXX" — use list_series for known codes`消息。使用`list_series`发现代码。
如果英国央行无法访问且存在先前缓存的值,则工具会提供缓存数据,并附带`"stale": true`标志,以便调用者可以标记此警告。完全没有缓存时,工具会返回干净的错误消息。
## 安装
在Claude Code的`settings.json`中添加:
```json
{
"mcpServers": {
"boe": {
"command": "npx",
"args": ["-y", "boe-mcp"]
}
}
}
```
或使用CLI:
```bash
claude mcp add boe -- npx -y boe-mcp
```
<details>
<summary>Claude Desktop</summary>
在`claude_desktop_config.json`中添加:
```json
{
"mcpServers": {
"boe": {
"command": "npx",
"args": ["-y", "boe-mcp"]
}
}
}
```
</details>
<details>
<summary>Cursor</summary>
在`~/.cursor/mcp.json`中添加:
```json
{
"mcpServers": {
"boe": {
"command": "npx",
"args": ["-y", "boe-mcp"]
}
}
}
```
</details>
<details>
<summary>VS Code</summary>
在`.vscode/mcp.json`中添加:
```json
{
"servers": {
"boe": {
"command": "npx",
"args": ["-y", "boe-mcp"]
}
}
}
```
</details>
## HTTP模式(远程托管)
默认情况下,服务器通过stdio作为客户端的子进程运行MCP。要改为远程托管,请以Streamable HTTP模式启动:
```bash
npx -y boe-mcp --http # 监听 http://127.0.0.1:3000/mcp
npx -y boe-mcp --http 8080 # 指定端口
BOE_MCP_HTTP_PORT=8080 npx -y boe-mcp # 环境变量代替标志
```
| 设置 | 方法 | 默认值 |
|---------|-----|---------|
| 启用HTTP模式 | `--http`标志或`BOE_MCP_HTTP_PORT`环境变量 | 关闭(stdio) |
| 端口 | `--http <port>`,否则`BOE_MCP_HTTP_PORT`,否则`3000` | `3000` |
| 绑定主机 | `BOE_MCP_HTTP_HOST` | `127.0.0.1` |
端点:`POST /mcp`(JSON-RPC),`GET /healthz`(返回`ok`,用于托管平台健康检查)。传输是**无状态的** — 每个POST请求都由一个全新的服务器实例提供服务,因此没有会话需要恢复,也没有SSE流;`GET`/`DELETE /mcp`返回405。这样使得实例可以安全地在负载均衡器后面水平扩展。
使用curl测试:
```bash
curl -X POST http://127.0.0.1:3000/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'
```
**安全性**:默认绑定到`127.0.0.1`仅接受来自本地机器的连接,并且自动启用DNS重新绑定保护(主机头验证)。设置`BOE_MCP_HTTP_HOST=0.0.0.0`将服务器暴露在网络上,没有任何身份验证 — 仅在具有反向代理或防火墙的受控环境中执行此操作(对于非环回绑定,禁用DNS重新绑定保护,因为服务器无法知道合法的公共主机名)。
## 配置
| 环境变量 | 默认值 | 描述 |
|---------|---------|-------------|
| `BOE_CACHE_TTL_MINUTES` | `60` | 英国央行响应在内存中的缓存时间(`0`禁用缓存) |
| `BOE_MCP_HTTP_PORT` | 未设置 | 在此端口上启用HTTP模式(参见[HTTP模式](#http-mode-remote-hosting)) |
| `BOE_MCP_HTTP_HOST` | `127.0.0.1` | HTTP模式的绑定主机 — `0.0.0.0`将服务器暴露在网络上;参见上面的安全说明 |
## 数据源
- **基准利率**:英国央行统计交互式数据库(IADB),序列`IUDBEDR`,通过其公共CSV端点访问。无需身份验证,无需密钥。诚实的警告:IADB并未正式记录为公共API — 它已稳定运行多年,被广泛使用,但英国央行不承诺兼容性,因此原则上可能发生破坏性变更。
- **货币政策委员会日期**:从英国央行的公开[即将举行的货币政策委员会日期页面](https://www.bankofengland.co.uk/monetary-policy/upcoming-mpc-dates)解析。解析器故意避免依赖页面的标记(它扫描可见文本中的日期),因此化妆品重新设计不会破坏它。
## 从源代码运行
```bash
git clone https://github.com/moureauf/boe-mcp.git
cd boe-mcp
npm install
npm run build
npm start # 运行stdio服务器
```
## 贡献与发布
参见[CONTRIBUTING.md](CONTRIBUTING.md)了解开发工作流程(进行更改、测试、添加工具、版本控制)以及发布管道如何连接GitHub、npm和MCP注册表。发布是自动化的:推送`v*`标签会运行`.github/workflows/publish.yml`,通过[trusted publishing](https://docs.npmjs.com/trusted-publishers/)(OIDC — 无令牌秘密,附带出处声明)构建、测试并发布到npm和官方MCP注册表。确切的命令和一次性设置在[RELEASING.md](RELEASING.md)中。
## 许可证
MIT