mirror of
https://github.com/aaronsb/obsidian-mcp-plugin.git
synced 2026-07-22 06:45:14 +00:00
Merge pull request #230 from aaronsb/fix/mcpserver-no-deprecated
refactor(mcp): drop deprecated Server reference via McpServer wrapper
This commit is contained in:
commit
1a4b554b9f
3 changed files with 12 additions and 16 deletions
|
|
@ -37,15 +37,6 @@ export default tseslint.config(
|
|||
"obsidianmd/ui/sentence-case": ["error", { allowAutoFix: true }],
|
||||
},
|
||||
},
|
||||
// MCP SDK's Server class is deprecated in favor of McpServer, but McpServer
|
||||
// requires Zod schemas for tool registration. This codebase uses raw JSON Schema
|
||||
// with setRequestHandler, which is only available on the deprecated Server class.
|
||||
{
|
||||
files: ["src/mcp-server.ts", "src/utils/mcp-server-pool.ts"],
|
||||
rules: {
|
||||
"@typescript-eslint/no-deprecated": "off",
|
||||
},
|
||||
},
|
||||
// builtin-modules is build-tooling only (esbuild.config.mjs), not plugin code.
|
||||
// js-yaml is used for YAML parsing in Bases API — no built-in alternative exists.
|
||||
//
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import cors from 'cors';
|
|||
import { App, Notice } from 'obsidian';
|
||||
import { createServer as createHttpServer, Server } from 'http';
|
||||
import { Server as HttpsServer } from 'https';
|
||||
import { Server as MCPServer } from '@modelcontextprotocol/sdk/server/index.js';
|
||||
import { McpServer as MCPServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
||||
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
||||
import {
|
||||
isInitializeRequest
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
||||
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
||||
import {
|
||||
ListToolsRequestSchema,
|
||||
CallToolRequestSchema,
|
||||
|
|
@ -35,7 +35,7 @@ interface PluginWithSettings {
|
|||
}
|
||||
|
||||
interface PooledServer {
|
||||
server: Server;
|
||||
server: McpServer;
|
||||
sessionId: string;
|
||||
createdAt: number;
|
||||
lastActivityAt: number;
|
||||
|
|
@ -80,7 +80,7 @@ export class MCPServerPool extends EventEmitter {
|
|||
/**
|
||||
* Get or create an MCP server for a session
|
||||
*/
|
||||
getOrCreateServer(sessionId: string): Server {
|
||||
getOrCreateServer(sessionId: string): McpServer {
|
||||
// Check if server exists
|
||||
let pooledServer = this.servers.get(sessionId);
|
||||
|
||||
|
|
@ -118,8 +118,12 @@ export class MCPServerPool extends EventEmitter {
|
|||
/**
|
||||
* Create a new MCP server instance with handlers
|
||||
*/
|
||||
private createNewServer(sessionId: string): Server {
|
||||
const server = new Server(
|
||||
private createNewServer(sessionId: string): McpServer {
|
||||
// Construct via McpServer (the non-deprecated class) and register our
|
||||
// raw JSON-Schema handlers on its underlying .server — the advanced
|
||||
// low-level handle it deliberately exposes — so the deprecated Server
|
||||
// symbol never appears in our source. We don't use registerTool/Zod.
|
||||
const mcpServer = new McpServer(
|
||||
{
|
||||
name: 'Semantic Notes Vault MCP',
|
||||
version: getVersion()
|
||||
|
|
@ -133,6 +137,7 @@ export class MCPServerPool extends EventEmitter {
|
|||
...(this.initializeInstructions ? { instructions: this.initializeInstructions } : {})
|
||||
}
|
||||
);
|
||||
const server = mcpServer.server;
|
||||
|
||||
// Create session-specific API instance
|
||||
// Always create SecureObsidianAPI if the main API has security settings
|
||||
|
|
@ -372,7 +377,7 @@ export class MCPServerPool extends EventEmitter {
|
|||
throw new Error(`Unknown resource: ${uri}`);
|
||||
});
|
||||
|
||||
return server;
|
||||
return mcpServer;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue