mcp_server

mcp_server

A minimal MCP server providing currency conversion, geocoding, and weather tools, with a CLI client supporting Spanish special commands.

Category
访问服务器

README

Startup MVP — MCP Server & Client

This repository implements the project structure requested in the exercise: a small MCP-style tools server and a CLI client that can call the server's tools. The implementation is intentionally minimal and deterministic so it runs without external API keys, while also allowing integration with real APIs when the corresponding environment variables are provided.

Key features included:

  • MCP tools server (server/mcp_server.py) exposing endpoints for currency conversion, geocoding and weather.
  • Client CLI (client/cli_interface.py) that supports English commands and Spanish special commands requested in the exercise (/salir, /clear, /status, /help).
  • Clear, documented project layout with environment example and requirements.

Architecture

  • Server: FastAPI app in server/mcp_server.py providing lightweight tools endpoints.
  • Client: Python CLI in client/cli_interface.py that calls the MCP server using HTTP.
  • Config: config/settings.py centralizes env-based settings.

Files and structure

startup-mvp/
├── server/
│   ├── __init__.py
│   ├── mcp_server.py           # FastAPI app exposing tools
│   ├── currency_tools.py       # Currency conversion helpers
│   ├── weather_tools.py        # Weather helper (requires coords)
│   ├── geocoding_tools.py      # City -> coordinates helper
│   └── api_clients.py          # HTTP clients for external APIs
├── client/
│   ├── __init__.py
│   ├── openai_client.py        # Client helpers that talk to the MCP server
│   └── cli_interface.py        # CLI with Spanish special commands (/salir, /clear, /status)
├── config/
│   ├── __init__.py
│   └── settings.py             # Environment-driven settings
├── main_server.py              # Run the MCP server (uvicorn)
├── main_client.py              # Run the CLI (asyncio)
├── requirements.txt
├── .env.example                # Example env vars
└── README.md

Endpoints (MCP server)

  • POST /tools/convert_currency - body: { "amount": float, "src": "USD", "dst": "EUR" }
  • POST /tools/geocode - body: { "city": "Madrid" }
  • POST /tools/weather - body: { "lat": float, "lon": float }

Added chat endpoints:

  • POST /chat/message - body: { "user_message": "..." } — returns saved message and deterministic assistant reply.
  • GET /chat/history - returns saved chat history.
  • DELETE /chat/history - clears chat history.

Web UI:

The repository now includes a minimal web UI under ui/. When the MCP server is running you can open:

http://127.0.0.1:8000/ui/index.html

to interact with the /chat endpoints from the browser.

The server returns deterministic placeholder data when external API keys are not set.

Entrega (versión final)

The final, cleaned project ready for delivery is located in the entrega/ folder at the repository root. It contains only the files required by the exercise and a minimal CI workflow under entrega/.github/workflows/ci.yml.

All other auxiliary files, tests, Docker artifacts and scripts were moved to archivos_extras/.

CLI usage (important: supports Spanish special commands)

Start the server in one terminal:

python main_server.py

Start the client in another terminal:

python main_client.py

Commands you can use inside the CLI:

  • convert <amount> <src> <dst> — Convert currencies (e.g. convert 10 USD EUR).
  • geocode <city> — Get coordinates for a city (e.g. geocode Madrid).
  • weather <lat> <lon> — Get weather for coordinates (e.g. weather 40.41 -3.7).

Spanish special commands (as requested in the exercise):

  • /salir — Salir del CLI (equivalent to exit).
  • /clear — Limpiar historial local (if present). Note: the MCP tools server does not persist chat history by default.
  • /status — Comprueba la disponibilidad del servidor MCP (intenta acceder a /openapi.json).
  • /help — Mostrar esta ayuda.

All commands also accept English equivalents for exit/quit.

Running and testing

  1. Create and activate a virtualenv and install dependencies:
python -m venv venv
venv\Scripts\activate   # Windows
pip install -r requirements.txt
  1. Launch the server and client as shown above, then try examples:
$ convert 10 USD EUR
$ geocode Barcelona
$ weather 41.3851 2.1734
$ /status
$ /salir

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选