nmjib-mcp 1.0.0
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/LICENSE +21 -0
- package/README.md +57 -0
- package/bin/nmjib-mcp.js +54 -0
- package/package.json +48 -0
- package/server.json +30 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 DeALL International Co., Ltd. (주식회사 드올인터내셔널)
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# nmjib-mcp — 내만집 MCP 서버
|
|
2
|
+
|
|
3
|
+
[내만집(nmjib.com)](https://nmjib.com)은 한국의 **반셀프 인테리어** 플랫폼입니다. 이 MCP 서버는 내만집의 공개 데이터를 AI 에이전트(Claude, ChatGPT, Cursor, Gemini CLI, Codex 등)가 도구로 읽게 해 줍니다. **무인증 · 읽기 전용 · 무료.**
|
|
4
|
+
|
|
5
|
+
nmjib (nmjib.com) is a Korean semi-self ("반셀프") interior renovation platform. This MCP server exposes its public knowledge — the 22-step renovation process order with per-size schedules, construction checklists, cost reference ranges and 165 magazine guides — as read-only tools. No auth, no API key.
|
|
6
|
+
|
|
7
|
+
<!-- mcp-name: com.nmjib/nmjib -->
|
|
8
|
+
|
|
9
|
+
## 연결 (remote, 권장)
|
|
10
|
+
|
|
11
|
+
서버 주소: `https://nmjib.com/api/mcp` (Streamable HTTP)
|
|
12
|
+
|
|
13
|
+
| 클라이언트 | 설정 |
|
|
14
|
+
|---|---|
|
|
15
|
+
| Claude (claude.ai · Desktop) | 설정 → 커넥터 → 커스텀 커넥터 추가 → URL 입력, 인증 없음 |
|
|
16
|
+
| Claude Code | `claude mcp add --transport http nmjib https://nmjib.com/api/mcp` |
|
|
17
|
+
| Cursor · Windsurf | `{ "mcpServers": { "nmjib": { "url": "https://nmjib.com/api/mcp" } } }` |
|
|
18
|
+
| ChatGPT | 설정 → 커넥터 → 개발자 모드 → 만들기 → URL 입력, 인증 없음 (`search`/`fetch` 딥리서치 호환) |
|
|
19
|
+
| Gemini CLI | `{ "mcpServers": { "nmjib": { "httpUrl": "https://nmjib.com/api/mcp" } } }` |
|
|
20
|
+
| Codex CLI | `codex mcp add nmjib --url https://nmjib.com/api/mcp` |
|
|
21
|
+
|
|
22
|
+
## 연결 (stdio 브리지)
|
|
23
|
+
|
|
24
|
+
stdio 만 지원하는 호스트에서는 이 패키지가 stdin/stdout ↔ HTTP 를 이어 줍니다.
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{ "mcpServers": { "nmjib": { "command": "npx", "args": ["-y", "nmjib-mcp"] } } }
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 도구
|
|
31
|
+
|
|
32
|
+
| 도구 | 설명 |
|
|
33
|
+
|---|---|
|
|
34
|
+
| `search` | 내만집 문서 검색(매거진 165 · 안내 4 · 가이드 5) → `{results:[{id,title,url}]}` |
|
|
35
|
+
| `fetch` | 문서 본문(마크다운) → `{id,title,text,url,metadata}` |
|
|
36
|
+
| `nmjib_process_guide` | 22공정 순서·단계·설명 + 평형별 공정 그룹 영업일·합계 + 순서 규칙 |
|
|
37
|
+
| `nmjib_checklist` | 공사 전 36항목 · 공정별(22공정) · 공사 후 검수 22항목 |
|
|
38
|
+
| `nmjib_cost_reference` | 평형·공간·공정 30개 주제의 비용 범위(매거진 후기 집계) + 기준일 + 출처 |
|
|
39
|
+
| `nmjib_faq_search` | 질문에 가장 가까운 FAQ 답 + 출처 URL |
|
|
40
|
+
|
|
41
|
+
리소스 `nmjib://doc/{id}` · `nmjib://llms.txt`, 프롬프트 `nmjib_banself_plan`. 모든 도구는 `readOnlyHint: true`.
|
|
42
|
+
|
|
43
|
+
## 정책
|
|
44
|
+
|
|
45
|
+
- 단가·견적 금액·자재/상품 가격·작업자·회원 데이터는 제공하지 않습니다 ([ai.txt](https://nmjib.com/ai.txt)).
|
|
46
|
+
- 답변에 인용할 때는 「내만집(nmjib.com)」과 문서 URL 을 함께 표기해 주세요. 모든 응답 끝에 출처 줄이 있습니다.
|
|
47
|
+
- REST 로 쓰려면 [OpenAPI](https://nmjib.com/openapi.json) · 안내 [nmjib.com/ai](https://nmjib.com/ai)
|
|
48
|
+
|
|
49
|
+
## 예시
|
|
50
|
+
|
|
51
|
+
> "내만집 도구로 30평 아파트 반셀프 공정 순서와 예상 기간, 공사 전에 준비할 것을 정리해줘"
|
|
52
|
+
|
|
53
|
+
에이전트가 `nmjib_process_guide(pyeong=30)` → `nmjib_checklist(phase=pre)` → `nmjib_cost_reference(topic=30평)` 순으로 부르고, 출처 URL 과 함께 답합니다.
|
|
54
|
+
|
|
55
|
+
## License
|
|
56
|
+
|
|
57
|
+
MIT © DeALL International Co., Ltd. (주식회사 드올인터내셔널)
|
package/bin/nmjib-mcp.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// nmjib-mcp — stdio ↔ Streamable HTTP bridge for the 내만집 (nmjib.com) MCP server.
|
|
3
|
+
//
|
|
4
|
+
// Why a bridge: some MCP hosts (older Claude Desktop configs, Windsurf, custom agents) only speak stdio.
|
|
5
|
+
// The real server is stateless HTTP at https://nmjib.com/api/mcp, so each JSON-RPC line from stdin is
|
|
6
|
+
// POSTed as-is and the JSON reply is written back as one line. Notifications get no reply (HTTP 202).
|
|
7
|
+
//
|
|
8
|
+
// Usage: npx nmjib-mcp (env NMJIB_MCP_URL overrides the endpoint, e.g. a preview deployment)
|
|
9
|
+
// Zero dependencies — Node 18+ (global fetch).
|
|
10
|
+
|
|
11
|
+
import { createInterface } from 'node:readline';
|
|
12
|
+
|
|
13
|
+
const URL = process.env.NMJIB_MCP_URL || 'https://nmjib.com/api/mcp';
|
|
14
|
+
const TIMEOUT_MS = 30000;
|
|
15
|
+
let protocolVersion = '2025-06-18';
|
|
16
|
+
|
|
17
|
+
const write = (obj) => process.stdout.write(JSON.stringify(obj) + '\n');
|
|
18
|
+
|
|
19
|
+
async function forward(msg) {
|
|
20
|
+
const isNotification = msg && typeof msg === 'object' && !Array.isArray(msg) && msg.id === undefined;
|
|
21
|
+
if (msg && msg.method === 'initialize' && msg.params && typeof msg.params.protocolVersion === 'string') protocolVersion = msg.params.protocolVersion;
|
|
22
|
+
const res = await fetch(URL, {
|
|
23
|
+
method: 'POST',
|
|
24
|
+
headers: { 'content-type': 'application/json', accept: 'application/json, text/event-stream', 'mcp-protocol-version': protocolVersion, 'user-agent': 'nmjib-mcp/1.0 (stdio bridge)' },
|
|
25
|
+
body: JSON.stringify(msg),
|
|
26
|
+
signal: AbortSignal.timeout(TIMEOUT_MS),
|
|
27
|
+
});
|
|
28
|
+
if (res.status === 202 || isNotification) return;
|
|
29
|
+
const text = await res.text();
|
|
30
|
+
if (!res.ok) {
|
|
31
|
+
if (msg && msg.id !== undefined) write({ jsonrpc: '2.0', id: msg.id, error: { code: -32000, message: `nmjib upstream HTTP ${res.status}`, data: text.slice(0, 400) } });
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const negotiated = res.headers.get('mcp-protocol-version');
|
|
35
|
+
if (negotiated) protocolVersion = negotiated;
|
|
36
|
+
process.stdout.write(text.trim() + '\n');
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const rl = createInterface({ input: process.stdin, crlfDelay: Infinity });
|
|
40
|
+
rl.on('line', (line) => {
|
|
41
|
+
const trimmed = line.trim();
|
|
42
|
+
if (!trimmed) return;
|
|
43
|
+
let msg;
|
|
44
|
+
try {
|
|
45
|
+
msg = JSON.parse(trimmed);
|
|
46
|
+
} catch {
|
|
47
|
+
write({ jsonrpc: '2.0', id: null, error: { code: -32700, message: 'Parse error' } });
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
forward(msg).catch((e) => {
|
|
51
|
+
if (msg && msg.id !== undefined) write({ jsonrpc: '2.0', id: msg.id, error: { code: -32000, message: `nmjib upstream unreachable: ${e && e.message ? e.message : e}` } });
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
rl.on('close', () => process.exit(0));
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "nmjib-mcp",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Korean semi-self interior renovation data: process order, schedules, checklists, cost ranges. MCP server for 내만집 (nmjib.com), no auth, stdio bridge to https://nmjib.com/api/mcp.",
|
|
5
|
+
"mcpName": "com.nmjib/nmjib",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"nmjib-mcp": "bin/nmjib-mcp.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"bin",
|
|
12
|
+
"README.md",
|
|
13
|
+
"server.json",
|
|
14
|
+
"LICENSE"
|
|
15
|
+
],
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=18"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"mcp",
|
|
21
|
+
"model-context-protocol",
|
|
22
|
+
"interior",
|
|
23
|
+
"renovation",
|
|
24
|
+
"korea",
|
|
25
|
+
"반셀프",
|
|
26
|
+
"인테리어",
|
|
27
|
+
"nmjib",
|
|
28
|
+
"내만집",
|
|
29
|
+
"claude",
|
|
30
|
+
"chatgpt",
|
|
31
|
+
"cursor"
|
|
32
|
+
],
|
|
33
|
+
"homepage": "https://nmjib.com/ai",
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "git+https://github.com/Deall-International/nmjib-mcp.git"
|
|
37
|
+
},
|
|
38
|
+
"bugs": {
|
|
39
|
+
"url": "https://github.com/Deall-International/nmjib-mcp/issues",
|
|
40
|
+
"email": "support@nmjib.com"
|
|
41
|
+
},
|
|
42
|
+
"author": "DeALL International Co., Ltd. <support@nmjib.com> (https://nmjib.com)",
|
|
43
|
+
"license": "MIT",
|
|
44
|
+
"scripts": {
|
|
45
|
+
"start": "node bin/nmjib-mcp.js",
|
|
46
|
+
"test": "node test/smoke.mjs"
|
|
47
|
+
}
|
|
48
|
+
}
|
package/server.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
|
+
"name": "com.nmjib/nmjib",
|
|
4
|
+
"title": "내만집 (nmjib) — Korean semi-self interior renovation",
|
|
5
|
+
"description": "Korean semi-self interior renovation data: process order, schedules, checklists, cost ranges.",
|
|
6
|
+
"repository": {
|
|
7
|
+
"url": "https://github.com/Deall-International/nmjib-mcp",
|
|
8
|
+
"source": "github"
|
|
9
|
+
},
|
|
10
|
+
"websiteUrl": "https://nmjib.com/ai",
|
|
11
|
+
"version": "1.0.0",
|
|
12
|
+
"remotes": [
|
|
13
|
+
{
|
|
14
|
+
"type": "streamable-http",
|
|
15
|
+
"url": "https://nmjib.com/api/mcp"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"packages": [
|
|
19
|
+
{
|
|
20
|
+
"registryType": "npm",
|
|
21
|
+
"registryBaseUrl": "https://registry.npmjs.org",
|
|
22
|
+
"identifier": "nmjib-mcp",
|
|
23
|
+
"version": "1.0.0",
|
|
24
|
+
"runtimeHint": "npx",
|
|
25
|
+
"transport": {
|
|
26
|
+
"type": "stdio"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|