UVG Local MCP Server
Enables local text analysis, statistical calculations, and system information retrieval via the Model Context Protocol over stdio.
README
UVG Local MCP Server
Autor: Anggelie Velásquez — Carné 221181 Universidad del Valle de Guatemala — Curso CC3067
1. Descripción
Servidor MCP (Model Context Protocol) local, implementado desde cero en Python 3 estándar, sin usar FastMCP ni ningún SDK oficial de MCP. El servidor se comunica con un cliente a través de stdio, usando JSON-RPC 2.0 implementado manualmente.
2. Objetivo
Demostrar la comprensión del ciclo de vida de un servidor MCP (initialize → notifications/initialized → tools/list → tools/call) construyendo el protocolo manualmente, sin depender de librerías que oculten esa lógica.
3. Arquitectura
Cliente MCP <-- stdio (stdin/stdout) --> server.py
│
┌─────────┴─────────┐
│ │
jsonrpc.py tools.py
(formato JSON-RPC 2.0) (herramientas)
server.py: punto de entrada, bucle de lectura de stdin y enrutamiento de métodos.jsonrpc.py: construcción de respuestas/errores JSON-RPC 2.0 y validación básica.tools.py: registro centralizado de herramientas (metadata + schema + función ejecutora).
4. Protocolo utilizado
- Transporte: stdio (entrada estándar / salida estándar).
- Framing: un mensaje JSON-RPC 2.0 por línea (JSON Lines / NDJSON). No se usa framing tipo
Content-Length. - Formato de mensajes: JSON-RPC 2.0, implementado manualmente (sin librerías de JSON-RPC ni de MCP).
- Versión de protocolo MCP reportada:
2024-11-05(campoprotocolVersionen la respuesta deinitialize). stdoutse reserva exclusivamente para respuestas JSON-RPC. Todos los logs se envían astderr.
5. Métodos MCP implementados
| Método | Tipo | Descripción |
|---|---|---|
initialize |
Solicitud | Devuelve protocolVersion, capabilities e serverInfo. |
notifications/initialized |
Notificación | Confirmación del cliente; no genera respuesta. |
tools/list |
Solicitud | Devuelve la lista de herramientas disponibles con su inputSchema. |
tools/call |
Solicitud | Ejecuta una herramienta con los argumentos recibidos. |
Cualquier otro método devuelve el error JSON-RPC -32601 Method not found.
6. Herramientas disponibles
analizar_texto
Entrada: { "texto": "Hola mundo" }
Devuelve: cantidad de caracteres, cantidad de palabras, cantidad de líneas, texto en mayúsculas y en minúsculas.
calcular_estadisticas
Entrada: { "numeros": [10, 20, 30, 40] }
Devuelve: cantidad, suma, promedio, mínimo y máximo.
Valida que numeros sea una lista, no vacía, y con solo valores numéricos.
informacion_sistema
Sin argumentos. Devuelve: sistema operativo, versión de Python, plataforma y directorio de trabajo actual. No expone contraseñas, tokens, variables de entorno ni contenido de archivos.
7. Requisitos
- Python 3.8 o superior.
- No se requieren dependencias externas (ver requirements.txt).
8. Instalación
git clone https://github.com/Anggelie/mcp-local-server-uvg.git
cd mcp-local-server-uvg
9. Cómo ejecutar el servidor manualmente
Desde PowerShell, el servidor queda esperando mensajes por stdin:
python src/server.py
Puedes escribir una línea JSON y presionar Enter, por ejemplo:
{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {}}
El servidor responderá con una línea JSON en stdout. Para terminar, presiona Ctrl+Z y luego Enter (fin de stdin en Windows).
También puedes enviar todo el archivo de ejemplo de una sola vez:
Get-Content examples/requests.jsonl | python src/server.py
10. Cómo probarlo
Pruebas automáticas (unittest)
python -m unittest discover tests -v
Cliente de demostración (subproceso)
python examples/test_client.py
Este script levanta src/server.py como subproceso y ejecuta automáticamente el ciclo initialize -> initialized -> tools/list -> tools/call para las 3 herramientas, además de un caso de método inexistente.
11. Cómo configurarlo en un cliente MCP
Se incluye una configuración de ejemplo en client-config/claude_desktop_config.example.json:
{
"mcpServers": {
"uvg-local-server": {
"command": "python",
"args": [
"C:\\RUTA\\AL\\PROYECTO\\src\\server.py"
]
}
}
}
Importante: reemplaza C:\RUTA\AL\PROYECTO por la ruta real donde clonaste este repositorio en tu máquina.
12. Ejemplos
Ver examples/requests.jsonl, que contiene un mensaje JSON-RPC por línea cubriendo initialize, notifications/initialized, tools/list y tools/call para las tres herramientas, además de casos de error.
13. Estructura del proyecto
mcp-local-server-uvg/
│
├── src/
│ ├── server.py # Punto de entrada del servidor
│ ├── jsonrpc.py # Utilidades JSON-RPC 2.0
│ └── tools.py # Registro de herramientas
│
├── tests/
│ ├── test_jsonrpc.py
│ └── test_tools.py
│
├── examples/
│ ├── requests.jsonl
│ └── test_client.py
│
├── client-config/
│ └── claude_desktop_config.example.json
│
├── .gitignore
├── requirements.txt
├── README.md
└── README_ES.md
14. Manejo de errores
Se implementan los códigos estándar de JSON-RPC 2.0:
| Código | Significado | Cuándo ocurre |
|---|---|---|
-32700 |
Parse error | La línea recibida no es JSON válido. |
-32600 |
Invalid Request | Falta jsonrpc: "2.0" o method. |
-32601 |
Method not found | El método solicitado no está implementado. |
-32602 |
Invalid params | Argumentos faltantes o de tipo incorrecto en tools/call. |
-32603 |
Internal error | Error inesperado durante la ejecución (no debe tumbar el servidor). |
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器