MyKIFRS MCP

Busca normas contables coreanas (K-IFRS, K-GAAP, auditoría, ICFR) y 3,669 preguntas y respuestas oficiales párrafo por párrafo, para que las respuestas de IA citen el número de párrafo exacto y su redacción.

Servidor MCP alojado

npx add-mcp 'https://mykifrs.eocpa.kr/mcp'

Se instala en Claude Code, Codex, Cursor y más

Documentación

MyKIFRS MCP

Búsqueda de texto completo sobre las normas contables coreanas y las preguntas frecuentes oficiales que las interpretan, servida como un servidor MCP remoto para profesionales de la contabilidad.

El corpus cubre K-IFRS, K-GAAP (일반기업회계기준), interpretaciones, el Marco Conceptual, las normas de auditoría coreanas, las normas ICFR (내부회계관리제도), las normas de divulgación de sostenibilidad KSSB y 3,669 preguntas frecuentes autorizadas (회계기준원·금융감독원·신속처리질의·IFRS IC agenda decisions). Las normas se almacenan párrafo por párrafo, y cada párrafo lleva las preguntas frecuentes que lo citan.

  • Endpoint: https://mykifrs.eocpa.kr/mcp (HTTP Streamable, sin estado)
  • Credencial: un token eocpa de eocpa.kr/token
  • Nada que instalar: registra la URL en claude.ai, Claude Desktop, Claude Code, Cursor o cualquier cliente HTTP Streamable
  • Página de inicio (coreano): eocpa.kr/mykifrs

Por qué

Un modelo de lenguaje puede parafrasear una norma contable; un profesional tiene que citarla. El número de párrafo, la redacción exacta, las condiciones en los párrafos vecinos y la respuesta del regulador a la misma pregunta son lo que va en un memorando. Este servidor los devuelve textualmente: los resultados de búsqueda apuntan a un unique_key como 1116-33, get_paragraph devuelve ese párrafo con su contexto circundante, y related_qnas lista los documentos de preguntas frecuentes que se emitieron sobre él.

Herramientas

HerramientaEntradaDevuelve
search_standardsquery, std_num?, limit?Resultados de párrafos en todas las normas (unique_key, título de la norma, categoría, fragmento), ordenados por relevancia
search_qnasquery, limit?Resultados de preguntas frecuentes con qna_key, número de documento, fecha, organismo emisor, normas relacionadas, fragmento
get_paragraphunique_key, context?El texto del párrafo con context vecinos a cada lado, metadatos de la norma y related_qnas
get_qnadoc_number o qna_keyTexto completo de un documento de preguntas frecuentes (un arreglo — un número puede aparecer más de una vez o estar vacío; qna_key = {source}:{id} fija una fila)
list_standardscategory?Catálogo de normas en el corpus con su std_num

Cada herramienta es de solo lectura, idempotente y local (SQLite + FTS5). No se realiza ninguna llamada externa mientras se atiende una solicitud.

Comportamiento de búsqueda

  • Los tokens de tres o más caracteres van a FTS5 (unidos con AND, ordenados por rango). Los tokens de uno y dos caracteres se convierten en filtros LIKE, porque el índice de trigramas no puede coincidir con ellos. Una consulta compuesta solo de tokens cortos sigue funcionando, pero se ordena por número de norma, no por relevancia.
  • Los resultados de búsqueda devuelven un fragmento con los términos coincidentes envueltos en ⟦…⟧. Un fragmento es un extracto; cita el content_text de get_paragraph, nunca el fragmento.
  • unique_key es {standard number}-{paragraph number} y los números de párrafo no son solo dígitos (B58, AG12, 6.1.1). Pasa el valor textualmente.

Uso del servidor

1. Obtén una credencial

Solicita un token eocpa en eocpa.kr/token. Las llamadas a herramientas lo requieren; el descubrimiento (initialize, tools/list, ping) funciona sin uno, por lo que la incorporación del conector nunca falla por autenticación.

2. Conéctate

La credencial puede viajar en cualquiera de estos espacios; el servidor los trata de manera idéntica:

EspacioEjemplo
Encabezado personalizadox-eocpa-token: <token> (también aceptado: x-api-key)
BearerAuthorization: Bearer <token>
Cadena de consultahttps://mykifrs.eocpa.kr/mcp?key=<token>

claude.ai (web) — el diálogo del conector personalizado solo acepta una URL, así que coloca el token en la cadena de consulta:

https://mykifrs.eocpa.kr/mcp?key=<token>

Claude Desktop / Claude Code — puente con mcp-remote para que el token permanezca en un encabezado:

{
  "mcpServers": {
    "mykifrs": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mykifrs.eocpa.kr/mcp", "--header", "x-eocpa-token:${EOCPA_TOKEN}"],
      "env": { "EOCPA_TOKEN": "<token>" }
    }
  }
}

Clientes con un campo de encabezado (Cursor y otros) — ingresa el endpoint y el encabezado x-eocpa-token directamente.

Se incluye un manifiesto de plugin de Claude Code en .claude-plugin/plugin.json, y server.json es el manifiesto para el Registro oficial de MCP.

3. Verifica

curl https://mykifrs.eocpa.kr/health

curl -X POST https://mykifrs.eocpa.kr/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "x-eocpa-token: <token>" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

Una llamada a herramienta sin credencial devuelve 401; una credencial presente pero rechazada devuelve 403 con un mensaje que lo indica.

Canal PlayMCP

https://mykifrs.eocpa.kr/mcp/playmcp es el mismo servidor detrás de la misma autenticación, con el contrato de respuesta que requiere la plataforma PlayMCP: cada resultado de herramienta se mantiene dentro de 24,000 caracteres. Los resultados que lo excedan se truncan estructuralmente (las colas de arreglos y las cadenas más largas se acortan) y se marcan con playmcp_truncated: true, un playmcp_truncation_note y playmcp_text_truncated en cualquier objeto cuyo texto se haya cortado. El endpoint estándar /mcp nunca trunca.

Datos y términos de uso

El corpus (data/kasb.sqlite) no es parte de este repositorio. El texto de las normas es obra de la Junta de Normas de Contabilidad de Corea y, para K-IFRS, de la Fundación IFRS; las preguntas frecuentes son publicaciones de KASB y del Servicio de Supervisión Financiera. El servidor alojado se ofrece para referencia personal de profesionales de la contabilidad. La redistribución del texto completo o la conversión del corpus en un servicio público requiere el permiso de los titulares de los derechos.

Desarrollo

Requiere Node.js 22+.

git clone https://github.com/taesueocpa/mykifrs-mcp.git
cd mykifrs-mcp
npm install
npm run build

Ejecutar el servidor localmente necesita un corpus en data/kasb.sqlite (esquema en src/store/kasb-db.ts), que este repositorio no incluye. Con uno en su lugar:

npm run stdio     # stdio transport
npm start         # HTTP on :8080 — /mcp and /mcp/playmcp
Variable de entornoPropósito
PORTPuerto HTTP (predeterminado 8080)
KASB_DBUbicación del corpus (predeterminado data/kasb.sqlite)
TOKEN_VALIDATE_URLEndpoint de validación de tokens (predeterminado https://eocpa.kr/validate)
MYKIFRS_ALLOW_ANONYMOUS=1Solo desarrollo local — omite la validación de tokens; ignorado en Fly.io
USAGE_DB_PATHUbicación del registro de uso (predeterminado data/usage.sqlite)
PLAYMCP_LIMIT, PLAYMCP_LIMIT_UNITPresupuesto del canal PlayMCP (predeterminado 24000, chars)
MCP_ALLOWED_ORIGINSLista de permitidos Origin separada por comas para /mcp (protección contra rebote de DNS). Las solicitudes sin un encabezado Origin y los orígenes de localhost siempre pasan

Estructura:

src/main.ts          entry point (stdio by default, --http or MCP_MODE=http for remote)
src/tools/           tool registry — the single source of truth for both transports
src/server/          dispatch, server assembly, auth, HTTP wiring, PlayMCP profile and budget guard
src/store/           SQLite schema, boot-time validation, FTS definition, usage log
src/search/          query tokenizer (FTS / LIKE split)

Relacionados

  • MyFSS MCP — documentos de supervisión contable FSS/FSC
  • eocpa.kr — centro y emisión de tokens