Skip to main content
Glama

Humanitarian Negotiation MCP Server

setup.py6.62 kB
#!/usr/bin/env python3 """ Setup script for Humanitarian Negotiation MCP Server Helps configure the server for use with Claude Desktop Developed by: Jhozman Camacho License: MIT Author: Jhozman Camacho """ import json import os import platform import sys from pathlib import Path def get_config_path(): """Get the Claude Desktop config path for the current platform.""" system = platform.system() if system == "Darwin": # macOS return Path.home() / "Library/Application Support/Claude/claude_desktop_config.json" elif system == "Windows": return Path(os.getenv("APPDATA")) / "Claude/claude_desktop_config.json" elif system == "Linux": return Path.home() / ".config/Claude/claude_desktop_config.json" else: return None def get_server_path(): """Get the absolute path to the MCP server script.""" return Path(__file__).parent.absolute() / "humanitarian_negotiation_mcp.py" def read_config(config_path): """Read existing Claude Desktop config.""" if not config_path.exists(): return {"mcpServers": {}} try: with open(config_path, 'r') as f: return json.load(f) except json.JSONDecodeError: print(f"Warning: Config file exists but is not valid JSON: {config_path}") return {"mcpServers": {}} def write_config(config_path, config): """Write Claude Desktop config.""" # Ensure directory exists config_path.parent.mkdir(parents=True, exist_ok=True) with open(config_path, 'w') as f: json.dump(config, f, indent=2) def check_python_version(): """Check if Python version is adequate.""" if sys.version_info < (3, 10): print("Error: Python 3.10 or higher is required") print(f"Current version: {sys.version}") return False return True def check_dependencies(): """Check if required dependencies are installed.""" required = ['mcp', 'pydantic', 'httpx'] missing = [] for package in required: try: __import__(package) except ImportError: missing.append(package) return missing def main(): """Main setup function.""" print("=" * 70) print("Humanitarian Negotiation MCP Server - Setup") print("Developed by: Jhozman Camacho") print("License: MIT") print("=" * 70) print() # Check Python version print("1. Checking Python version...") if not check_python_version(): sys.exit(1) print(f" [OK] Python {sys.version.split()[0]} - OK") print() # Check dependencies print("2. Checking dependencies...") missing = check_dependencies() if missing: print(f" [ERROR] Missing dependencies: {', '.join(missing)}") print() print(" Please install dependencies first:") print(" pip install -r requirements_mcp.txt") print() response = input(" Continue anyway? (y/n): ") if response.lower() != 'y': sys.exit(1) else: print(" [OK] All dependencies installed") print() # Get config path print("3. Locating Claude Desktop config...") config_path = get_config_path() if config_path is None: print(" [ERROR] Could not determine config path for this platform") print() print(" Please manually add the following to your Claude Desktop config:") server_path = get_server_path() print() print(" {") print(" \"mcpServers\": {") print(" \"humanitarian-negotiation\": {") print(" \"command\": \"python\",") print(f" \"args\": [\"{server_path}\"]") print(" }") print(" }") print(" }") sys.exit(1) print(f" [OK] Config path: {config_path}") print() # Get server path print("4. Locating MCP server script...") server_path = get_server_path() if not server_path.exists(): print(f" [ERROR] Server script not found: {server_path}") sys.exit(1) print(f" [OK] Server path: {server_path}") print() # Read existing config print("5. Reading existing configuration...") config = read_config(config_path) if "mcpServers" not in config: config["mcpServers"] = {} print(f" [OK] Found {len(config['mcpServers'])} existing MCP server(s)") print() # Check if already configured if "humanitarian-negotiation" in config["mcpServers"]: print(" [WARNING] Server 'humanitarian-negotiation' is already configured") print() print(" Current configuration:") print(f" Command: {config['mcpServers']['humanitarian-negotiation'].get('command')}") print(f" Args: {config['mcpServers']['humanitarian-negotiation'].get('args')}") print() response = input(" Overwrite existing configuration? (y/n): ") if response.lower() != 'y': print() print("Setup cancelled. No changes made.") sys.exit(0) # Add/update server configuration print("6. Configuring MCP server...") config["mcpServers"]["humanitarian-negotiation"] = { "command": "python" if platform.system() == "Windows" else "python3", "args": [str(server_path)] } # Write config try: write_config(config_path, config) print(" [OK] Configuration updated successfully") except Exception as e: print(f" [ERROR] Error writing configuration: {e}") sys.exit(1) print() # Success message print("=" * 70) print("Setup completed successfully!") print("=" * 70) print() print("Next steps:") print("1. Restart Claude Desktop") print("2. Look for the [CONNECTED] icon to verify MCP connection") print("3. Use the humanitarian negotiation tools in your conversations") print() print("Available tools:") print(" - humanitarian_create_island_of_agreement") print(" - humanitarian_analyze_icebergs") print(" - humanitarian_analyze_stakeholders") print(" - humanitarian_leverage_stakeholder_influence") print(" - humanitarian_negotiation_guide") print() print("Documentation:") print(" - README.md - Overview and installation") print(" - EXAMPLES.md - Practical usage examples") print() print("For help, run: humanitarian_negotiation_guide") print("=" * 70) if __name__ == "__main__": try: main() except KeyboardInterrupt: print() print() print("Setup cancelled by user.") sys.exit(1)

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/escenariosparalatransformacion/humanitarian-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server