obsidian-mcp-pro 1.1.4 → 1.3.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/README.md +32 -1
- package/build/http-server.d.ts +19 -0
- package/build/http-server.d.ts.map +1 -0
- package/build/http-server.js +163 -0
- package/build/http-server.js.map +1 -0
- package/build/index.d.ts +3 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +201 -17
- package/build/index.js.map +1 -1
- package/build/install.d.ts +9 -0
- package/build/install.d.ts.map +1 -0
- package/build/install.js +93 -0
- package/build/install.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -62,7 +62,23 @@ Every one of the 23 tools ships with rich descriptions, typed schemas, human-rea
|
|
|
62
62
|
|
|
63
63
|
## Quick Start
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
> **Using Obsidian?** There's also an [Obsidian plugin](https://github.com/rps321321/obsidian-mcp-pro-plugin) that runs this server inside the app with a ribbon toggle and settings UI — no config-file editing. Recommended for most users.
|
|
66
|
+
|
|
67
|
+
### One-command install (Claude Desktop / Cursor)
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
npx -y obsidian-mcp-pro install
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
This merges an entry into your `claude_desktop_config.json` (or `~/.cursor/mcp.json` with `--client=cursor`), backs up the previous file, and prints next steps. Works on macOS, Windows, and Linux.
|
|
74
|
+
|
|
75
|
+
Pin a specific vault:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
npx -y obsidian-mcp-pro install --vault /path/to/your/vault
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Manual Claude Desktop config
|
|
66
82
|
|
|
67
83
|
Add this to your Claude Desktop configuration file (`claude_desktop_config.json`):
|
|
68
84
|
|
|
@@ -99,6 +115,21 @@ If you have multiple vaults, specify which one:
|
|
|
99
115
|
claude mcp add obsidian-mcp-pro -- npx -y obsidian-mcp-pro
|
|
100
116
|
```
|
|
101
117
|
|
|
118
|
+
### HTTP transport (remote clients, Cursor, ChatGPT, web)
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
npx -y obsidian-mcp-pro --transport=http --port=3333
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Endpoint: `http://127.0.0.1:3333/mcp` (Streamable HTTP). Protect with a bearer token:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
npx -y obsidian-mcp-pro --transport=http --token=your-secret
|
|
128
|
+
# or: MCP_HTTP_TOKEN=your-secret npx -y obsidian-mcp-pro --transport=http
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
The HTTP server binds to `127.0.0.1` by default with DNS rebinding protection enabled. Override with `--host=0.0.0.0` only when you know what you're doing.
|
|
132
|
+
|
|
102
133
|
---
|
|
103
134
|
|
|
104
135
|
## Configuration
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
export interface HttpServerOptions {
|
|
3
|
+
host: string;
|
|
4
|
+
port: number;
|
|
5
|
+
bearerToken?: string;
|
|
6
|
+
buildMcpServer: () => McpServer;
|
|
7
|
+
/** Install SIGINT/SIGTERM handlers + exit the process on shutdown. Default
|
|
8
|
+
* `true` for CLI use. Set `false` when embedding (e.g. inside an Obsidian
|
|
9
|
+
* plugin) so stopping the server doesn't kill the host process. */
|
|
10
|
+
installSignalHandlers?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface HttpServerHandle {
|
|
13
|
+
host: string;
|
|
14
|
+
port: number;
|
|
15
|
+
url: string;
|
|
16
|
+
stop: () => Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export declare function startHttpServer(opts: HttpServerOptions): Promise<HttpServerHandle>;
|
|
19
|
+
//# sourceMappingURL=http-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,SAAS,CAAC;IAChC;;wEAEoE;IACpE,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAgDD,wBAAsB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAkIxF"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { createServer } from "node:http";
|
|
2
|
+
import { randomUUID } from "node:crypto";
|
|
3
|
+
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
4
|
+
import { isInitializeRequest } from "@modelcontextprotocol/sdk/types.js";
|
|
5
|
+
const MAX_BODY_BYTES = 4 * 1024 * 1024;
|
|
6
|
+
function readBody(req) {
|
|
7
|
+
return new Promise((resolve, reject) => {
|
|
8
|
+
let size = 0;
|
|
9
|
+
const chunks = [];
|
|
10
|
+
req.on("data", (chunk) => {
|
|
11
|
+
size += chunk.length;
|
|
12
|
+
if (size > MAX_BODY_BYTES) {
|
|
13
|
+
reject(new Error("Request body too large"));
|
|
14
|
+
req.destroy();
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
chunks.push(chunk);
|
|
18
|
+
});
|
|
19
|
+
req.on("end", () => {
|
|
20
|
+
const raw = Buffer.concat(chunks).toString("utf-8");
|
|
21
|
+
if (!raw)
|
|
22
|
+
return resolve(undefined);
|
|
23
|
+
try {
|
|
24
|
+
resolve(JSON.parse(raw));
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
reject(err);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
req.on("error", reject);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function sendJson(res, status, body) {
|
|
34
|
+
res.writeHead(status, { "Content-Type": "application/json" });
|
|
35
|
+
res.end(JSON.stringify(body));
|
|
36
|
+
}
|
|
37
|
+
function setCors(res) {
|
|
38
|
+
res.setHeader("Access-Control-Allow-Origin", "*");
|
|
39
|
+
res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, Mcp-Session-Id, Mcp-Protocol-Version");
|
|
40
|
+
res.setHeader("Access-Control-Expose-Headers", "Mcp-Session-Id, Mcp-Protocol-Version, WWW-Authenticate");
|
|
41
|
+
res.setHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, OPTIONS");
|
|
42
|
+
}
|
|
43
|
+
export async function startHttpServer(opts) {
|
|
44
|
+
const transports = new Map();
|
|
45
|
+
const mcpServer = opts.buildMcpServer();
|
|
46
|
+
// DNS rebinding protection: restrict Host header to the bound interface +
|
|
47
|
+
// localhost aliases. Browsers attacking via dns-rebinding will present a
|
|
48
|
+
// third-party hostname and be rejected.
|
|
49
|
+
const allowedHosts = [
|
|
50
|
+
`${opts.host}:${opts.port}`,
|
|
51
|
+
`127.0.0.1:${opts.port}`,
|
|
52
|
+
`localhost:${opts.port}`,
|
|
53
|
+
`[::1]:${opts.port}`,
|
|
54
|
+
];
|
|
55
|
+
const httpServer = createServer(async (req, res) => {
|
|
56
|
+
setCors(res);
|
|
57
|
+
if (req.method === "OPTIONS") {
|
|
58
|
+
res.writeHead(204);
|
|
59
|
+
res.end();
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const url = new URL(req.url ?? "/", `http://${req.headers.host ?? "localhost"}`);
|
|
63
|
+
if (url.pathname !== "/mcp") {
|
|
64
|
+
if (url.pathname === "/health") {
|
|
65
|
+
sendJson(res, 200, { status: "ok", sessions: transports.size });
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
sendJson(res, 404, { error: "Not found" });
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (opts.bearerToken) {
|
|
72
|
+
const header = req.headers.authorization ?? "";
|
|
73
|
+
const token = header.startsWith("Bearer ") ? header.slice(7) : "";
|
|
74
|
+
if (token !== opts.bearerToken) {
|
|
75
|
+
res.setHeader("WWW-Authenticate", 'Bearer realm="obsidian-mcp-pro"');
|
|
76
|
+
sendJson(res, 401, { error: "Unauthorized" });
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
const sessionId = req.headers["mcp-session-id"];
|
|
82
|
+
if (req.method === "POST") {
|
|
83
|
+
const body = await readBody(req);
|
|
84
|
+
if (sessionId && transports.has(sessionId)) {
|
|
85
|
+
await transports.get(sessionId).handleRequest(req, res, body);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (!sessionId && isInitializeRequest(body)) {
|
|
89
|
+
const transport = new StreamableHTTPServerTransport({
|
|
90
|
+
sessionIdGenerator: () => randomUUID(),
|
|
91
|
+
onsessioninitialized: (sid) => {
|
|
92
|
+
transports.set(sid, transport);
|
|
93
|
+
},
|
|
94
|
+
allowedHosts,
|
|
95
|
+
enableDnsRebindingProtection: true,
|
|
96
|
+
});
|
|
97
|
+
transport.onclose = () => {
|
|
98
|
+
if (transport.sessionId)
|
|
99
|
+
transports.delete(transport.sessionId);
|
|
100
|
+
};
|
|
101
|
+
await mcpServer.connect(transport);
|
|
102
|
+
await transport.handleRequest(req, res, body);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
sendJson(res, 400, {
|
|
106
|
+
jsonrpc: "2.0",
|
|
107
|
+
error: { code: -32000, message: "Invalid session or non-initialize request without session" },
|
|
108
|
+
id: null,
|
|
109
|
+
});
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (req.method === "GET" || req.method === "DELETE") {
|
|
113
|
+
if (!sessionId || !transports.has(sessionId)) {
|
|
114
|
+
sendJson(res, 404, { error: "Session not found" });
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
await transports.get(sessionId).handleRequest(req, res);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
sendJson(res, 405, { error: "Method not allowed" });
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
console.error("[obsidian-mcp-pro] HTTP error:", err);
|
|
124
|
+
if (!res.headersSent) {
|
|
125
|
+
sendJson(res, 500, { error: err instanceof Error ? err.message : "Internal error" });
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
await new Promise((resolve) => {
|
|
130
|
+
httpServer.listen(opts.port, opts.host, () => resolve());
|
|
131
|
+
});
|
|
132
|
+
console.error(`[obsidian-mcp-pro] HTTP server listening on http://${opts.host}:${opts.port}/mcp`);
|
|
133
|
+
if (opts.bearerToken) {
|
|
134
|
+
console.error(`[obsidian-mcp-pro] Bearer auth required`);
|
|
135
|
+
}
|
|
136
|
+
const stop = async () => {
|
|
137
|
+
console.error(`[obsidian-mcp-pro] Shutting down HTTP server...`);
|
|
138
|
+
for (const t of transports.values()) {
|
|
139
|
+
try {
|
|
140
|
+
await t.close();
|
|
141
|
+
}
|
|
142
|
+
catch { /* ignore */ }
|
|
143
|
+
}
|
|
144
|
+
transports.clear();
|
|
145
|
+
await new Promise((resolve) => httpServer.close(() => resolve()));
|
|
146
|
+
};
|
|
147
|
+
const installSignals = opts.installSignalHandlers ?? true;
|
|
148
|
+
if (installSignals) {
|
|
149
|
+
const onSignal = async () => {
|
|
150
|
+
await stop();
|
|
151
|
+
process.exit(0);
|
|
152
|
+
};
|
|
153
|
+
process.on("SIGINT", onSignal);
|
|
154
|
+
process.on("SIGTERM", onSignal);
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
host: opts.host,
|
|
158
|
+
port: opts.port,
|
|
159
|
+
url: `http://${opts.host}:${opts.port}/mcp`,
|
|
160
|
+
stop,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=http-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
|
package/build/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
export declare function buildMcpServer(vaultPath: string | undefined): McpServer;
|
|
4
|
+
export { startHttpServer, type HttpServerHandle, type HttpServerOptions } from "./http-server.js";
|
|
3
5
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,SAAS,EAAoB,MAAM,yCAAyC,CAAC;AA2ItF,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAoIvE;AAgED,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -13,6 +13,128 @@ import { registerWriteTools } from "./tools/write.js";
|
|
|
13
13
|
import { registerTagTools } from "./tools/tags.js";
|
|
14
14
|
import { registerLinkTools } from "./tools/links.js";
|
|
15
15
|
import { registerCanvasTools } from "./tools/canvas.js";
|
|
16
|
+
import { startHttpServer } from "./http-server.js";
|
|
17
|
+
import { runInstall } from "./install.js";
|
|
18
|
+
function parseArgs(argv) {
|
|
19
|
+
const opts = {
|
|
20
|
+
command: "serve",
|
|
21
|
+
transport: "stdio",
|
|
22
|
+
host: "127.0.0.1",
|
|
23
|
+
port: 3333,
|
|
24
|
+
installClient: "claude",
|
|
25
|
+
};
|
|
26
|
+
let i = 0;
|
|
27
|
+
while (i < argv.length) {
|
|
28
|
+
const a = argv[i];
|
|
29
|
+
if (i === 0 && (a === "install" || a === "serve")) {
|
|
30
|
+
opts.command = a;
|
|
31
|
+
}
|
|
32
|
+
else if (a === "--help" || a === "-h") {
|
|
33
|
+
opts.command = "help";
|
|
34
|
+
}
|
|
35
|
+
else if (a === "--version" || a === "-v") {
|
|
36
|
+
opts.command = "version";
|
|
37
|
+
}
|
|
38
|
+
else if (a === "--transport" && argv[i + 1]) {
|
|
39
|
+
const v = argv[++i];
|
|
40
|
+
if (v !== "stdio" && v !== "http")
|
|
41
|
+
throw new Error(`--transport must be stdio or http (got "${v}")`);
|
|
42
|
+
opts.transport = v;
|
|
43
|
+
}
|
|
44
|
+
else if (a.startsWith("--transport=")) {
|
|
45
|
+
const v = a.slice("--transport=".length);
|
|
46
|
+
if (v !== "stdio" && v !== "http")
|
|
47
|
+
throw new Error(`--transport must be stdio or http (got "${v}")`);
|
|
48
|
+
opts.transport = v;
|
|
49
|
+
}
|
|
50
|
+
else if (a === "--port" && argv[i + 1]) {
|
|
51
|
+
opts.port = Number(argv[++i]);
|
|
52
|
+
}
|
|
53
|
+
else if (a.startsWith("--port=")) {
|
|
54
|
+
opts.port = Number(a.slice("--port=".length));
|
|
55
|
+
}
|
|
56
|
+
else if (a === "--host" && argv[i + 1]) {
|
|
57
|
+
opts.host = argv[++i];
|
|
58
|
+
}
|
|
59
|
+
else if (a.startsWith("--host=")) {
|
|
60
|
+
opts.host = a.slice("--host=".length);
|
|
61
|
+
}
|
|
62
|
+
else if (a === "--token" && argv[i + 1]) {
|
|
63
|
+
opts.bearerToken = argv[++i];
|
|
64
|
+
}
|
|
65
|
+
else if (a.startsWith("--token=")) {
|
|
66
|
+
opts.bearerToken = a.slice("--token=".length);
|
|
67
|
+
}
|
|
68
|
+
else if (a === "--client" && argv[i + 1]) {
|
|
69
|
+
const v = argv[++i];
|
|
70
|
+
if (v !== "claude" && v !== "cursor")
|
|
71
|
+
throw new Error(`--client must be claude or cursor`);
|
|
72
|
+
opts.installClient = v;
|
|
73
|
+
}
|
|
74
|
+
else if (a.startsWith("--client=")) {
|
|
75
|
+
const v = a.slice("--client=".length);
|
|
76
|
+
if (v !== "claude" && v !== "cursor")
|
|
77
|
+
throw new Error(`--client must be claude or cursor`);
|
|
78
|
+
opts.installClient = v;
|
|
79
|
+
}
|
|
80
|
+
else if (a === "--vault" && argv[i + 1]) {
|
|
81
|
+
opts.installVaultPath = argv[++i];
|
|
82
|
+
}
|
|
83
|
+
else if (a.startsWith("--vault=")) {
|
|
84
|
+
opts.installVaultPath = a.slice("--vault=".length);
|
|
85
|
+
}
|
|
86
|
+
else if (a === "--vault-name" && argv[i + 1]) {
|
|
87
|
+
opts.installVaultName = argv[++i];
|
|
88
|
+
}
|
|
89
|
+
else if (a.startsWith("--vault-name=")) {
|
|
90
|
+
opts.installVaultName = a.slice("--vault-name=".length);
|
|
91
|
+
}
|
|
92
|
+
else if (a === "--name" && argv[i + 1]) {
|
|
93
|
+
opts.installServerName = argv[++i];
|
|
94
|
+
}
|
|
95
|
+
else if (a.startsWith("--name=")) {
|
|
96
|
+
opts.installServerName = a.slice("--name=".length);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
throw new Error(`Unknown argument: ${a}`);
|
|
100
|
+
}
|
|
101
|
+
i++;
|
|
102
|
+
}
|
|
103
|
+
if (opts.bearerToken === undefined && process.env.MCP_HTTP_TOKEN) {
|
|
104
|
+
opts.bearerToken = process.env.MCP_HTTP_TOKEN;
|
|
105
|
+
}
|
|
106
|
+
if (!Number.isFinite(opts.port) || opts.port < 1 || opts.port > 65535) {
|
|
107
|
+
throw new Error(`Invalid port: ${opts.port}`);
|
|
108
|
+
}
|
|
109
|
+
return opts;
|
|
110
|
+
}
|
|
111
|
+
function printHelp() {
|
|
112
|
+
console.log(`obsidian-mcp-pro — MCP server for Obsidian vaults
|
|
113
|
+
|
|
114
|
+
Usage:
|
|
115
|
+
obsidian-mcp-pro [serve] [options] Start the MCP server (default)
|
|
116
|
+
obsidian-mcp-pro install [options] Install into a MCP client config
|
|
117
|
+
obsidian-mcp-pro --version Print version
|
|
118
|
+
obsidian-mcp-pro --help Show this help
|
|
119
|
+
|
|
120
|
+
Serve options:
|
|
121
|
+
--transport=<stdio|http> Transport to use (default: stdio)
|
|
122
|
+
--host=<addr> HTTP bind host (default: 127.0.0.1)
|
|
123
|
+
--port=<n> HTTP port (default: 3333)
|
|
124
|
+
--token=<secret> Require Bearer <secret> (or env MCP_HTTP_TOKEN)
|
|
125
|
+
|
|
126
|
+
Install options:
|
|
127
|
+
--client=<claude|cursor> Target client (default: claude)
|
|
128
|
+
--vault=<path> Pin OBSIDIAN_VAULT_PATH
|
|
129
|
+
--vault-name=<name> Pin OBSIDIAN_VAULT_NAME
|
|
130
|
+
--name=<server-name> Entry name in mcpServers (default: obsidian)
|
|
131
|
+
|
|
132
|
+
Env vars:
|
|
133
|
+
OBSIDIAN_VAULT_PATH Vault to serve (else auto-detected from Obsidian config)
|
|
134
|
+
OBSIDIAN_VAULT_NAME Select a named vault when multiple exist
|
|
135
|
+
MCP_HTTP_TOKEN Default bearer token for --transport=http
|
|
136
|
+
`);
|
|
137
|
+
}
|
|
16
138
|
function readPackageVersion() {
|
|
17
139
|
try {
|
|
18
140
|
// build/index.js -> package.json is one level up (project root)
|
|
@@ -25,17 +147,7 @@ function readPackageVersion() {
|
|
|
25
147
|
return "0.0.0";
|
|
26
148
|
}
|
|
27
149
|
}
|
|
28
|
-
|
|
29
|
-
let vaultPath;
|
|
30
|
-
try {
|
|
31
|
-
const config = getVaultConfig();
|
|
32
|
-
vaultPath = config.vaultPath;
|
|
33
|
-
}
|
|
34
|
-
catch (err) {
|
|
35
|
-
console.error(`[obsidian-mcp-pro] Warning: ${err}`);
|
|
36
|
-
console.error(`[obsidian-mcp-pro] Server will start but tools will return errors until a vault is configured.`);
|
|
37
|
-
console.error(`[obsidian-mcp-pro] Set OBSIDIAN_VAULT_PATH environment variable to fix this.`);
|
|
38
|
-
}
|
|
150
|
+
export function buildMcpServer(vaultPath) {
|
|
39
151
|
const server = new McpServer({
|
|
40
152
|
name: "obsidian-mcp-pro",
|
|
41
153
|
version: readPackageVersion(),
|
|
@@ -154,14 +266,86 @@ async function main() {
|
|
|
154
266
|
else {
|
|
155
267
|
console.error(`[obsidian-mcp-pro] Tools NOT registered — vault unconfigured.`);
|
|
156
268
|
}
|
|
157
|
-
|
|
269
|
+
return server;
|
|
270
|
+
}
|
|
271
|
+
function resolveVaultPathOrWarn() {
|
|
272
|
+
try {
|
|
273
|
+
return getVaultConfig().vaultPath;
|
|
274
|
+
}
|
|
275
|
+
catch (err) {
|
|
276
|
+
console.error(`[obsidian-mcp-pro] Warning: ${err}`);
|
|
277
|
+
console.error(`[obsidian-mcp-pro] Server will start but tools will return errors until a vault is configured.`);
|
|
278
|
+
console.error(`[obsidian-mcp-pro] Set OBSIDIAN_VAULT_PATH environment variable to fix this.`);
|
|
279
|
+
return undefined;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
async function main() {
|
|
283
|
+
let opts;
|
|
284
|
+
try {
|
|
285
|
+
opts = parseArgs(process.argv.slice(2));
|
|
286
|
+
}
|
|
287
|
+
catch (err) {
|
|
288
|
+
console.error(`[obsidian-mcp-pro] ${err instanceof Error ? err.message : err}`);
|
|
289
|
+
console.error(`Run with --help for usage.`);
|
|
290
|
+
process.exit(2);
|
|
291
|
+
}
|
|
292
|
+
if (opts.command === "help") {
|
|
293
|
+
printHelp();
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
if (opts.command === "version") {
|
|
297
|
+
console.log(readPackageVersion());
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
if (opts.command === "install") {
|
|
301
|
+
runInstall({
|
|
302
|
+
client: opts.installClient,
|
|
303
|
+
vaultPath: opts.installVaultPath,
|
|
304
|
+
vaultName: opts.installVaultName,
|
|
305
|
+
serverName: opts.installServerName,
|
|
306
|
+
});
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
const vaultPath = resolveVaultPathOrWarn();
|
|
310
|
+
if (opts.transport === "http") {
|
|
311
|
+
// Per-session McpServer so tool state (if added later) doesn't bleed
|
|
312
|
+
// across clients. Vault resolution happens once at startup.
|
|
313
|
+
await startHttpServer({
|
|
314
|
+
host: opts.host,
|
|
315
|
+
port: opts.port,
|
|
316
|
+
bearerToken: opts.bearerToken,
|
|
317
|
+
buildMcpServer: () => buildMcpServer(vaultPath),
|
|
318
|
+
});
|
|
319
|
+
console.error(`[obsidian-mcp-pro] Vault: ${vaultPath ?? "(not configured)"}`);
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
const server = buildMcpServer(vaultPath);
|
|
158
323
|
const transport = new StdioServerTransport();
|
|
159
324
|
await server.connect(transport);
|
|
160
|
-
console.error(`[obsidian-mcp-pro] Server started`);
|
|
325
|
+
console.error(`[obsidian-mcp-pro] Server started (stdio)`);
|
|
161
326
|
console.error(`[obsidian-mcp-pro] Vault: ${vaultPath ?? "(not configured)"}`);
|
|
162
327
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
328
|
+
export { startHttpServer } from "./http-server.js";
|
|
329
|
+
// Only auto-run as CLI when this file is the entrypoint. Library consumers
|
|
330
|
+
// (e.g. the Obsidian plugin wrapper) import named exports and drive the
|
|
331
|
+
// server themselves without triggering CLI arg parsing.
|
|
332
|
+
function isCliEntry() {
|
|
333
|
+
const argv1 = process.argv[1];
|
|
334
|
+
if (!argv1)
|
|
335
|
+
return false;
|
|
336
|
+
try {
|
|
337
|
+
const thisUrl = new URL(import.meta.url);
|
|
338
|
+
const argvUrl = new URL(`file://${path.resolve(argv1).replace(/\\/g, "/")}`);
|
|
339
|
+
return thisUrl.pathname.toLowerCase() === argvUrl.pathname.toLowerCase();
|
|
340
|
+
}
|
|
341
|
+
catch {
|
|
342
|
+
return false;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
if (isCliEntry()) {
|
|
346
|
+
main().catch((err) => {
|
|
347
|
+
console.error(`[obsidian-mcp-pro] Fatal error: ${err}`);
|
|
348
|
+
process.exit(1);
|
|
349
|
+
});
|
|
350
|
+
}
|
|
167
351
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type InstallClient = "claude" | "cursor";
|
|
2
|
+
export interface InstallOptions {
|
|
3
|
+
client: InstallClient;
|
|
4
|
+
vaultPath?: string;
|
|
5
|
+
vaultName?: string;
|
|
6
|
+
serverName?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function runInstall(options: InstallOptions): void;
|
|
9
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAkEhD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAoDxD"}
|
package/build/install.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
import * as os from "os";
|
|
4
|
+
function claudeDesktopConfigPath() {
|
|
5
|
+
const platform = os.platform();
|
|
6
|
+
if (platform === "darwin") {
|
|
7
|
+
return path.join(os.homedir(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
|
|
8
|
+
}
|
|
9
|
+
if (platform === "win32") {
|
|
10
|
+
const appData = process.env.APPDATA;
|
|
11
|
+
if (!appData)
|
|
12
|
+
throw new Error("APPDATA environment variable not set");
|
|
13
|
+
return path.join(appData, "Claude", "claude_desktop_config.json");
|
|
14
|
+
}
|
|
15
|
+
const configDir = process.env.XDG_CONFIG_HOME || path.join(os.homedir(), ".config");
|
|
16
|
+
return path.join(configDir, "Claude", "claude_desktop_config.json");
|
|
17
|
+
}
|
|
18
|
+
function cursorConfigPath() {
|
|
19
|
+
return path.join(os.homedir(), ".cursor", "mcp.json");
|
|
20
|
+
}
|
|
21
|
+
function getConfigPath(client) {
|
|
22
|
+
return client === "cursor" ? cursorConfigPath() : claudeDesktopConfigPath();
|
|
23
|
+
}
|
|
24
|
+
function readConfig(configPath) {
|
|
25
|
+
if (!fs.existsSync(configPath))
|
|
26
|
+
return {};
|
|
27
|
+
try {
|
|
28
|
+
const raw = fs.readFileSync(configPath, "utf-8");
|
|
29
|
+
if (!raw.trim())
|
|
30
|
+
return {};
|
|
31
|
+
return JSON.parse(raw);
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
throw new Error(`Existing config at ${configPath} is not valid JSON. Fix or delete it before re-running install. (${err instanceof Error ? err.message : String(err)})`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function backupConfig(configPath) {
|
|
38
|
+
if (!fs.existsSync(configPath))
|
|
39
|
+
return null;
|
|
40
|
+
const backup = `${configPath}.backup-${Date.now()}`;
|
|
41
|
+
fs.copyFileSync(configPath, backup);
|
|
42
|
+
return backup;
|
|
43
|
+
}
|
|
44
|
+
function writeConfig(configPath, config) {
|
|
45
|
+
fs.mkdirSync(path.dirname(configPath), { recursive: true });
|
|
46
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n", "utf-8");
|
|
47
|
+
}
|
|
48
|
+
export function runInstall(options) {
|
|
49
|
+
const client = options.client;
|
|
50
|
+
const serverName = options.serverName ?? "obsidian";
|
|
51
|
+
const configPath = getConfigPath(client);
|
|
52
|
+
console.log(`Installing obsidian-mcp-pro into ${client} config:`);
|
|
53
|
+
console.log(` ${configPath}`);
|
|
54
|
+
const config = readConfig(configPath);
|
|
55
|
+
const servers = (config.mcpServers ??= {});
|
|
56
|
+
if (servers[serverName]) {
|
|
57
|
+
console.log(`\nNote: replacing existing "${serverName}" server entry.`);
|
|
58
|
+
}
|
|
59
|
+
const env = {};
|
|
60
|
+
if (options.vaultPath) {
|
|
61
|
+
env.OBSIDIAN_VAULT_PATH = path.resolve(options.vaultPath);
|
|
62
|
+
}
|
|
63
|
+
if (options.vaultName) {
|
|
64
|
+
env.OBSIDIAN_VAULT_NAME = options.vaultName;
|
|
65
|
+
}
|
|
66
|
+
const entry = {
|
|
67
|
+
command: "npx",
|
|
68
|
+
args: ["-y", "obsidian-mcp-pro"],
|
|
69
|
+
};
|
|
70
|
+
if (Object.keys(env).length > 0) {
|
|
71
|
+
entry.env = env;
|
|
72
|
+
}
|
|
73
|
+
servers[serverName] = entry;
|
|
74
|
+
const backup = backupConfig(configPath);
|
|
75
|
+
writeConfig(configPath, config);
|
|
76
|
+
console.log(`\n✓ Installed successfully.`);
|
|
77
|
+
if (backup)
|
|
78
|
+
console.log(` Previous config backed up to: ${backup}`);
|
|
79
|
+
console.log(`\nNext steps:`);
|
|
80
|
+
if (client === "claude") {
|
|
81
|
+
console.log(` 1. Fully quit Claude Desktop (not just close the window).`);
|
|
82
|
+
console.log(` 2. Reopen Claude Desktop — the "obsidian" tools will appear.`);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
console.log(` 1. Restart Cursor.`);
|
|
86
|
+
console.log(` 2. The "obsidian" MCP server will appear in Cursor settings.`);
|
|
87
|
+
}
|
|
88
|
+
if (!options.vaultPath && !options.vaultName) {
|
|
89
|
+
console.log(`\nVault auto-detection is enabled. To pin a specific vault, re-run with:`);
|
|
90
|
+
console.log(` npx obsidian-mcp-pro install --vault /path/to/vault`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "obsidian-mcp-pro",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "The most feature-complete MCP server for Obsidian vaults — search, read, write, tag, link analysis, graph traversal, canvas support, and more.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|