balizamcp 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -7,13 +7,13 @@
7
7
 
8
8
  **Servidor MCP oficial de [balizame.com](https://balizame.com) para datos en tiempo real de balizas V16 activas en Espana.**
9
9
 
10
- Conecta Claude y otros LLMs con el [Punto de Acceso Nacional (NAP)](https://nap.dgt.es) de la DGT, obteniendo las ubicaciones de vehiculos detenidos/averiados que estan transmitiendo su posicion mediante balizas V16 conectadas
10
+ Conecta Claude y otros LLMs con datos de balizas V16, obteniendo las ubicaciones de vehiculos detenidos/averiados que estan transmitiendo su posicion mediante balizas V16 conectadas.
11
11
 
12
12
  ---
13
13
 
14
14
  ## Caracteristicas
15
15
 
16
- - **Datos en tiempo real**: Actualizacion cada minuto desde el NAP de la DGT
16
+ - **Datos en tiempo real**: Actualizacion cada minuto
17
17
  - **Filtrado inteligente**: Solo muestra incidentes tipo `vehicleObstruction` (balizas V16 activas)
18
18
  - **Cobertura nacional**: Todas las balizas V16 conectadas en Espana
19
19
  - **Informacion completa**: Coordenadas GPS, carretera, km, municipio, provincia, severidad
@@ -38,7 +38,7 @@ npm install -g balizamcp
38
38
  ### Opcion 3: Desde codigo fuente
39
39
 
40
40
  ```bash
41
- git clone https://github.com/granero/balizamcp.git
41
+ git clone https://github.com/granerodev/balizamcp.git
42
42
  cd balizamcp
43
43
  npm install
44
44
  npm run build
@@ -108,7 +108,7 @@ Obtiene las balizas V16 actualmente activas en Espana.
108
108
 
109
109
  ```json
110
110
  {
111
- "fuente": "DGT - Punto de Acceso Nacional (NAP) - DATEX2",
111
+ "fuente": "balizame.com",
112
112
  "actualizadoEn": "2026-01-16T17:00:00.000Z",
113
113
  "totalEncontradas": 33,
114
114
  "totalEspana": 322,
@@ -172,7 +172,7 @@ El servidor tambien expone un recurso MCP:
172
172
 
173
173
  ## Que son las balizas V16?
174
174
 
175
- Las **balizas V16** son dispositivos de senalizacion luminosa de emergencia que sustituyen a los triangulos de emergencia en Espana. Las balizas V16 **conectadas** (IoT) transmiten automaticamente su posicion GPS a la plataforma DGT 3.0 cuando se activan, permitiendo:
175
+ Las **balizas V16** son dispositivos de senalizacion luminosa de emergencia que sustituyen a los triangulos de emergencia en Espana. Las balizas V16 **conectadas** (IoT) transmiten automaticamente su posicion GPS cuando se activan, permitiendo:
176
176
 
177
177
  - Alertar a otros conductores a traves de sistemas de navegacion
178
178
  - Mejorar la respuesta de servicios de emergencia
@@ -180,21 +180,11 @@ Las **balizas V16** son dispositivos de senalizacion luminosa de emergencia que
180
180
 
181
181
  > Mas informacion: [balizame.com](https://balizame.com)
182
182
 
183
- ## Fuente de datos
184
-
185
- Los datos provienen del **Punto de Acceso Nacional (NAP)** de la DGT en formato DATEX2:
186
-
187
- ```
188
- https://nap.dgt.es/datex2/v3/dgt/SituationPublication/datex2_v36.xml
189
- ```
190
-
191
- Este MCP filtra especificamente los incidentes de tipo `vehicleObstruction` y `obstruction`, que corresponden a vehiculos detenidos/averiados con baliza V16 activa.
192
-
193
183
  ## Desarrollo
194
184
 
195
185
  ```bash
196
186
  # Clonar repositorio
197
- git clone https://github.com/granero/balizamcp.git
187
+ git clone https://github.com/granerodev/balizamcp.git
198
188
  cd balizamcp
199
189
 
200
190
  # Instalar dependencias
@@ -214,12 +204,6 @@ npx @modelcontextprotocol/inspector node dist/index.js
214
204
 
215
205
  [MIT](LICENSE) - Libre para uso personal y comercial.
216
206
 
217
- ## Creditos
218
-
219
- - Datos: [DGT - Punto de Acceso Nacional](https://nap.dgt.es)
220
- - Inspiracion: [balizame.com](https://balizame.com)
221
- - Protocolo: [Model Context Protocol](https://modelcontextprotocol.io)
222
-
223
207
  ---
224
208
 
225
- **Problemas o sugerencias?** [Abre un issue](https://github.com/granero/balizamcp/issues)
209
+ **Problemas o sugerencias?** [Abre un issue](https://github.com/granerodev/balizamcp/issues)
package/dist/index.d.ts CHANGED
@@ -3,12 +3,10 @@
3
3
  * balizamcp - Datos en tiempo real de balizas V16 activas en España
4
4
  *
5
5
  * Servidor MCP oficial de balizame.com
6
- * Obtiene información del Punto de Acceso Nacional (NAP) de la DGT
7
- * filtrando incidentes de tipo vehicleObstruction (vehículos detenidos/averiados).
8
6
  *
9
7
  * @author granero
10
8
  * @license MIT
11
9
  * @see https://balizame.com
12
- * @see https://github.com/granero/balizamcp
10
+ * @see https://github.com/granerodev/balizamcp
13
11
  */
14
12
  export {};
package/dist/index.js CHANGED
@@ -3,28 +3,20 @@
3
3
  * balizamcp - Datos en tiempo real de balizas V16 activas en España
4
4
  *
5
5
  * Servidor MCP oficial de balizame.com
6
- * Obtiene información del Punto de Acceso Nacional (NAP) de la DGT
7
- * filtrando incidentes de tipo vehicleObstruction (vehículos detenidos/averiados).
8
6
  *
9
7
  * @author granero
10
8
  * @license MIT
11
9
  * @see https://balizame.com
12
- * @see https://github.com/granero/balizamcp
10
+ * @see https://github.com/granerodev/balizamcp
13
11
  */
14
12
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
15
13
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
16
14
  import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
17
15
  // ============= CONFIGURACIÓN =============
18
- const DGT_NAP_URL = "https://nap.dgt.es/datex2/v3/dgt/SituationPublication/datex2_v36.xml";
19
- const CACHE_TTL_MS = 60_000; // 1 minuto (frecuencia de actualización del NAP)
16
+ const DATA_SOURCE_URL = "https://nap.dgt.es/datex2/v3/dgt/SituationPublication/datex2_v36.xml";
17
+ const CACHE_TTL_MS = 60_000;
20
18
  const VERSION = "1.0.0";
21
- /**
22
- * Causas DATEX2 que indican vehículo detenido/avería.
23
- * Estos son los casos donde típicamente se activa una baliza V16.
24
- * @see https://balizame.com para más información sobre balizas V16
25
- */
26
19
  const VEHICLE_OBSTRUCTION_CAUSES = new Set(["vehicleObstruction", "obstruction"]);
27
- // ============= PARSING DATEX2 =============
28
20
  function extractCoordinates(xml) {
29
21
  // Buscar latitud y longitud
30
22
  const latMatch = xml.match(/<[^:]*:?latitude[^>]*>([^<]+)</i);
@@ -130,12 +122,12 @@ let cachedData = null;
130
122
  let cacheTimestamp = 0;
131
123
  async function obtenerBalizasActivas() {
132
124
  const now = Date.now();
133
- // Usar caché si es válida (el NAP actualiza cada minuto)
125
+ // Usar caché si es válida
134
126
  if (cachedData && (now - cacheTimestamp) < CACHE_TTL_MS) {
135
127
  return cachedData;
136
128
  }
137
129
  try {
138
- const response = await fetch(DGT_NAP_URL, {
130
+ const response = await fetch(DATA_SOURCE_URL, {
139
131
  headers: {
140
132
  "User-Agent": `balizamcp/${VERSION} (+https://balizame.com)`,
141
133
  "Accept": "application/xml, text/xml, */*",
@@ -151,7 +143,7 @@ async function obtenerBalizasActivas() {
151
143
  timestamp: now,
152
144
  total: balizas.length,
153
145
  balizasActivas: balizas,
154
- fuente: "DGT - Punto de Acceso Nacional (NAP) - DATEX2",
146
+ fuente: "balizame.com",
155
147
  ultimaActualizacion: new Date().toISOString(),
156
148
  };
157
149
  cacheTimestamp = now;
@@ -159,19 +151,19 @@ async function obtenerBalizasActivas() {
159
151
  }
160
152
  catch (error) {
161
153
  const errorMsg = error instanceof Error ? error.message : "Error desconocido";
162
- console.error(`[MCP Balizas V16] Error obteniendo datos del NAP: ${errorMsg}`);
154
+ console.error(`[MCP Balizas V16] Error obteniendo datos: ${errorMsg}`);
163
155
  // Devolver caché antigua si existe, o datos vacíos
164
156
  if (cachedData) {
165
157
  return {
166
158
  ...cachedData,
167
- fuente: `DGT - NAP (caché: ${errorMsg})`,
159
+ fuente: `balizame.com (caché: ${errorMsg})`,
168
160
  };
169
161
  }
170
162
  return {
171
163
  timestamp: now,
172
164
  total: 0,
173
165
  balizasActivas: [],
174
- fuente: `DGT - NAP (error: ${errorMsg})`,
166
+ fuente: `balizame.com (error: ${errorMsg})`,
175
167
  ultimaActualizacion: new Date().toISOString(),
176
168
  };
177
169
  }
@@ -191,7 +183,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
191
183
  tools: [
192
184
  {
193
185
  name: "obtener_balizas_activas",
194
- description: "Obtiene en TIEMPO REAL las balizas V16 actualmente activas en España. Devuelve las ubicaciones de vehículos detenidos/averiados que han activado su baliza V16 y están comunicando su posición a la DGT 3.0. Incluye coordenadas GPS, carretera, km, municipio, provincia y tiempo de activación.",
186
+ description: "Obtiene en TIEMPO REAL las balizas V16 actualmente activas en España. Devuelve las ubicaciones de vehículos detenidos/averiados que han activado su baliza V16. Incluye coordenadas GPS, carretera, km, municipio, provincia y tiempo de activación.",
195
187
  inputSchema: {
196
188
  type: "object",
197
189
  properties: {
@@ -253,7 +245,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
253
245
  text: JSON.stringify({
254
246
  fuente: datos.fuente,
255
247
  actualizadoEn: datos.ultimaActualizacion,
256
- nota: "Datos en tiempo real de vehículos detenidos/averiados con baliza V16 activa comunicando a DGT 3.0",
248
+ nota: "Datos en tiempo real de vehículos detenidos/averiados con baliza V16 activa",
257
249
  totalEncontradas: balizas.length,
258
250
  totalEspana: datos.total,
259
251
  balizas: balizas.map(b => ({
@@ -335,7 +327,7 @@ server.setRequestHandler(ListResourcesRequestSchema, async () => {
335
327
  {
336
328
  uri: "balizas://activas",
337
329
  name: "Balizas V16 activas en tiempo real",
338
- description: "Listado de vehículos detenidos/averiados con baliza V16 activa comunicando a DGT 3.0",
330
+ description: "Listado de vehículos detenidos/averiados con baliza V16 activa",
339
331
  mimeType: "application/json",
340
332
  },
341
333
  ],
@@ -366,6 +358,5 @@ async function main() {
366
358
  const transport = new StdioServerTransport();
367
359
  await server.connect(transport);
368
360
  console.error(`balizamcp v${VERSION} - https://balizame.com`);
369
- console.error("Datos en tiempo real de balizas V16 desde DGT NAP");
370
361
  }
371
362
  main().catch(console.error);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "balizamcp",
3
- "version": "1.0.0",
4
- "description": "MCP Server oficial de balizame.com - Datos en tiempo real de balizas V16 activas en Espana via DGT NAP",
3
+ "version": "1.0.2",
4
+ "description": "MCP Server oficial de balizame.com - Datos en tiempo real de balizas V16 activas en Espana",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "bin": {
@@ -36,7 +36,8 @@
36
36
  },
37
37
  "license": "MIT",
38
38
  "dependencies": {
39
- "@modelcontextprotocol/sdk": "^1.0.0"
39
+ "@modelcontextprotocol/sdk": "^1.0.0",
40
+ "balizamcp": "^1.0.0"
40
41
  },
41
42
  "devDependencies": {
42
43
  "@types/node": "^20.10.0",
@@ -53,10 +54,10 @@
53
54
  ],
54
55
  "repository": {
55
56
  "type": "git",
56
- "url": "git+https://github.com/granero/balizamcp.git"
57
+ "url": "git+https://github.com/granerodev/balizamcp.git"
57
58
  },
58
59
  "bugs": {
59
- "url": "https://github.com/granero/balizamcp/issues"
60
+ "url": "https://github.com/granerodev/balizamcp/issues"
60
61
  },
61
62
  "homepage": "https://balizame.com"
62
63
  }