Skip to main content
Glama

mcp-server-3gpp

Servidor MCP para especificaciones 3GPP e IETF RFC, respaldado por un corpus SQLite preconstruido.

El servidor v2 actual está diseñado en torno a la navegación por capítulos guiada por IA, no en una lógica de búsqueda de protocolos codificada de forma rígida. El flujo de trabajo previsto es:

  1. Descubrir especificaciones relevantes con get_spec_catalog o search_3gpp_docs.

  2. Recorrer la estructura de capítulos con get_spec_toc.

  3. Recuperar el texto exacto con get_section.

  4. Expandir localmente con search_related_sections.

  5. Saltar entre documentos con get_spec_references.

La búsqueda es un punto de partida, no el producto completo. Se espera que el modelo explore y elija los capítulos de forma deliberada.

Lo que se incluye hoy

  • Servidor v2 respaldado por base de datos con 8 herramientas MCP

  • Corpus preconstruido en data/corpus/3gpp.db

  • 207 especificaciones en total: 112 TS, 2 TR, 93 RFC

  • 66,109 secciones completas y 63,376 filas de tabla de contenido (TOC)

  • 45,162 enlaces de referencia entre especificaciones

  • Punto de entrada MCP Stdio en src/index.js

  • Transporte HTTP Streamable opcional en src/http.js

Related MCP server: IEEE 802.11 MCP Server

Comportamiento de búsqueda

  • search_3gpp_docs expone la búsqueda por palabras clave con frases entre comillas, filtros spec:, sugerencias section: y negación.

  • La base de datos y el tiempo de ejecución pueden alojar incrustaciones (embeddings) de sqlite-vec a través de vec_sections.

  • La ruta de la herramienta MCP predeterminada sigue siendo basada en palabras clave a menos que se proporcione una función de incrustación de consulta a la capa de búsqueda, por lo que no asuma que la clasificación semántica está activa solo porque vec_sections existe.

Inicio rápido

git lfs install
git clone https://github.com/Lee-SiHyeon/mcp-server-3gpp.git
cd mcp-server-3gpp
npm install
npm run validate
npm start

La base de datos incluida se rastrea con Git LFS. Un inicio correcto se ve así:

[3GPP MCP] Database ready: .../data/corpus/3gpp.db
[3GPP MCP] Features - FTS: true, Vector: true
[3GPP MCP] Registered 8 tools (v2 DB mode)

Configuración del cliente MCP

Claude Desktop

{
  "mcpServers": {
    "3gpp": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-server-3gpp/src/index.js"]
    }
  }
}

VS Code / GitHub Copilot

{
  "servers": {
    "3gpp": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/mcp-server-3gpp/src/index.js"]
    }
  }
}

Ruta de base de datos personalizada opcional

{
  "env": {
    "THREEGPP_DB_PATH": "/custom/path/to/3gpp.db"
  }
}

El servidor verifica estas ubicaciones de base de datos en orden:

  1. THREEGPP_DB_PATH

  2. data/corpus/3gpp.db

  3. data/3gpp.db

Superficie de herramientas

Herramienta

Propósito

get_spec_catalog

Lista las especificaciones indexadas con título, versión, serie, descripción, recuento de secciones y recuento de páginas.

get_spec_toc

Devuelve la jerarquía de capítulos de una especificación, opcionalmente limitada por profundidad o prefijo de sección.

get_section

Obtiene el texto exacto de la sección por sectionId o specId + sectionNumber.

search_3gpp_docs

Clasifica las secciones candidatas para una consulta y devuelve los ID de sección para su recuperación posterior.

search_related_sections

Expande desde una sección ancla a través de vecinos padres, hijos, hermanos y derivados de la búsqueda.

get_spec_references

Recorre las citas entre especificaciones entrantes y salientes.

get_ingest_guide

Devuelve instrucciones operativas para la descarga de ETSI, la ingesta de RFC o la canalización de extracción.

list_specs

Alias de compatibilidad con una forma de salida más pequeña; prefiera get_spec_catalog.

Patrón de prompts recomendado

Utilice prompts que fomenten la navegación basada primero en la estructura:

Find the chapter in TS 24.301 that defines attach reject causes.
Start by locating the spec, then inspect the TOC, then fetch the most relevant section.
I need the exact wording for the NAS registration timer behavior in 5G.
Search for likely sections, then read the chapter text and nearby sections.
Show which RFCs and 3GPP specs TS 29.500 cites most often.

Estadísticas del corpus

Métrica

Valor

Total de especificaciones

207

Espec. TS

112

Espec. TR

2

Espec. RFC

93

Filas de TOC

63,376

Filas de sección

66,109

Referencias entre especificaciones

45,162

Ejecuciones de ingesta registradas

535

Arquitectura de un vistazo

LLM client
  -> MCP transport (stdio or HTTP)
  -> tool registry + validation
  -> tool handlers
  -> SQLite corpus (specs, toc, sections, sections_fts, spec_references, ingestion_runs)
  -> optional vec_sections table and guide resources

Más detalles se encuentran en docs/architecture.md y docs/data-model.md.

Validación y pruebas

npm run validate
npm test

npm run validate verifica los metadatos del paquete, resuelve la ruta de la base de datos, verifica el esquema central y los recuentos, y confirma que el servidor v2 registra la superficie actual de 8 herramientas.

Estructura del proyecto

mcp-server-3gpp/
├── src/
│   ├── index.js
│   ├── http.js
│   ├── db/
│   ├── search/
│   ├── tools/
│   └── ingest/
├── docs/
├── db/
├── data/
│   └── corpus/
│       └── 3gpp.db
├── test/
├── validate.js
└── package.json

Notas

  • El modelo operativo documentado es el servidor v2 respaldado por base de datos.

  • Todavía existe una ruta de respaldo heredada en src/index.js si no se encuentra ninguna base de datos SQLite, pero eso es una vía de escape de arranque, no la interfaz principal que documenta este repositorio.

  • get_section y get_spec_toc son las herramientas de recuperación deterministas principales. La búsqueda debe alimentarlas, no reemplazarlas.

Available Tools

3 tools
get_emm_causeGet EMM/5GMM CauseB

Get detailed information about EMM cause (LTE) or 5GMM cause (5G) values

ParametersJSON Schema
NameRequiredDescriptionDefault
causeNumberYesThe cause number (e.g., 3, 7, 15, 22)
networkNoNetwork type: 'lte' for EMM cause (TS 24.301), '5g' for 5GMM cause (TS 24.501). Default: 'lte'

Output Schema

ParametersJSON Schema
NameRequiredDescription
causeYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description states it 'gets' information, implying a read-only operation, but doesn't specify any behavioral traits like authentication needs, rate limits, error handling, or what 'detailed information' entails. For a tool with no annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, with every part contributing to understanding the tool's function. No waste or redundancy is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (simple lookup with two parameters), high schema coverage (100%), and the presence of an output schema (implied by context signals), the description is reasonably complete. It covers the core purpose and scope. However, without annotations, it lacks behavioral context, and the absence of usage guidelines reduces completeness for agent decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description doesn't add any meaning beyond what the schema provides—it mentions 'cause number' and 'network type' generically but doesn't elaborate on semantics, valid ranges beyond examples, or usage nuances. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get detailed information about EMM cause (LTE) or 5GMM cause (5G) values'. It specifies the verb ('Get'), resource ('detailed information'), and scope (LTE/5G cause values), though it doesn't explicitly differentiate from sibling tools like list_specs or search_3gpp_docs, which appear to be more general documentation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools or other contexts, leaving the agent to infer usage based on the tool name and parameters alone. There's no explicit when/when-not or alternative tool recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_specsList SpecificationsB

List available 3GPP specifications in the database

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
specsYes
totalChunksYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a listing operation, implying read-only behavior, but doesn't mention any constraints like pagination, rate limits, or what 'available' means (e.g., only active specs). This leaves significant gaps in understanding how the tool behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that directly states the tool's purpose without any fluff or redundancy. It's front-loaded and efficiently communicates the essential information, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description is minimally adequate. However, as a listing tool with no annotations, it lacks details on behavioral aspects like result format or limitations, which could be helpful despite the output schema covering return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, earning a high baseline score for not adding unnecessary information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and resource ('available 3GPP specifications in the database'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'search_3gpp_docs', which likely offers filtering capabilities, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'search_3gpp_docs'. It lacks context about whether this lists all specifications without filtering or if it's the default listing tool, leaving the agent to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_3gpp_docsSearch 3GPP DocumentsB

Search 3GPP specification documents (TS 24.008, TS 24.301, TS 24.501, TS 36.300) by keywords

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query (e.g., 'EMM cause reject', 'attach procedure', 'tracking area update')
specNoOptional: Filter by specification (e.g., 'TS 24.301', 'TS 24.501')
maxResultsNoMaximum number of results to return (default: 5)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultsYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the search functionality but lacks critical details: it doesn't specify if this is a read-only operation, what the output format looks like (though an output schema exists), whether there are rate limits, or how results are ranked. The description is minimal and doesn't compensate for the absence of annotations, leaving behavioral traits largely undefined.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise and front-loaded, consisting of a single sentence that directly states the tool's function. It includes relevant examples (e.g., document types) without unnecessary elaboration. Every word earns its place, making it efficient and easy to parse for an AI agent, with no wasted information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 parameters, 1 required), 100% schema description coverage, and the presence of an output schema, the description is somewhat complete but has gaps. It adequately covers the basic purpose but lacks usage guidelines and behavioral details. The output schema likely handles return values, reducing the need for description there, but the absence of annotations and insufficient behavioral context lowers the score to a minimal viable level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, providing clear details for all three parameters (query, spec, maxResults). The description adds minimal value beyond the schema by listing example document types, but it doesn't elaborate on parameter usage, such as how the 'spec' filter interacts with the query or the implications of 'maxResults'. Given the high schema coverage, the baseline score of 3 is appropriate, as the description doesn't significantly enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: searching 3GPP specification documents by keywords, with specific examples of document types (TS 24.008, TS 24.301, TS 24.501, TS 36.300). It distinguishes from sibling tools like 'get_emm_cause' (which likely retrieves specific EMM causes) and 'list_specs' (which likely lists available specifications) by focusing on keyword search functionality. However, it doesn't explicitly differentiate from potential overlapping search tools beyond the scope of 3GPP documents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer this over 'get_emm_cause' (e.g., for broader searches vs. specific cause retrieval) or 'list_specs' (e.g., for content search vs. metadata listing). There's also no information about prerequisites, such as required authentication or access rights, leaving usage context implied but unspecified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv1.1.0
    • First observedget_emm_cause
    • First observedlist_specs
    • First observedsearch_3gpp_docs

TDQS

B3.4/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: get_emm_cause retrieves specific technical details about cause values, list_specs provides a catalog of available specifications, and search_3gpp_docs performs keyword searches across documents. There is no overlap in functionality, making tool selection straightforward for an agent.

Naming Consistency4/5

The tools follow a consistent verb_noun pattern (get_*, list_*, search_*), which is predictable and readable. The minor deviation is that search_3gpp_docs includes a domain prefix (3gpp) in the noun, but this does not break the overall consistency significantly.

Tool Count3/5

With only 3 tools, the set feels thin for a server focused on 3GPP specifications, which could involve more operations like filtering, updating, or detailed document retrieval. However, it covers basic lookup and search functions, making it borderline but functional for limited use cases.

Completeness3/5

The tools provide core read/search capabilities (get, list, search) for 3GPP specifications, but there are notable gaps such as lack of create, update, or delete operations if the domain implies database management, and no tools for advanced filtering or cross-referencing. It supports basic queries but may leave agents unable to perform more complex tasks.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers