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
| Herramienta | Entrada | Devuelve |
|---|---|---|
search_standards | query, 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_qnas | query, limit? | Resultados de preguntas frecuentes con qna_key, número de documento, fecha, organismo emisor, normas relacionadas, fragmento |
get_paragraph | unique_key, context? | El texto del párrafo con context vecinos a cada lado, metadatos de la norma y related_qnas |
get_qna | doc_number o qna_key | Texto 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_standards | category? | 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 elcontent_textdeget_paragraph, nunca el fragmento. unique_keyes{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:
| Espacio | Ejemplo |
|---|---|
| Encabezado personalizado | x-eocpa-token: <token> (también aceptado: x-api-key) |
| Bearer | Authorization: Bearer <token> |
| Cadena de consulta | https://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 entorno | Propósito |
|---|---|
PORT | Puerto HTTP (predeterminado 8080) |
KASB_DB | Ubicación del corpus (predeterminado data/kasb.sqlite) |
TOKEN_VALIDATE_URL | Endpoint de validación de tokens (predeterminado https://eocpa.kr/validate) |
MYKIFRS_ALLOW_ANONYMOUS=1 | Solo desarrollo local — omite la validación de tokens; ignorado en Fly.io |
USAGE_DB_PATH | Ubicación del registro de uso (predeterminado data/usage.sqlite) |
PLAYMCP_LIMIT, PLAYMCP_LIMIT_UNIT | Presupuesto del canal PlayMCP (predeterminado 24000, chars) |
MCP_ALLOWED_ORIGINS | Lista 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)