Fernandocgomez/mcp-server
If you are the rightful owner of mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
A modular Model Context Protocol (MCP) server for the DemoTool project, designed to enhance AI assistant interactions with codebases.
DemoTool MCP Server
A modular Model Context Protocol (MCP) server for the DemoTool project. This server provides custom tools that AI assistants in Cursor can use to better understand and interact with the codebase.
What is MCP?
Model Context Protocol (MCP) is an open protocol that allows AI assistants to securely interact with external data sources and tools. This server exposes project-specific tools that Cursor can use to enhance development workflows.
Project Structure
The server is organized into a modular architecture for easy maintenance and scalability:
mcp-server/
├── src/
│ ├── config/ # Server configuration
│ │ ├── server.config.ts
│ │ └── index.ts
│ ├── server/ # Server setup and request handlers
│ │ ├── setup.ts
│ │ └── index.ts
│ ├── tools/ # Tool implementations
│ │ ├── tool-registry.ts # Tool registry pattern
│ │ ├── hello-world.tool.ts # Example tool
│ │ └── index.ts
│ ├── types/ # TypeScript type definitions
│ │ ├── tool.types.ts
│ │ ├── server.types.ts
│ │ └── index.ts
│ └── index.ts # Main entry point
├── dist/ # Compiled JavaScript output
├── package.json
└── tsconfig.json
Available Tools
This MCP server currently provides:
- hello_world - Returns a friendly hello world message
- Optional parameter:
name(string) - Name to greet, defaults to "World"
- Optional parameter:
Installation
- Install dependencies:
cd mcp-server
npm install
- Build the server:
npm run build
Configuration in Cursor
To integrate this MCP server with Cursor:
Method 1: Using Cursor Settings UI
- Open Cursor Settings
- Navigate to Features → MCP
- Click + Add New MCP Server
- Configure:
- Name:
kids-daily-tool - Type:
stdio - Command:
node /home/fernando/code/kids-daily-tool/mcp-server/dist/index.js
- Name:
Method 2: Manual Configuration (Advanced)
Edit Cursor's MCP configuration file directly:
Linux/Mac: ~/.config/cursor/mcp.json
Windows: %APPDATA%\Cursor\mcp.json
Add this configuration:
{
"mcpServers": {
"kids-daily-tool": {
"command": "node",
"args": ["/home/fernando/code/kids-daily-tool/mcp-server/dist/index.js"],
"env": {}
}
}
}
Usage in Cursor
Once configured, you can use natural language prompts in Cursor Composer to invoke the tool:
- "Say hello to me!"
- "Use the hello_world tool"
- "Call the hello_world MCP tool with name: Fernando"
Cursor will automatically detect when to use the MCP tool and execute it on your behalf. The tool will return a friendly greeting message.
Development
To modify the server:
- Edit files in
src/ - Rebuild:
npm run build - Restart Cursor to pick up changes
Troubleshooting
Server not showing up in Cursor
- Make sure you've built the server (
npm run build) - Verify the path in your configuration is absolute
- Restart Cursor after making configuration changes
Tool errors
- Check the Cursor Developer Console for error messages
- Verify file permissions on the project directory
- Ensure Node.js is available in your PATH
Extending the Server
The modular architecture makes it easy to add new tools. Follow these steps:
1. Create a New Tool
Create a new file in src/tools/, e.g., my-new-tool.tool.ts:
import {
Tool,
ToolDefinition,
ToolArguments,
ToolResult,
} from "../types/index.js";
export class MyNewTool implements Tool {
getDefinition(): ToolDefinition {
return {
name: "my_new_tool",
description: "Description of what your tool does",
inputSchema: {
type: "object",
properties: {
param1: {
type: "string",
description: "Description of param1",
},
},
required: ["param1"],
},
};
}
async execute(args: ToolArguments): Promise<ToolResult> {
// Implement your tool logic here
const result = `Processing: ${args.param1}`;
return {
content: [
{
type: "text",
text: result,
},
],
};
}
}
2. Register the Tool
Add your tool to src/tools/index.ts:
export * from "./my-new-tool.tool.js";
import { MyNewTool } from "./my-new-tool.tool.js";
export function getAllTools(): Tool[] {
return [
new HelloWorldTool(),
new MyNewTool(), // Add your tool here
];
}
3. Rebuild and Test
npm run build
That's it! The tool registry will automatically pick up your new tool.
Architecture Benefits
- Modularity: Each tool is self-contained in its own file
- Type Safety: Full TypeScript support with proper interfaces
- Scalability: Easy to add new tools without modifying core logic
- Maintainability: Clear separation of concerns
- Testability: Individual tools can be tested in isolation
Security Notes
- This server only provides read-only access to project information
- It runs locally and doesn't send data to external services
- Always review MCP server code before integrating it with your editor