MCP Complete Implementation Guide
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Complete Implementation Guideshow me how to set up Claude Desktop integration"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Model Context Protocol (MCP) - Complete Implementation Guide
π Overview
Model Context Protocol (MCP) is an open standard that enables seamless integration between AI applications and external data sources and tools. This guide provides a complete end-to-end implementation with all necessary configuration files and integration examples for ChatGPT, Claude, and other AI models.
Related MCP server: MCP Server
π Table of Contents
π€ What is MCP?
MCP (Model Context Protocol) is a standardized way to:
Connect AI models to external data sources
Provide tools and functions that AI models can use
Enable secure and controlled access to resources
Create reusable components across different AI applications
Key Components:
MCP Server: Provides tools, resources, and prompts
MCP Client: AI applications that consume MCP services
Transport Layer: Communication protocol (stdio, HTTP, WebSocket)
β¨ Benefits
Standardized Integration: Universal protocol for AI model connections
Security: Controlled access to external resources
Reusability: One MCP server can serve multiple AI applications
Extensibility: Easy to add new tools and resources
Local Development: Run everything locally for privacy and control
π§ Prerequisites
Required Software:
Node.js (v18 or later) or Python (3.8+)
Git
PowerShell (Windows)
VS Code (recommended)
For AI Model Integration:
API keys for your chosen AI models
Claude Desktop, ChatGPT Desktop, or compatible client
π Quick Start
1. Clone and Setup
# Create project directory
mkdir mcp-implementation
cd mcp-implementation
# Initialize the project
git init
npm init -y # or use Python if preferred2. Install Dependencies
# For Node.js implementation
npm install @modelcontextprotocol/sdk express cors dotenv
# For Python implementation (alternative)
pip install mcp python-dotenv fastapi uvicorn3. Run the Example Server
# Start the MCP server
node server.js
# Or for Python
python server.py4. Configure Your AI Client
Update your AI client configuration (examples provided below for each platform).
π οΈ Server Implementation
Node.js MCP Server
Our MCP server will provide:
File system tools
Web scraping capabilities
System information
Custom business logic
See server.js for the complete implementation.
Python MCP Server (Alternative)
For Python developers, we also provide a Python implementation in server.py.
π€ AI Model Integration
Claude Desktop Integration
Claude Desktop has native MCP support. Configuration is done through claude_desktop_config.json.
ChatGPT Integration
Integration through custom plugins or API wrapper. See chatgpt-integration/ directory.
Other AI Models
Generic HTTP client implementation for any AI model that supports external tool calling.
βοΈ Configuration Files
This repository includes configuration files for:
claude_desktop_config.json- Claude Desktop MCP configurationchatgpt-config.json- ChatGPT plugin configurationmcp-config.json- Generic MCP server configuration.env- Environment variables and API keyspackage.json- Node.js dependencies and scripts
π Local Development
Development Scripts
We provide PowerShell scripts for easy development:
scripts/setup.ps1- Initial setup and dependency installationscripts/start-dev.ps1- Start development server with hot reloadscripts/test.ps1- Run tests and validation
Environment Setup
Copy
.env.exampleto.envFill in your API keys and configuration
Run the setup script
.\scripts\setup.ps1π Deployment
Local Deployment
# Production build
npm run build
# Start production server
npm startDocker Deployment
# Build Docker image
docker build -t mcp-server .
# Run container
docker run -p 3000:3000 --env-file .env mcp-serverCloud Deployment
Instructions for deploying to:
Heroku
AWS Lambda
Google Cloud Functions
Azure Functions
π§ Troubleshooting
Common Issues
Connection Refused: Check if MCP server is running
Authentication Errors: Verify API keys in
.envTool Not Found: Ensure tools are properly registered
CORS Issues: Check CORS configuration in server
Debugging
# Enable debug logging
$env:DEBUG = "mcp:*"
node server.jsHealth Check
# Test server health
curl http://localhost:3000/healthπ Advanced Features
Custom Tools
Learn how to create custom tools for your specific use case.
Resource Management
Implement resource caching and management for better performance.
Security
Best practices for securing your MCP server and API keys.
Monitoring
Set up logging and monitoring for production deployments.
π Project Structure
mcp-implementation/
βββ README.md # This file
βββ server.js # Main MCP server (Node.js)
βββ server.py # Alternative Python server
βββ package.json # Node.js dependencies
βββ requirements.txt # Python dependencies
βββ .env.example # Environment variables template
βββ claude_desktop_config.json # Claude Desktop configuration
βββ chatgpt-config.json # ChatGPT integration config
βββ mcp-config.json # Generic MCP configuration
βββ Dockerfile # Docker container configuration
βββ scripts/
β βββ setup.ps1 # Setup script for Windows
β βββ start-dev.ps1 # Development server script
β βββ test.ps1 # Testing script
βββ examples/
β βββ claude-integration/ # Claude-specific examples
β βββ chatgpt-integration/ # ChatGPT integration examples
β βββ generic-client/ # Generic client examples
βββ tools/
β βββ filesystem.js # File system tools
β βββ web-scraper.js # Web scraping tools
β βββ system-info.js # System information tools
βββ tests/
βββ server.test.js # Server tests
βββ integration.test.js # Integration testsπ Next Steps
Follow the Quick Start guide
Explore the example implementations
Configure your preferred AI model
Customize tools for your use case
Deploy to your preferred platform
π€ Contributing
Contributions are welcome! Please read our contributing guidelines and submit pull requests for any improvements.
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Support
If you encounter any issues:
Check the Troubleshooting section
Search existing GitHub issues
Create a new issue with detailed information
Happy coding with MCP! π
Available Tools
6 toolsexecute_commandB
Execute a system command (use with caution)
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | The command to execute | |
| cwd | No | Working directory for the command |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It hints at caution but doesn't specify what risks are involved (e.g., destructive effects, permission requirements, or rate limits). This leaves significant gaps in understanding the tool's behavior beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with just one sentence, front-loaded with the core action and a cautionary note. Every word earns its place, making it efficient and easy to parse without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (executing system commands can be high-risk), lack of annotations, and no output schema, the description is incomplete. It doesn't cover return values, error handling, security implications, or detailed behavioral traits, leaving the agent with insufficient context for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting the 'command' and 'cwd' parameters. The description adds no additional parameter details beyond what the schema provides, so it meets the baseline of 3 for high schema coverage without compensating with extra semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('execute') and resource ('system command'), making the purpose understandable. However, it doesn't differentiate from siblings like 'get_system_info' or 'list_directory' which might also involve system operations, leaving some ambiguity about when to choose this specific tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'use with caution' implies this tool should be used carefully, suggesting it might have risks or side effects. However, it doesn't provide explicit guidance on when to use it versus alternatives like 'get_system_info' for safe queries, nor does it specify prerequisites or exclusions, leaving usage context somewhat vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_urlC
Fetch content from a URL
| Name | Required | Description | Default |
|---|---|---|---|
| headers | No | HTTP headers to include | |
| method | No | HTTP method (GET, POST, etc.) | GET |
| url | Yes | The URL to fetch |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits. It doesn't mention error handling, timeouts, authentication needs, rate limits, or what 'content' includes (e.g., HTML, JSON, binary data). This leaves significant gaps for an agent to understand how to use it effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasteβit directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of HTTP operations and lack of annotations or output schema, the description is incomplete. It doesn't explain return values (e.g., status codes, body content), error cases, or behavioral nuances like redirects or timeouts, which are critical for proper tool usage in this context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters (url, method, headers) thoroughly. The description adds no additional meaning beyond implying URL fetching, which is redundant with the schema. This meets the baseline of 3 when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Fetch content from a URL' clearly states the verb ('fetch') and resource ('content from a URL'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'read_file' or 'execute_command' which might also retrieve data, so it's not fully distinctive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention scenarios like web scraping, API calls, or file downloads, nor does it contrast with siblings like 'read_file' for local files or 'execute_command' for system-level operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_infoC
Get system information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only operation ('get'), but does not specify whether it requires permissions, what data it returns, if there are rate limits, or any side effects. This is inadequate for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single three-word phrase, 'Get system information', which is front-loaded and wastes no words. It efficiently communicates the core purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not explain what information is returned, the format, or any behavioral traits, making it insufficient for an agent to understand the tool's full context and usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description does not add parameter details, which is appropriate, and it correctly implies no inputs are required, earning a baseline score of 4 for tools with zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get system information' restates the tool name 'get_system_info' with minimal elaboration, making it tautological. It specifies the verb 'get' and resource 'system information', but lacks detail on what type of system information (e.g., hardware specs, OS details, performance metrics) or scope, failing to distinguish it from potential alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus sibling tools like 'execute_command' or 'fetch_url'. It does not mention any context, prerequisites, or exclusions, leaving the agent with no information to make an informed choice among available tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_directoryC
List the contents of a directory
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The path to the directory to list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It implies a read-only operation ('List') but doesn't disclose critical traits like error handling (e.g., if path doesn't exist), output format (e.g., list structure, metadata included), or performance considerations (e.g., large directories). This is inadequate for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place by directly contributing to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a simple input schema, the description is incomplete. It lacks details on behavioral aspects (e.g., what 'contents' means, error cases) and usage context, which are essential for an agent to invoke this tool correctly in real scenarios. The simplicity of the tool doesn't excuse these gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the 'path' parameter fully. The description adds no additional meaning beyond implying the parameter is for directory listing, which the schema's description ('The path to the directory to list') already covers. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('contents of a directory'), making the purpose immediately understandable. It distinguishes from siblings like 'read_file' (which reads file contents) and 'execute_command' (which runs commands). However, it doesn't specify what 'contents' includes (files, subdirectories, metadata), which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., directory existence, permissions), exclusions (e.g., not for file reading), or comparisons to siblings like 'get_system_info' (which might provide system-level directory info). This leaves the agent with minimal context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileC
Read the contents of a file
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The path to the file to read |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits. It doesn't mention permissions required, whether it's safe (read-only), potential errors (e.g., file not found), or output format (text, binary). This is inadequate for a tool with mutation siblings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words, front-loading the core action. It earns its place by being maximally concise while still conveying the essential purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and siblings that include mutations ('write_file'), the description is incomplete. It doesn't address safety (read-only vs. destructive), return values, or error handling, leaving significant gaps for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the 'path' parameter fully. The description adds no additional meaning about parameter usage (e.g., path formats, relative vs. absolute), meeting the baseline but not compensating beyond what's structured.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('read') and resource ('contents of a file'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'list_directory' or 'fetch_url' which also involve file operations, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list_directory' (for browsing) or 'write_file' (for modification). There's no mention of prerequisites, file types supported, or error conditions, leaving the agent with insufficient context for optimal selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileC
Write content to a file
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The content to write to the file | |
| path | Yes | The path to the file to write |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Write content to a file' implies a destructive mutation but doesn't specify whether this overwrites existing files, creates new ones, or appends. It doesn't mention error conditions, file system permissions needed, or what happens on success/failure. This leaves significant behavioral gaps for a file system mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is maximally concise at just four words. Every word earns its place: 'Write' specifies the action, 'content' and 'file' specify what's being manipulated, and 'to' provides necessary grammatical structure. There's zero waste or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a file system mutation tool with no annotations and no output schema, the description is incomplete. It doesn't address critical context like whether the operation overwrites or appends, what permissions are required, what happens if the path doesn't exist, or what the tool returns. The agent lacks sufficient information to use this tool safely and effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters ('content' and 'path') adequately. The description adds no additional parameter semantics beyond what's in the schema. It doesn't clarify path format requirements, content encoding, or file type implications. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('write') and target resource ('content to a file'), making the purpose immediately understandable. It distinguishes itself from sibling tools like 'read_file' by specifying the opposite operation. However, it doesn't specify what type of writing occurs (overwrite, append, etc.), keeping it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites like file permissions, when to use 'execute_command' for file operations instead, or how it relates to 'read_file' for file manipulation workflows. The agent must infer usage context entirely from the tool name and parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v1.0.0- First observed
execute_command - First observed
fetch_url - First observed
get_system_info - First observed
list_directory - First observed
read_file - First observed
write_file
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose with no overlap: execute_command runs system commands, fetch_url retrieves web content, get_system_info provides system metadata, list_directory shows directory contents, read_file reads file data, and write_file writes file data. The descriptions make it impossible to confuse one tool for another.
All tools follow a consistent verb_noun pattern (e.g., execute_command, fetch_url, read_file) using snake_case throughout. There are no deviations in naming style or convention across the entire set.
With 6 tools, this is well-scoped for a system utility server. Each tool earns its place by covering distinct, fundamental operations like file I/O, system commands, and network requests, without being overly sparse or bloated.
The toolset covers core system and file operations comprehensively, including read/write, directory listing, command execution, and URL fetching. A minor gap exists in lacking update/delete file operations, but agents can work around this using existing tools like write_file for overwrites.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yoβ¦
Nifty's MCP server β exposes tasks, projects, messages, and files as tools for AI agents.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Related MCP Servers
- FlicenseBqualityDmaintenanceMulti-mode MCP server supporting both Claude Desktop (STDIO) and OpenAI (HTTP/SSE) integrations with file operations including read, write, delete, and search capabilities.3-
- AlicenseNot gradedqualityDmaintenanceA modular MCP server providing file operations, web search, URL scraping, and sandboxed command execution for LLM interactions.1MIT
- AlicenseNot gradedqualityDmaintenanceA production-ready MCP server with file management, HTTP requests, system info, and environment variable tools, plus a management UI and dual transport for Claude Desktop and Claude.ai.152MIT
- FlicenseNot gradedqualityBmaintenanceZero-dependency MCP server that provides AI models with secure read/write/exec access to local files and directories over HTTP and SSE, designed to be tunneled via ngrok for integration with Claude Web.-