@myea/wordpress-mcp-handler
Version:
Advanced WordPress MCP request handler with intelligent search, multi-locale support, and comprehensive content management capabilities
79 lines • 2.53 kB
JavaScript
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
import { WordPressConnector } from './wordpress-connector.js';
import { WordPressMCPRequestHandler } from './mcp-handler.js';
import dotenv from 'dotenv';
// Load environment variables
dotenv.config();
// Initialize the MCP server
const server = new Server({
name: 'wordpress-mcp-handler',
version: '1.0.0',
}, {
capabilities: {
tools: {},
},
});
// Initialize WordPress connector and MCP handler
const wpConnector = new WordPressConnector();
const mcpHandler = new WordPressMCPRequestHandler(wpConnector);
// Get available methods from the handler
const availableMethods = mcpHandler.getAvailableMethods();
// Convert handler methods to MCP tools
const tools = availableMethods.map(method => ({
name: method.name,
description: method.description,
inputSchema: {
type: 'object',
properties: method.parameters.reduce((props, param) => {
props[param] = { type: 'string', description: `${param} parameter` };
return props;
}, {}),
required: method.parameters.filter(p => !p.includes('optional'))
}
}));
// List tools handler
server.setRequestHandler(ListToolsRequestSchema, async () => {
return { tools };
});
// Tool execution handler
server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name, arguments: args } = request.params;
try {
const result = await mcpHandler.handleRequest(name, args || {});
return {
content: [
{
type: 'text',
text: JSON.stringify(result, null, 2)
}
]
};
}
catch (error) {
return {
content: [
{
type: 'text',
text: JSON.stringify({
success: false,
error: error.message,
stack: error.stack
}, null, 2)
}
],
isError: true
};
}
});
// Start the server
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
}
main().catch((error) => {
process.exit(1);
});
//# sourceMappingURL=mcp-server.js.map