mcpField
J
jessicayanwang-test

jessicayanwang-test

远程服务
github.com/jessicayanwang金融数据056 周前更新
代码仓库

关于 jessicayanwang-test

Frankfurter MCP 将 Frankfurter 货币 API 提供给语言模型 Agent 使用,支持查询当前和历史汇率、货币换算及币种列表,并提供 stdio 和 HTTP 传输方式。

主要功能

  1. 01列出支持的币种
  2. 02查询最新汇率
  3. 03按最新汇率换算
  4. 04查询历史汇率及日期范围
  5. 05按指定日期汇算
  6. 06支持 stdio、SSE 和流式 HTTP

适用场景

  1. 01查看选定币种的当前汇率
  2. 02按当前汇率换算金额
  3. 03查询过去某日或日期范围的汇率
  4. 04按历史汇率换算金额

MCP 相关

该服务将 Frankfurter API 功能作为 MCP 工具提供。MCP 客户端可通过 stdio、SSE 或流式 HTTP 连接。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://server.smithery.ai/@jessicayanwang/test/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://server.smithery.ai/@jessicayanwang/test/mcp需要授权

工具

详细介绍

Python 3.12+ pytest GitHub commits since latest release PyPI PyPI - Downloads Verified on MseeP smithery badge

Frankfurter MCP

Frankfurter 是一个实用的 API,可获取欧洲中央银行等来源发布的最新货币汇率、历史数据或时间序列。如果你需要通过模型上下文协议(MCP)将 Frankfurter API 作为工具提供给语言模型 Agent 使用,那么 Frankfurter MCP 正是你所需要的。

安装

如果你的目的是使用此 MCP 服务提供的工具,请参阅下文“用法 > 客户端”小节。

下文将你克隆此仓库的目录称为_工作目录_或_WD_。

安装 uv。若要在虚拟环境中安装项目及其最少依赖项,请在_WD_中运行以下命令。若要安装所有非必需依赖项(开发和测试所需),请在以下命令中将 --no-dev 替换为 --all-groups 标志。

uv sync --no-dev

环境变量

以下是可用于配置应用程序的环境变量列表。环境变量模板位于文件 .env.template 中。请注意,下表所列的默认值与 .env.template 文件中的默认值并不总是相同。

以下环境变量可以添加 FASTMCP_ 前缀后指定:HOST、PORT、DEBUG 和 LOG_LEVEL。有关 FastMCP 的信息,请参阅全局配置选项。请注意,以 on_duplicate_ 为前缀的选项若通过环境变量指定,将被忽略。

底层 HTTP 客户端也会读取一些环境变量,详情参见 HTTPX 库文档。此外,可以配置 SSL_CERT_FILE 和 SSL_CERT_DIR,以使用托管 API 端点或中间 HTTP(S) 代理服务器的自签名证书。

变量[默认值] 和说明
LOG_LEVEL[INFO] 日志级别。更改此级别也会影响其他可能使用相同环境变量的依赖库的日志输出。有效值请参阅 Python 日志文档。
HTTPX_TIMEOUT[5.0] 底层 HTTP 客户端等待 Frankfurter API 响应的时间,以秒为单位。
HTTPX_VERIFY_SSL[True] 如果您使用的代理服务器带有自签名证书等,可以将此变量设为 False,以关闭 SSL 证书验证。不过,_不建议_将此项设为 False:应改用 SSL_CERT_FILE 和 SSL_CERT_DIR 变量来正确配置自签名证书。
FAST_MCP_HOST[localhost] 除非服务器传输方式(见下文)设为 stdio,否则此变量指定 MCP 服务必须绑定的主机。
FAST_MCP_PORT[8000] 除非服务器传输方式(见下文)设为 stdio,否则此变量指定 MCP 服务必须监听的端口。
MCP_SERVER_TRANSPORT[stdio] 可接受的选项为 stdio、sse 或 streamable-http。不过,在 .env.template 中,默认值设为 stdio。
MCP_SERVER_INCLUDE_METADATA_IN_RESPONSE[True] 此变量用于指定是否在 MCP 类型 TextContent 中附加元数据,该类型会封装每次工具调用的响应数据。例如,附加的元数据将包含用于获取响应的 Frankfurter 服务的 API URL 等信息。
FRANKFURTER_API_URL[https://api.frankfurter.dev/v1] 如果您自行托管 Frankfurter API,应将此项更改为您部署的 API 端点地址。

用法

以下小节将介绍如何将 Frankfurter MCP 作为服务运行,以及如何从 MCP 客户端访问它。

服务

运行服务时,您可以选择使用 stdio 传输方式或 HTTP 选项(sse 或较新的 streamable-http)。

使用默认设置并将 MCP_SERVER_TRANSPORT 设为 sse 或 streamable-http 时,MCP 端点将通过 HTTP 提供服务:对于 Server Sent Events(SSE)传输方式,地址为 http://localhost:8000/sse;对于可流式 HTTP 传输方式,地址为 http://localhost:8000/mcp。

如果您想使用 stdio 传输方式和默认参数运行 Frankfurter MCP,请在不使用 .env.template 文件的情况下执行以下命令。

使用 uv 运行服务

可选:将 .env.template 文件复制为 WD 中的 .env 文件,以修改上述环境变量;如果您想使用非默认设置,可以这样操作。或者,您也可以在 shell 中导出想要修改的环境变量。

在 WD 中运行以下命令以启动 MCP 服务。

uv run frankfurtermcp
使用 PyPI 软件包通过 pip 运行服务

在虚拟环境中使用 pip 从 PyPI 安装此软件包(该环境可以由 uv、pyenv 或 conda 管理),然后运行以下命令启动服务。

可选:如果希望修改上述环境变量的默认值,可以添加一个 .env 文件,并填入 .env.template 文件中的内容。或者,也可以在 shell 中导出想要修改的环境变量。

pip install frankfurtermcp
python -m frankfurtermcp.server
使用 Docker 运行服务

此代码库中提供了两个 Dockerfile。

  • local.dockerfile,用于将 Frankfurter MCP 服务容器化。
  • smithery.dockerfile,用于部署到 Smithery AI,你也可以不使用它。

要构建镜像、创建容器并启动容器,请在 WD 中运行以下命令。如果你愿意,也可以为镜像和容器取更短的名称。

如果将 .env.template 中的端口改为 8000 以外的值,请记得更改以下命令中的端口号。除了使用 --env-file 选项传递所有环境变量,你也可以使用 -e 选项逐个传递环境变量。

docker build -t frankfurtermcp -f local.dockerfile .
docker create -p 8000:8000/tcp --env-file .env.template --expose 8000 --name frankfurtermcp-container frankfurtermcp
docker start frankfurtermcp-container

成功构建并启动容器后,MCP 服务将通过 HTTP 提供访问:使用 Server Sent Events(SSE)传输时,地址为 http://localhost:8000/sse;使用可流式 HTTP 传输时,地址为 http://localhost:8000/mcp。

云托管服务

目前可用的云托管选项如下。

客户端访问

本小节介绍客户端连接并测试 FrankfurterMCP 服务的方式。

官方 MCP 可视化检查器

MCP Inspector 是一款_官方_的 Model Context Protocol 工具,开发者可用它测试和调试 MCP 服务。这是全面了解 MCP 服务的最佳方式。

使用它需要安装 Node.js。安装和管理 node 以及 MCP Inspector 等软件包的最佳方式是使用 Node Version Manager(或 nvm)。安装 nvm 后,运行以下命令即可安装并使用最新的长期支持版本 node。

nvm install --lts
nvm use --lts

之后,在 WD 中运行以下命令(安装并)启动 MCP Inspector。

npx @modelcontextprotocol/inspector uv run frankfurtermcp

这将在端口 6274 创建一个带有身份验证令牌的本地 URL,你可以复制该 URL 并在浏览器中打开。进入 MCP Inspector UI 后,点击 Connect 以连接到 MCP 服务。随后,你便可以探索服务上提供的工具。

Claude Desktop、Visual Studio 等

以下是可用于 Claude Desktop、Visual Studio Code 等系统的 stdio 传输服务条目。

{
    "command": "uv",
    "args": [
        "run",
        "frankfurtermcp"
    ]
}

你可能需要将 args 列表中的最后一项 frankfurtermcp 替换为脚本的完整路径,例如 WD/.venv/bin/frankfurtermcp。同样,你也可以不用 uv,而改用以下 JSON 配置,并将路径正确替换为 python3.12 的路径,例如 WD/.venv/bin/python3.12。

{
    "command": "python3.12",
    "args": [
        "-m",
        "frankfurtermcp.server"
    ]
}

可用 MCP 功能列表

FrankfurterMCP 提供以下 MCP 功能。

工具

下表列出了 FrankfurterMCP 服务公开的工具名称。此处显示的描述仅供文档参考,可能与通过模型上下文协议公开的实际描述有所不同。

名称描述
get_supported_currencies获取 Frankfurter API 支持的货币列表。
get_latest_exchange_rates获取给定基准货币在指定货币中的最新汇率。
convert_currency_latest使用最新汇率将金额从一种货币兑换为另一种货币。
get_historical_exchange_rates获取给定基准货币在指定日期或日期范围内、以指定货币计价的历史汇率。
convert_currency_specific_date使用指定日期的汇率将金额从一种货币兑换为另一种货币。

为简洁起见,下表未列出每个工具必需和可选的参数,但 MCP 客户端可通过协议获取这些参数。

参与贡献

为 Git 安装 pre-commit 和 ruff。然后在 WD 中运行以下命令以启用 pre-commit。

pre-commit install

欢迎提交拉取请求。如需进行重大更改,请先创建议题,讨论你希望进行的更改。

测试与覆盖率

运行提供的测试用例,请执行以下命令。向命令添加标志 --capture=tee-sys,即可显示更多控制台输出。

uv run --group test pytest tests/

有一个方便的测试脚本 WD/run-tests.sh,可运行所有测试并生成覆盖率报告,如下所示。它还可以接受要传递给 pytest 的参数和选项,例如使用 -k 筛选要运行的测试。如果运行所有测试,生成的覆盖率报告可能如下所示。

Name                             Stmts   Miss  Cover
----------------------------------------------------
src/frankfurtermcp/__init__.py      10      0   100%
src/frankfurtermcp/common.py        23      0   100%
src/frankfurtermcp/mixin.py         52      4    92%
src/frankfurtermcp/model.py         17      0   100%
src/frankfurtermcp/server.py       111     20    82%
tests/__init__.py                    0      0   100%
tests/test_data_models.py           60      0   100%
tests/test_server.py                71      0   100%
----------------------------------------------------
TOTAL                              344     24    93%

许可证

MIT。

项目状态

以下表格列出了项目状态的一些更新。请注意,这些更新并不对应具体的提交或里程碑。

日期状态备注或观察
2025 年 9 月 6 日active代码重构与清理。
2025 年 6 月 27 日active已在 Glama.AI 和 Smithery.AI 上成功进行远程部署。
2025 年 6 月 9 日active添加容器化功能,并支持自签名代理。
2025 年 6 月 7 日active项目启动。添加了覆盖 Frankfurter API 所有功能的工具。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。