This is page 6 of 20. Use http://codebase.md/fujitsu-ai/mcp-server-for-mas-developments?lines=true&page={x} to view the full context. # Directory Structure ``` ├── .gitattributes ├── .gitignore ├── agents │ ├── __init__.py │ ├── AgentInterface │ │ ├── __init__.py │ │ ├── Python │ │ │ ├── __init__.py │ │ │ ├── agent.py │ │ │ ├── color.py │ │ │ ├── config.py │ │ │ ├── language.py │ │ │ ├── local_file_handler.py │ │ │ └── network.py │ │ └── requirements.txt │ ├── AgentMonitoring │ │ ├── ChatBot-Agent Dashboard Example - Grafana.json │ │ ├── images │ │ │ ├── Grafana.png │ │ │ └── Prometheus.png │ │ ├── IoT-Agent Dashboard Example - Grafana.json │ │ ├── OpenAI compatible API - Agent Dashboard Example - Grafana.json │ │ ├── prometheus Example.yml │ │ └── README.md │ ├── ChatBotAgent │ │ ├── __init__.py │ │ ├── config.json.example │ │ ├── html │ │ │ ├── favicon.ico │ │ │ ├── index_de.html │ │ │ ├── index.html │ │ │ ├── Logo_light.svg │ │ │ ├── start_http_server.ps1 │ │ │ └── start_http_server.sh │ │ ├── Python │ │ │ ├── __init__.py │ │ │ └── chatbot_agent.py │ │ ├── README.md │ │ └── requirements.txt │ ├── IoTAgent │ │ ├── config_example.json │ │ ├── Python │ │ │ ├── iot_mqtt_agent.py │ │ │ └── language.py │ │ ├── README.md │ │ └── requirements.txt │ ├── MCP-Client │ │ ├── __init__.py │ │ ├── .env.example │ │ ├── Python │ │ │ ├── __init__.py │ │ │ ├── chat_handler.py │ │ │ ├── config.py │ │ │ ├── environment.py │ │ │ ├── llm_client.py │ │ │ ├── mcp_client_sse.py │ │ │ ├── mcp_client.py │ │ │ ├── messages │ │ │ │ ├── __init__.py │ │ │ │ ├── message_types │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── incrementing_id_message.py │ │ │ │ │ ├── initialize_message.py │ │ │ │ │ ├── json_rpc_message.py │ │ │ │ │ ├── ping_message.py │ │ │ │ │ ├── prompts_messages.py │ │ │ │ │ ├── prompts_models.py │ │ │ │ │ ├── resources_messages.py │ │ │ │ │ └── tools_messages.py │ │ │ │ ├── send_call_tool.py │ │ │ │ ├── send_initialize_message.py │ │ │ │ ├── send_message.py │ │ │ │ ├── send_ping.py │ │ │ │ ├── send_prompts.py │ │ │ │ ├── send_resources.py │ │ │ │ └── send_tools_list.py │ │ │ ├── system_prompt_generator.py │ │ │ ├── tools_handler.py │ │ │ └── transport │ │ │ ├── __init__.py │ │ │ └── stdio │ │ │ ├── __init__.py │ │ │ ├── stdio_client.py │ │ │ ├── stdio_server_parameters.py │ │ │ └── stdio_server_shutdown.py │ │ ├── README.md │ │ ├── requirements.txt │ │ └── server_config.json │ ├── OpenAI_Compatible_API_Agent │ │ ├── __init__.py │ │ ├── docker-compose.yml │ │ ├── Dockerfile │ │ ├── pgpt_openai_api_mcp.json.example │ │ ├── pgpt_openai_api_proxy.json.example │ │ ├── Python │ │ │ ├── __init__.py │ │ │ ├── client_tests │ │ │ │ ├── __init__.py │ │ │ │ ├── openai_test_client_structured.py │ │ │ │ ├── openai_test_client_tools.py │ │ │ │ ├── openai_test_client.py │ │ │ │ ├── vllm_client_multimodal.py │ │ │ │ ├── vllm_client.py │ │ │ │ ├── vllm_structured.py │ │ │ │ └── vllm_structured2.py │ │ │ ├── generate_api_key.py │ │ │ ├── open_ai_helper.py │ │ │ ├── openai_compatible_api.py │ │ │ ├── openai_mcp_api.py │ │ │ ├── pgpt_api.py │ │ │ ├── privategpt_api.py │ │ │ └── vllmproxy.py │ │ ├── README.md │ │ └── requirements.txt │ └── SourceManagerAgent │ ├── __init__.py │ ├── config.json.example │ └── Python │ ├── __init__.py │ ├── file_tools │ │ └── loader_factory.py │ ├── file_upload_agent.py │ └── local_db.py ├── clients │ ├── __init__.py │ ├── C# .Net │ │ ├── 1.0 mcp_login │ │ │ ├── bin │ │ │ │ └── Debug │ │ │ │ └── net9.0 │ │ │ │ ├── mcp_login.deps.json │ │ │ │ ├── mcp_login.dll │ │ │ │ ├── mcp_login.exe │ │ │ │ ├── mcp_login.pdb │ │ │ │ ├── mcp_login.runtimeconfig.json │ │ │ │ └── Newtonsoft.Json.dll │ │ │ ├── mcp_login.csproj │ │ │ ├── obj │ │ │ │ ├── Debug │ │ │ │ │ └── net9.0 │ │ │ │ │ ├── .NETCoreApp,Version=v9.0.AssemblyAttributes.cs │ │ │ │ │ ├── apphost.exe │ │ │ │ │ ├── mcp_login.AssemblyInfo.cs │ │ │ │ │ ├── mcp_login.AssemblyInfoInputs.cache │ │ │ │ │ ├── mcp_login.assets.cache │ │ │ │ │ ├── mcp_login.csproj.AssemblyReference.cache │ │ │ │ │ ├── mcp_login.csproj.CoreCompileInputs.cache │ │ │ │ │ ├── mcp_login.csproj.FileListAbsolute.txt │ │ │ │ │ ├── mcp_login.csproj.Up2Date │ │ │ │ │ ├── mcp_login.dll │ │ │ │ │ ├── mcp_login.GeneratedMSBuildEditorConfig.editorconfig │ │ │ │ │ ├── mcp_login.genruntimeconfig.cache │ │ │ │ │ ├── mcp_login.GlobalUsings.g.cs │ │ │ │ │ ├── mcp_login.pdb │ │ │ │ │ ├── ref │ │ │ │ │ │ └── mcp_login.dll │ │ │ │ │ └── refint │ │ │ │ │ └── mcp_login.dll │ │ │ │ ├── mcp_login.csproj.nuget.dgspec.json │ │ │ │ ├── mcp_login.csproj.nuget.g.props │ │ │ │ ├── mcp_login.csproj.nuget.g.targets │ │ │ │ ├── project.assets.json │ │ │ │ └── project.nuget.cache │ │ │ └── Program.cs │ │ ├── 1.1 mcp_logout │ │ │ ├── bin │ │ │ │ └── Debug │ │ │ │ └── net9.0 │ │ │ │ ├── mcp_logout.deps.json │ │ │ │ ├── mcp_logout.dll │ │ │ │ ├── mcp_logout.exe │ │ │ │ ├── mcp_logout.pdb │ │ │ │ ├── mcp_logout.runtimeconfig.json │ │ │ │ └── Newtonsoft.Json.dll │ │ │ ├── mcp_logout.csproj │ │ │ ├── obj │ │ │ │ ├── Debug │ │ │ │ │ └── net9.0 │ │ │ │ │ ├── .NETCoreApp,Version=v9.0.AssemblyAttributes.cs │ │ │ │ │ ├── apphost.exe │ │ │ │ │ ├── mcp_logout.AssemblyInfo.cs │ │ │ │ │ ├── mcp_logout.AssemblyInfoInputs.cache │ │ │ │ │ ├── mcp_logout.assets.cache │ │ │ │ │ ├── mcp_logout.csproj.AssemblyReference.cache │ │ │ │ │ ├── mcp_logout.csproj.CoreCompileInputs.cache │ │ │ │ │ ├── mcp_logout.csproj.FileListAbsolute.txt │ │ │ │ │ ├── mcp_logout.csproj.Up2Date │ │ │ │ │ ├── mcp_logout.dll │ │ │ │ │ ├── mcp_logout.GeneratedMSBuildEditorConfig.editorconfig │ │ │ │ │ ├── mcp_logout.genruntimeconfig.cache │ │ │ │ │ ├── mcp_logout.GlobalUsings.g.cs │ │ │ │ │ ├── mcp_logout.pdb │ │ │ │ │ ├── ref │ │ │ │ │ │ └── mcp_logout.dll │ │ │ │ │ └── refint │ │ │ │ │ └── mcp_logout.dll │ │ │ │ ├── mcp_logout.csproj.nuget.dgspec.json │ │ │ │ ├── mcp_logout.csproj.nuget.g.props │ │ │ │ ├── mcp_logout.csproj.nuget.g.targets │ │ │ │ ├── project.assets.json │ │ │ │ └── project.nuget.cache │ │ │ └── Program.cs │ │ ├── 2.0 mcp_chat │ │ │ ├── bin │ │ │ │ └── Debug │ │ │ │ └── net9.0 │ │ │ │ ├── mcp_chat.deps.json │ │ │ │ ├── mcp_chat.dll │ │ │ │ ├── mcp_chat.exe │ │ │ │ ├── mcp_chat.pdb │ │ │ │ ├── mcp_chat.runtimeconfig.json │ │ │ │ └── Newtonsoft.Json.dll │ │ │ ├── mcp_chat.csproj │ │ │ ├── obj │ │ │ │ ├── Debug │ │ │ │ │ └── net9.0 │ │ │ │ │ ├── .NETCoreApp,Version=v9.0.AssemblyAttributes.cs │ │ │ │ │ ├── apphost.exe │ │ │ │ │ ├── mcp_chat.AssemblyInfo.cs │ │ │ │ │ ├── mcp_chat.AssemblyInfoInputs.cache │ │ │ │ │ ├── mcp_chat.assets.cache │ │ │ │ │ ├── mcp_chat.csproj.AssemblyReference.cache │ │ │ │ │ ├── mcp_chat.csproj.CoreCompileInputs.cache │ │ │ │ │ ├── mcp_chat.csproj.FileListAbsolute.txt │ │ │ │ │ ├── mcp_chat.csproj.Up2Date │ │ │ │ │ ├── mcp_chat.dll │ │ │ │ │ ├── mcp_chat.GeneratedMSBuildEditorConfig.editorconfig │ │ │ │ │ ├── mcp_chat.genruntimeconfig.cache │ │ │ │ │ ├── mcp_chat.GlobalUsings.g.cs │ │ │ │ │ ├── mcp_chat.pdb │ │ │ │ │ ├── ref │ │ │ │ │ │ └── mcp_chat.dll │ │ │ │ │ └── refint │ │ │ │ │ └── mcp_chat.dll │ │ │ │ ├── mcp_chat.csproj.nuget.dgspec.json │ │ │ │ ├── mcp_chat.csproj.nuget.g.props │ │ │ │ ├── mcp_chat.csproj.nuget.g.targets │ │ │ │ ├── project.assets.json │ │ │ │ └── project.nuget.cache │ │ │ └── Program.cs │ │ ├── 2.1 mcp_continue_chat │ │ │ ├── bin │ │ │ │ └── Debug │ │ │ │ └── net9.0 │ │ │ │ ├── mcp_continue_chat.deps.json │ │ │ │ ├── mcp_continue_chat.dll │ │ │ │ ├── mcp_continue_chat.exe │ │ │ │ ├── mcp_continue_chat.pdb │ │ │ │ ├── mcp_continue_chat.runtimeconfig.json │ │ │ │ └── Newtonsoft.Json.dll │ │ │ ├── mcp_continue_chat.csproj │ │ │ ├── obj │ │ │ │ ├── Debug │ │ │ │ │ └── net9.0 │ │ │ │ │ ├── .NETCoreApp,Version=v9.0.AssemblyAttributes.cs │ │ │ │ │ ├── apphost.exe │ │ │ │ │ ├── mcp_cont.EF178231.Up2Date │ │ │ │ │ ├── mcp_continue_chat.AssemblyInfo.cs │ │ │ │ │ ├── mcp_continue_chat.AssemblyInfoInputs.cache │ │ │ │ │ ├── mcp_continue_chat.assets.cache │ │ │ │ │ ├── mcp_continue_chat.csproj.AssemblyReference.cache │ │ │ │ │ ├── mcp_continue_chat.csproj.CoreCompileInputs.cache │ │ │ │ │ ├── mcp_continue_chat.csproj.FileListAbsolute.txt │ │ │ │ │ ├── mcp_continue_chat.dll │ │ │ │ │ ├── mcp_continue_chat.GeneratedMSBuildEditorConfig.editorconfig │ │ │ │ │ ├── mcp_continue_chat.genruntimeconfig.cache │ │ │ │ │ ├── mcp_continue_chat.GlobalUsings.g.cs │ │ │ │ │ ├── mcp_continue_chat.pdb │ │ │ │ │ ├── ref │ │ │ │ │ │ └── mcp_continue_chat.dll │ │ │ │ │ └── refint │ │ │ │ │ └── mcp_continue_chat.dll │ │ │ │ ├── mcp_continue_chat.csproj.nuget.dgspec.json │ │ │ │ ├── mcp_continue_chat.csproj.nuget.g.props │ │ │ │ ├── mcp_continue_chat.csproj.nuget.g.targets │ │ │ │ ├── project.assets.json │ │ │ │ └── project.nuget.cache │ │ │ └── Program.cs │ │ ├── 2.2 mcp_get_chat_info │ │ │ ├── bin │ │ │ │ └── Debug │ │ │ │ └── net9.0 │ │ │ │ ├── mcp_get_chat_info.deps.json │ │ │ │ ├── mcp_get_chat_info.dll │ │ │ │ ├── mcp_get_chat_info.exe │ │ │ │ ├── mcp_get_chat_info.pdb │ │ │ │ ├── mcp_get_chat_info.runtimeconfig.json │ │ │ │ └── Newtonsoft.Json.dll │ │ │ ├── Dokumente - Verknüpfung.lnk │ │ │ ├── mcp_get_chat_info.csproj │ │ │ ├── obj │ │ │ │ ├── Debug │ │ │ │ │ └── net9.0 │ │ │ │ │ ├── .NETCoreApp,Version=v9.0.AssemblyAttributes.cs │ │ │ │ │ ├── apphost.exe │ │ │ │ │ ├── mcp_get_.DFF47B4E.Up2Date │ │ │ │ │ ├── mcp_get_chat_info.AssemblyInfo.cs │ │ │ │ │ ├── mcp_get_chat_info.AssemblyInfoInputs.cache │ │ │ │ │ ├── mcp_get_chat_info.assets.cache │ │ │ │ │ ├── mcp_get_chat_info.csproj.AssemblyReference.cache │ │ │ │ │ ├── mcp_get_chat_info.csproj.CoreCompileInputs.cache │ │ │ │ │ ├── mcp_get_chat_info.csproj.FileListAbsolute.txt │ │ │ │ │ ├── mcp_get_chat_info.dll │ │ │ │ │ ├── mcp_get_chat_info.GeneratedMSBuildEditorConfig.editorconfig │ │ │ │ │ ├── mcp_get_chat_info.genruntimeconfig.cache │ │ │ │ │ ├── mcp_get_chat_info.GlobalUsings.g.cs │ │ │ │ │ ├── mcp_get_chat_info.pdb │ │ │ │ │ ├── ref │ │ │ │ │ │ └── mcp_get_chat_info.dll │ │ │ │ │ └── refint │ │ │ │ │ └── mcp_get_chat_info.dll │ │ │ │ ├── mcp_get_chat_info.csproj.nuget.dgspec.json │ │ │ │ ├── mcp_get_chat_info.csproj.nuget.g.props │ │ │ │ ├── mcp_get_chat_info.csproj.nuget.g.targets │ │ │ │ ├── project.assets.json │ │ │ │ └── project.nuget.cache │ │ │ └── Program.cs │ │ ├── 3.0 mcp_create_source │ │ │ ├── bin │ │ │ │ └── Debug │ │ │ │ └── net9.0 │ │ │ │ ├── mcp_create_source.deps.json │ │ │ │ ├── mcp_create_source.dll │ │ │ │ ├── mcp_create_source.exe │ │ │ │ ├── mcp_create_source.pdb │ │ │ │ ├── mcp_create_source.runtimeconfig.json │ │ │ │ └── Newtonsoft.Json.dll │ │ │ ├── mcp_create_source.csproj │ │ │ ├── obj │ │ │ │ ├── Debug │ │ │ │ │ └── net9.0 │ │ │ │ │ ├── .NETCoreApp,Version=v9.0.AssemblyAttributes.cs │ │ │ │ │ ├── apphost.exe │ │ │ │ │ ├── mcp_crea.CB4ED912.Up2Date │ │ │ │ │ ├── mcp_create_source.AssemblyInfo.cs │ │ │ │ │ ├── mcp_create_source.AssemblyInfoInputs.cache │ │ │ │ │ ├── mcp_create_source.assets.cache │ │ │ │ │ ├── mcp_create_source.csproj.AssemblyReference.cache │ │ │ │ │ ├── mcp_create_source.csproj.CoreCompileInputs.cache │ │ │ │ │ ├── mcp_create_source.csproj.FileListAbsolute.txt │ │ │ │ │ ├── mcp_create_source.dll │ │ │ │ │ ├── mcp_create_source.GeneratedMSBuildEditorConfig.editorconfig │ │ │ │ │ ├── mcp_create_source.genruntimeconfig.cache │ │ │ │ │ ├── mcp_create_source.GlobalUsings.g.cs │ │ │ │ │ ├── mcp_create_source.pdb │ │ │ │ │ ├── ref │ │ │ │ │ │ └── mcp_create_source.dll │ │ │ │ │ └── refint │ │ │ │ │ └── mcp_create_source.dll │ │ │ │ ├── mcp_create_source.csproj.nuget.dgspec.json │ │ │ │ ├── mcp_create_source.csproj.nuget.g.props │ │ │ │ ├── mcp_create_source.csproj.nuget.g.targets │ │ │ │ ├── project.assets.json │ │ │ │ └── project.nuget.cache │ │ │ └── Program.cs │ │ ├── 3.1 mcp_get_source │ │ │ ├── bin │ │ │ │ └── Debug │ │ │ │ └── net9.0 │ │ │ │ ├── mcp_get_source.deps.json │ │ │ │ ├── mcp_get_source.dll │ │ │ │ ├── mcp_get_source.exe │ │ │ │ ├── mcp_get_source.pdb │ │ │ │ ├── mcp_get_source.runtimeconfig.json │ │ │ │ └── Newtonsoft.Json.dll │ │ │ ├── mcp_get_source.csproj │ │ │ ├── obj │ │ │ │ ├── Debug │ │ │ │ │ └── net9.0 │ │ │ │ │ ├── .NETCoreApp,Version=v9.0.AssemblyAttributes.cs │ │ │ │ │ ├── apphost.exe │ │ │ │ │ ├── mcp_get_.4E61956F.Up2Date │ │ │ │ │ ├── mcp_get_source.AssemblyInfo.cs │ │ │ │ │ ├── mcp_get_source.AssemblyInfoInputs.cache │ │ │ │ │ ├── mcp_get_source.assets.cache │ │ │ │ │ ├── mcp_get_source.csproj.AssemblyReference.cache │ │ │ │ │ ├── mcp_get_source.csproj.CoreCompileInputs.cache │ │ │ │ │ ├── mcp_get_source.csproj.FileListAbsolute.txt │ │ │ │ │ ├── mcp_get_source.dll │ │ │ │ │ ├── mcp_get_source.GeneratedMSBuildEditorConfig.editorconfig │ │ │ │ │ ├── mcp_get_source.genruntimeconfig.cache │ │ │ │ │ ├── mcp_get_source.GlobalUsings.g.cs │ │ │ │ │ ├── mcp_get_source.pdb │ │ │ │ │ ├── ref │ │ │ │ │ │ └── mcp_get_source.dll │ │ │ │ │ └── refint │ │ │ │ │ └── mcp_get_source.dll │ │ │ │ ├── mcp_get_source.csproj.nuget.dgspec.json │ │ │ │ ├── mcp_get_source.csproj.nuget.g.props │ │ │ │ ├── mcp_get_source.csproj.nuget.g.targets │ │ │ │ ├── project.assets.json │ │ │ │ └── project.nuget.cache │ │ │ └── Program.cs │ │ ├── 3.2 mcp_list_sources │ │ │ ├── bin │ │ │ │ └── Debug │ │ │ │ └── net9.0 │ │ │ │ ├── mcp_list_sources.deps.json │ │ │ │ ├── mcp_list_sources.dll │ │ │ │ ├── mcp_list_sources.exe │ │ │ │ ├── mcp_list_sources.pdb │ │ │ │ ├── mcp_list_sources.runtimeconfig.json │ │ │ │ └── Newtonsoft.Json.dll │ │ │ ├── mcp_list_sources.csproj │ │ │ ├── obj │ │ │ │ ├── Debug │ │ │ │ │ └── net9.0 │ │ │ │ │ ├── .NETCoreApp,Version=v9.0.AssemblyAttributes.cs │ │ │ │ │ ├── apphost.exe │ │ │ │ │ ├── mcp_list_sources.AssemblyInfo.cs │ │ │ │ │ ├── mcp_list_sources.AssemblyInfoInputs.cache │ │ │ │ │ ├── mcp_list_sources.assets.cache │ │ │ │ │ ├── mcp_list_sources.csproj.AssemblyReference.cache │ │ │ │ │ ├── mcp_list_sources.csproj.CoreCompileInputs.cache │ │ │ │ │ ├── mcp_list_sources.csproj.FileListAbsolute.txt │ │ │ │ │ ├── mcp_list_sources.dll │ │ │ │ │ ├── mcp_list_sources.GeneratedMSBuildEditorConfig.editorconfig │ │ │ │ │ ├── mcp_list_sources.genruntimeconfig.cache │ │ │ │ │ ├── mcp_list_sources.GlobalUsings.g.cs │ │ │ │ │ ├── mcp_list_sources.pdb │ │ │ │ │ ├── mcp_list.A720E197.Up2Date │ │ │ │ │ ├── ref │ │ │ │ │ │ └── mcp_list_sources.dll │ │ │ │ │ └── refint │ │ │ │ │ └── mcp_list_sources.dll │ │ │ │ ├── mcp_list_sources.csproj.nuget.dgspec.json │ │ │ │ ├── mcp_list_sources.csproj.nuget.g.props │ │ │ │ ├── mcp_list_sources.csproj.nuget.g.targets │ │ │ │ ├── project.assets.json │ │ │ │ └── project.nuget.cache │ │ │ └── Program.cs │ │ ├── 3.3 mcp_edit_source │ │ │ ├── bin │ │ │ │ └── Debug │ │ │ │ └── net9.0 │ │ │ │ ├── mcp_edit_source.deps.json │ │ │ │ ├── mcp_edit_source.dll │ │ │ │ ├── mcp_edit_source.exe │ │ │ │ ├── mcp_edit_source.pdb │ │ │ │ ├── mcp_edit_source.runtimeconfig.json │ │ │ │ └── Newtonsoft.Json.dll │ │ │ ├── mcp_edit_source.csproj │ │ │ ├── obj │ │ │ │ ├── Debug │ │ │ │ │ └── net9.0 │ │ │ │ │ ├── .NETCoreApp,Version=v9.0.AssemblyAttributes.cs │ │ │ │ │ ├── apphost.exe │ │ │ │ │ ├── mcp_edit_source.AssemblyInfo.cs │ │ │ │ │ ├── mcp_edit_source.AssemblyInfoInputs.cache │ │ │ │ │ ├── mcp_edit_source.assets.cache │ │ │ │ │ ├── mcp_edit_source.csproj.AssemblyReference.cache │ │ │ │ │ ├── mcp_edit_source.csproj.CoreCompileInputs.cache │ │ │ │ │ ├── mcp_edit_source.csproj.FileListAbsolute.txt │ │ │ │ │ ├── mcp_edit_source.dll │ │ │ │ │ ├── mcp_edit_source.GeneratedMSBuildEditorConfig.editorconfig │ │ │ │ │ ├── mcp_edit_source.genruntimeconfig.cache │ │ │ │ │ ├── mcp_edit_source.GlobalUsings.g.cs │ │ │ │ │ ├── mcp_edit_source.pdb │ │ │ │ │ ├── mcp_edit.7303BE3B.Up2Date │ │ │ │ │ ├── ref │ │ │ │ │ │ └── mcp_edit_source.dll │ │ │ │ │ └── refint │ │ │ │ │ └── mcp_edit_source.dll │ │ │ │ ├── mcp_edit_source.csproj.nuget.dgspec.json │ │ │ │ ├── mcp_edit_source.csproj.nuget.g.props │ │ │ │ ├── mcp_edit_source.csproj.nuget.g.targets │ │ │ │ ├── project.assets.json │ │ │ │ └── project.nuget.cache │ │ │ └── Program.cs │ │ ├── 3.4 mcp_delete_source │ │ │ ├── bin │ │ │ │ └── Debug │ │ │ │ └── net9.0 │ │ │ │ ├── mcp_delete_source.deps.json │ │ │ │ ├── mcp_delete_source.dll │ │ │ │ ├── mcp_delete_source.exe │ │ │ │ ├── mcp_delete_source.pdb │ │ │ │ ├── mcp_delete_source.runtimeconfig.json │ │ │ │ └── Newtonsoft.Json.dll │ │ │ ├── mcp_delete_source.csproj │ │ │ ├── obj │ │ │ │ ├── Debug │ │ │ │ │ └── net9.0 │ │ │ │ │ ├── .NETCoreApp,Version=v9.0.AssemblyAttributes.cs │ │ │ │ │ ├── apphost.exe │ │ │ │ │ ├── mcp_dele.67DD13F9.Up2Date │ │ │ │ │ ├── mcp_delete_source.AssemblyInfo.cs │ │ │ │ │ ├── mcp_delete_source.AssemblyInfoInputs.cache │ │ │ │ │ ├── mcp_delete_source.assets.cache │ │ │ │ │ ├── mcp_delete_source.csproj.AssemblyReference.cache │ │ │ │ │ ├── mcp_delete_source.csproj.CoreCompileInputs.cache │ │ │ │ │ ├── mcp_delete_source.csproj.FileListAbsolute.txt │ │ │ │ │ ├── mcp_delete_source.dll │ │ │ │ │ ├── mcp_delete_source.GeneratedMSBuildEditorConfig.editorconfig │ │ │ │ │ ├── mcp_delete_source.genruntimeconfig.cache │ │ │ │ │ ├── mcp_delete_source.GlobalUsings.g.cs │ │ │ │ │ ├── mcp_delete_source.pdb │ │ │ │ │ ├── ref │ │ │ │ │ │ └── mcp_delete_source.dll │ │ │ │ │ └── refint │ │ │ │ │ └── mcp_delete_source.dll │ │ │ │ ├── mcp_delete_source.csproj.nuget.dgspec.json │ │ │ │ ├── mcp_delete_source.csproj.nuget.g.props │ │ │ │ ├── mcp_delete_source.csproj.nuget.g.targets │ │ │ │ ├── project.assets.json │ │ │ │ └── project.nuget.cache │ │ │ └── Program.cs │ │ ├── 4.0 mcp_list_groups │ │ │ ├── bin │ │ │ │ └── Debug │ │ │ │ └── net9.0 │ │ │ │ ├── mcp_list_groups.deps.json │ │ │ │ ├── mcp_list_groups.dll │ │ │ │ ├── mcp_list_groups.exe │ │ │ │ ├── mcp_list_groups.pdb │ │ │ │ ├── mcp_list_groups.runtimeconfig.json │ │ │ │ └── Newtonsoft.Json.dll │ │ │ ├── mcp_list_groups.csproj │ │ │ ├── obj │ │ │ │ ├── Debug │ │ │ │ │ └── net9.0 │ │ │ │ │ ├── .NETCoreApp,Version=v9.0.AssemblyAttributes.cs │ │ │ │ │ ├── apphost.exe │ │ │ │ │ ├── mcp_list_groups.AssemblyInfo.cs │ │ │ │ │ ├── mcp_list_groups.AssemblyInfoInputs.cache │ │ │ │ │ ├── mcp_list_groups.assets.cache │ │ │ │ │ ├── mcp_list_groups.csproj.AssemblyReference.cache │ │ │ │ │ ├── mcp_list_groups.csproj.CoreCompileInputs.cache │ │ │ │ │ ├── mcp_list_groups.csproj.FileListAbsolute.txt │ │ │ │ │ ├── mcp_list_groups.dll │ │ │ │ │ ├── mcp_list_groups.GeneratedMSBuildEditorConfig.editorconfig │ │ │ │ │ ├── mcp_list_groups.genruntimeconfig.cache │ │ │ │ │ ├── mcp_list_groups.GlobalUsings.g.cs │ │ │ │ │ ├── mcp_list_groups.pdb │ │ │ │ │ ├── mcp_list.EBD5E0D2.Up2Date │ │ │ │ │ ├── ref │ │ │ │ │ │ └── mcp_list_groups.dll │ │ │ │ │ └── refint │ │ │ │ │ └── mcp_list_groups.dll │ │ │ │ ├── mcp_list_groups.csproj.nuget.dgspec.json │ │ │ │ ├── mcp_list_groups.csproj.nuget.g.props │ │ │ │ ├── mcp_list_groups.csproj.nuget.g.targets │ │ │ │ ├── project.assets.json │ │ │ │ └── project.nuget.cache │ │ │ └── Program.cs │ │ ├── 4.1 mcp_store_group │ │ │ ├── bin │ │ │ │ └── Debug │ │ │ │ └── net9.0 │ │ │ │ ├── mcp_store_group.deps.json │ │ │ │ ├── mcp_store_group.dll │ │ │ │ ├── mcp_store_group.exe │ │ │ │ ├── mcp_store_group.pdb │ │ │ │ ├── mcp_store_group.runtimeconfig.json │ │ │ │ └── Newtonsoft.Json.dll │ │ │ ├── mcp_store_group.csproj │ │ │ ├── obj │ │ │ │ ├── Debug │ │ │ │ │ └── net9.0 │ │ │ │ │ ├── .NETCoreApp,Version=v9.0.AssemblyAttributes.cs │ │ │ │ │ ├── apphost.exe │ │ │ │ │ ├── mcp_stor.AFB4AA35.Up2Date │ │ │ │ │ ├── mcp_store_group.AssemblyInfo.cs │ │ │ │ │ ├── mcp_store_group.AssemblyInfoInputs.cache │ │ │ │ │ ├── mcp_store_group.assets.cache │ │ │ │ │ ├── mcp_store_group.csproj.AssemblyReference.cache │ │ │ │ │ ├── mcp_store_group.csproj.CoreCompileInputs.cache │ │ │ │ │ ├── mcp_store_group.csproj.FileListAbsolute.txt │ │ │ │ │ ├── mcp_store_group.dll │ │ │ │ │ ├── mcp_store_group.GeneratedMSBuildEditorConfig.editorconfig │ │ │ │ │ ├── mcp_store_group.genruntimeconfig.cache │ │ │ │ │ ├── mcp_store_group.GlobalUsings.g.cs │ │ │ │ │ ├── mcp_store_group.pdb │ │ │ │ │ ├── ref │ │ │ │ │ │ └── mcp_store_group.dll │ │ │ │ │ └── refint │ │ │ │ │ └── mcp_store_group.dll │ │ │ │ ├── mcp_store_group.csproj.nuget.dgspec.json │ │ │ │ ├── mcp_store_group.csproj.nuget.g.props │ │ │ │ ├── mcp_store_group.csproj.nuget.g.targets │ │ │ │ ├── project.assets.json │ │ │ │ └── project.nuget.cache │ │ │ └── Program.cs │ │ ├── 4.2 mcp_delete_group │ │ │ ├── bin │ │ │ │ └── Debug │ │ │ │ └── net9.0 │ │ │ │ ├── mcp_delete_group.deps.json │ │ │ │ ├── mcp_delete_group.dll │ │ │ │ ├── mcp_delete_group.exe │ │ │ │ ├── mcp_delete_group.pdb │ │ │ │ ├── mcp_delete_group.runtimeconfig.json │ │ │ │ └── Newtonsoft.Json.dll │ │ │ ├── mcp_delete_group.csproj │ │ │ ├── obj │ │ │ │ ├── Debug │ │ │ │ │ └── net9.0 │ │ │ │ │ ├── .NETCoreApp,Version=v9.0.AssemblyAttributes.cs │ │ │ │ │ ├── apphost.exe │ │ │ │ │ ├── mcp_dele.FE1C6298.Up2Date │ │ │ │ │ ├── mcp_delete_group.AssemblyInfo.cs │ │ │ │ │ ├── mcp_delete_group.AssemblyInfoInputs.cache │ │ │ │ │ ├── mcp_delete_group.assets.cache │ │ │ │ │ ├── mcp_delete_group.csproj.AssemblyReference.cache │ │ │ │ │ ├── mcp_delete_group.csproj.CoreCompileInputs.cache │ │ │ │ │ ├── mcp_delete_group.csproj.FileListAbsolute.txt │ │ │ │ │ ├── mcp_delete_group.dll │ │ │ │ │ ├── mcp_delete_group.GeneratedMSBuildEditorConfig.editorconfig │ │ │ │ │ ├── mcp_delete_group.genruntimeconfig.cache │ │ │ │ │ ├── mcp_delete_group.GlobalUsings.g.cs │ │ │ │ │ ├── mcp_delete_group.pdb │ │ │ │ │ ├── ref │ │ │ │ │ │ └── mcp_delete_group.dll │ │ │ │ │ └── refint │ │ │ │ │ └── mcp_delete_group.dll │ │ │ │ ├── mcp_delete_group.csproj.nuget.dgspec.json │ │ │ │ ├── mcp_delete_group.csproj.nuget.g.props │ │ │ │ ├── mcp_delete_group.csproj.nuget.g.targets │ │ │ │ ├── project.assets.json │ │ │ │ └── project.nuget.cache │ │ │ └── Program.cs │ │ ├── 5.0 mcp_store_user │ │ │ ├── bin │ │ │ │ └── Debug │ │ │ │ └── net9.0 │ │ │ │ ├── mcp_store_user.deps.json │ │ │ │ ├── mcp_store_user.dll │ │ │ │ ├── mcp_store_user.exe │ │ │ │ ├── mcp_store_user.pdb │ │ │ │ ├── mcp_store_user.runtimeconfig.json │ │ │ │ └── Newtonsoft.Json.dll │ │ │ ├── mcp_store_user.csproj │ │ │ ├── obj │ │ │ │ ├── Debug │ │ │ │ │ └── net9.0 │ │ │ │ │ ├── .NETCoreApp,Version=v9.0.AssemblyAttributes.cs │ │ │ │ │ ├── apphost.exe │ │ │ │ │ ├── mcp_stor.6C0F0C8A.Up2Date │ │ │ │ │ ├── mcp_store_user.AssemblyInfo.cs │ │ │ │ │ ├── mcp_store_user.AssemblyInfoInputs.cache │ │ │ │ │ ├── mcp_store_user.assets.cache │ │ │ │ │ ├── mcp_store_user.csproj.AssemblyReference.cache │ │ │ │ │ ├── mcp_store_user.csproj.CoreCompileInputs.cache │ │ │ │ │ ├── mcp_store_user.csproj.FileListAbsolute.txt │ │ │ │ │ ├── mcp_store_user.dll │ │ │ │ │ ├── mcp_store_user.GeneratedMSBuildEditorConfig.editorconfig │ │ │ │ │ ├── mcp_store_user.genruntimeconfig.cache │ │ │ │ │ ├── mcp_store_user.GlobalUsings.g.cs │ │ │ │ │ ├── mcp_store_user.pdb │ │ │ │ │ ├── ref │ │ │ │ │ │ └── mcp_store_user.dll │ │ │ │ │ └── refint │ │ │ │ │ └── mcp_store_user.dll │ │ │ │ ├── mcp_store_user.csproj.nuget.dgspec.json │ │ │ │ ├── mcp_store_user.csproj.nuget.g.props │ │ │ │ ├── mcp_store_user.csproj.nuget.g.targets │ │ │ │ ├── project.assets.json │ │ │ │ └── project.nuget.cache │ │ │ └── Program.cs │ │ ├── 5.1 mcp_edit_user │ │ │ ├── bin │ │ │ │ └── Debug │ │ │ │ └── net9.0 │ │ │ │ ├── mcp_edit_user.deps.json │ │ │ │ ├── mcp_edit_user.dll │ │ │ │ ├── mcp_edit_user.exe │ │ │ │ ├── mcp_edit_user.pdb │ │ │ │ ├── mcp_edit_user.runtimeconfig.json │ │ │ │ └── Newtonsoft.Json.dll │ │ │ ├── mcp_edit_user.csproj │ │ │ ├── obj │ │ │ │ ├── Debug │ │ │ │ │ └── net9.0 │ │ │ │ │ ├── .NETCoreApp,Version=v9.0.AssemblyAttributes.cs │ │ │ │ │ ├── apphost.exe │ │ │ │ │ ├── mcp_edit_user.AssemblyInfo.cs │ │ │ │ │ ├── mcp_edit_user.AssemblyInfoInputs.cache │ │ │ │ │ ├── mcp_edit_user.assets.cache │ │ │ │ │ ├── mcp_edit_user.csproj.AssemblyReference.cache │ │ │ │ │ ├── mcp_edit_user.csproj.CoreCompileInputs.cache │ │ │ │ │ ├── mcp_edit_user.csproj.FileListAbsolute.txt │ │ │ │ │ ├── mcp_edit_user.dll │ │ │ │ │ ├── mcp_edit_user.GeneratedMSBuildEditorConfig.editorconfig │ │ │ │ │ ├── mcp_edit_user.genruntimeconfig.cache │ │ │ │ │ ├── mcp_edit_user.GlobalUsings.g.cs │ │ │ │ │ ├── mcp_edit_user.pdb │ │ │ │ │ ├── mcp_edit.94A30270.Up2Date │ │ │ │ │ ├── ref │ │ │ │ │ │ └── mcp_edit_user.dll │ │ │ │ │ └── refint │ │ │ │ │ └── mcp_edit_user.dll │ │ │ │ ├── mcp_edit_user.csproj.nuget.dgspec.json │ │ │ │ ├── mcp_edit_user.csproj.nuget.g.props │ │ │ │ ├── mcp_edit_user.csproj.nuget.g.targets │ │ │ │ ├── project.assets.json │ │ │ │ └── project.nuget.cache │ │ │ └── Program.cs │ │ ├── 5.2 mcp_delete_user │ │ │ ├── bin │ │ │ │ └── Debug │ │ │ │ └── net9.0 │ │ │ │ ├── mcp_delete_user.deps.json │ │ │ │ ├── mcp_delete_user.dll │ │ │ │ ├── mcp_delete_user.exe │ │ │ │ ├── mcp_delete_user.pdb │ │ │ │ ├── mcp_delete_user.runtimeconfig.json │ │ │ │ └── Newtonsoft.Json.dll │ │ │ ├── mcp_delete_user.csproj │ │ │ ├── obj │ │ │ │ ├── Debug │ │ │ │ │ └── net9.0 │ │ │ │ │ ├── .NETCoreApp,Version=v9.0.AssemblyAttributes.cs │ │ │ │ │ ├── apphost.exe │ │ │ │ │ ├── mcp_dele.CEB7E33D.Up2Date │ │ │ │ │ ├── mcp_delete_user.AssemblyInfo.cs │ │ │ │ │ ├── mcp_delete_user.AssemblyInfoInputs.cache │ │ │ │ │ ├── mcp_delete_user.assets.cache │ │ │ │ │ ├── mcp_delete_user.csproj.AssemblyReference.cache │ │ │ │ │ ├── mcp_delete_user.csproj.CoreCompileInputs.cache │ │ │ │ │ ├── mcp_delete_user.csproj.FileListAbsolute.txt │ │ │ │ │ ├── mcp_delete_user.dll │ │ │ │ │ ├── mcp_delete_user.GeneratedMSBuildEditorConfig.editorconfig │ │ │ │ │ ├── mcp_delete_user.genruntimeconfig.cache │ │ │ │ │ ├── mcp_delete_user.GlobalUsings.g.cs │ │ │ │ │ ├── mcp_delete_user.pdb │ │ │ │ │ ├── ref │ │ │ │ │ │ └── mcp_delete_user.dll │ │ │ │ │ └── refint │ │ │ │ │ └── mcp_delete_user.dll │ │ │ │ ├── mcp_delete_user.csproj.nuget.dgspec.json │ │ │ │ ├── mcp_delete_user.csproj.nuget.g.props │ │ │ │ ├── mcp_delete_user.csproj.nuget.g.targets │ │ │ │ ├── project.assets.json │ │ │ │ └── project.nuget.cache │ │ │ └── Program.cs │ │ ├── Code Archiv │ │ │ ├── mcp_chat.cs │ │ │ ├── mcp_continue_chat.cs │ │ │ ├── mcp_create_source.cs │ │ │ ├── mcp_delete_group.cs │ │ │ ├── mcp_delete_source.cs │ │ │ ├── mcp_delete_user.cs │ │ │ ├── mcp_edit_source.cs │ │ │ ├── mcp_edit_user.cs │ │ │ ├── mcp_get_chat_info.cs │ │ │ ├── mcp_get_source.cs │ │ │ ├── mcp_list_groups.cs │ │ │ ├── mcp_list_sources.cs │ │ │ ├── mcp_login.cs │ │ │ ├── mcp_logout.cs │ │ │ ├── mcp_store_group.cs │ │ │ └── mcp_store_user.cs │ │ └── README.md │ ├── C++ │ │ ├── .vscode │ │ │ └── launch.json │ │ ├── 1.0 mcp_login │ │ │ ├── MCPLoginClient.cpp │ │ │ └── Non-TLS version │ │ │ ├── MCPLoginClient.cpp │ │ │ └── MCPLoginClient.exe │ │ ├── 1.1 mcp_logout │ │ │ ├── MCPLogoutClient.cpp │ │ │ └── MCPLogoutClient.exe │ │ ├── 2.0 mcp_chat │ │ │ ├── MCPChatClient.cpp │ │ │ └── MCPChatClient.exe │ │ ├── 2.1 mcp_continue_chat │ │ │ ├── MCPChatContinuationClient.cpp │ │ │ └── MCPChatContinuationClient.exe │ │ ├── 2.2 mcp_get_chat_info │ │ │ ├── MCPGetChatInfoClient.cpp │ │ │ └── MCPGetChatInfoClient.exe │ │ ├── 3.0 mcp_create_source │ │ │ ├── MCPCreateSourceClient.cpp │ │ │ └── MCPCreateSourceClient.exe │ │ ├── 3.1 mcp_get_source │ │ │ ├── MCPGetSourceClient.cpp │ │ │ └── MCPGetSourceClient.exe │ │ ├── 3.2 mcp_list_sources │ │ │ ├── MCPListSourcesClient.cpp │ │ │ └── MCPListSourcesClient.exe │ │ ├── 3.3 mcp_edit_source │ │ │ ├── MCPEditSourceClient.cpp │ │ │ └── MCPEditSourceClient.exe │ │ ├── 3.4 mcp_delete_source │ │ │ ├── MCPDeleteSourceClient.cpp │ │ │ └── MCPDeleteSourceClient.exe │ │ ├── 4.0 mcp_list_groups │ │ │ ├── MCPListGroupsClient.cpp │ │ │ └── MCPListGroupsClient.exe │ │ ├── 4.1 mcp_store_group │ │ │ ├── MCPStoreGroupClient.cpp │ │ │ └── MCPStoreGroupClient.exe │ │ ├── 4.2 mcp_delete_group │ │ │ ├── MPCDeleteGroupClient.cpp │ │ │ └── MPCDeleteGroupClient.exe │ │ ├── 5.0 mcp_store_user │ │ │ ├── MCPStoreUserClient.cpp │ │ │ └── MCPStoreUserClient.exe │ │ ├── 5.1 mcp_edit_user │ │ │ ├── MCPEditUserClient.cpp │ │ │ └── MCPEditUserClient.exe │ │ ├── 5.2 mcp_delete_user │ │ │ ├── MCPDeleteUserClient.cpp │ │ │ └── MCPDeleteUserClient.exe │ │ ├── 9.0 mcp_keygen │ │ │ ├── MCPKeygenClient.cpp │ │ │ └── MCPKeygenClient.exe │ │ └── README.md │ ├── Go │ │ ├── 1.0 mcp_login │ │ │ ├── go.mod │ │ │ ├── MCPLoginClient.exe │ │ │ └── MCPLoginClient.go │ │ ├── 1.1 mcp_logout │ │ │ ├── MCPLogoutClient.exe │ │ │ └── MCPLogoutClient.go │ │ ├── 2.0 mcp_chat │ │ │ ├── MCPChatClient.exe │ │ │ └── MCPChatClient.go │ │ ├── 2.1 mcp_continue_chat │ │ │ ├── MCPChatContinuationClient.exe │ │ │ └── MCPChatContinuationClient.go │ │ ├── 2.2 mcp_get_chat_info │ │ │ ├── MCPGetChatInfoClient.exe │ │ │ └── MCPGetChatInfoClient.go │ │ ├── 3.0 mcp_create_source │ │ │ ├── MCPCreateSourceClient.exe │ │ │ └── MCPCreateSourceClient.go │ │ ├── 3.1 mcp_get_source │ │ │ ├── MCPGetSourceClient.exe │ │ │ └── MCPGetSourceClient.go │ │ ├── 3.2 mcp_list_sources │ │ │ ├── MCPListSourcesClient.exe │ │ │ └── MCPListSourcesClient.go │ │ ├── 3.3 mcp_edit_source │ │ │ ├── MCPEditSourceClient.exe │ │ │ └── MCPEditSourceClient.go │ │ ├── 3.4 mcp_delete_source │ │ │ ├── MCPDeleteSourceClient.exe │ │ │ └── MCPDeleteSourceClient.go │ │ ├── 4.0 mcp_list_groups │ │ │ ├── MCPListGroupsClient.exe │ │ │ └── MCPListGroupsClient.go │ │ ├── 4.1 mcp_store_group │ │ │ ├── MCPStoreGroupClient.exe │ │ │ └── MCPStoreGroupClient.go │ │ ├── 4.2 mcp_delete_group │ │ │ ├── MCPDeleteGroupClient.exe │ │ │ └── MCPDeleteGroupClient.go │ │ ├── 5.0 mcp_store_user │ │ │ ├── MCPStoreUserClient.exe │ │ │ └── MCPStoreUserClient.go │ │ ├── 5.1 mcp_edit_user │ │ │ ├── MCPEditUserClient.exe │ │ │ └── MCPEditUserClient.go │ │ ├── 5.2 mcp_delete_user │ │ │ ├── MCPDeleteUserClient.exe │ │ │ └── MCPDeleteUserClient.go │ │ ├── 9.0 mcp_keygen │ │ │ ├── MCPKeygenClient.exe │ │ │ └── MCPKeygenClient.go │ │ └── README.md │ ├── Gradio │ │ ├── Api.py │ │ ├── config.json.example │ │ ├── config.py │ │ ├── favicon.ico │ │ ├── file_tools │ │ │ └── loader_factory.py │ │ ├── language.py │ │ ├── logos │ │ │ ├── fsas.png │ │ │ └── Logo_dark.svg │ │ ├── main.py │ │ ├── mcp_client.py │ │ ├── mcp_servers │ │ │ ├── arxiv │ │ │ │ ├── arxiv-stdio.js │ │ │ │ ├── package.json │ │ │ │ ├── README.md │ │ │ │ ├── requirements.txt │ │ │ │ └── server_config.example.json │ │ │ ├── demo-mcp-server │ │ │ │ ├── demo-tools-sse.js │ │ │ │ ├── demo-tools-stdio.js │ │ │ │ └── tools │ │ │ │ ├── assets.js │ │ │ │ ├── calculator.js │ │ │ │ └── weather.js │ │ │ ├── filesystem │ │ │ │ ├── Dockerfile │ │ │ │ ├── index.ts │ │ │ │ ├── package.json │ │ │ │ ├── README.md │ │ │ │ ├── test │ │ │ │ │ └── new.txt │ │ │ │ └── tsconfig.json │ │ │ ├── moondream │ │ │ │ └── server.py │ │ │ ├── pgpt │ │ │ │ ├── __init__.py │ │ │ │ ├── Api.py │ │ │ │ ├── config.json.example │ │ │ │ ├── config.py │ │ │ │ ├── language.py │ │ │ │ ├── pyproject.toml │ │ │ │ ├── README.md │ │ │ │ └── server.py │ │ │ ├── replicate_flux │ │ │ │ └── server.py │ │ │ └── sqlite │ │ │ ├── .python-version │ │ │ ├── Dockerfile │ │ │ ├── pyproject.toml │ │ │ ├── README.md │ │ │ └── src │ │ │ └── mcp_server_sqlite │ │ │ ├── __init__.py │ │ │ └── server.py │ │ ├── messages │ │ │ ├── __init__.py │ │ │ ├── message_types │ │ │ │ ├── __init__.py │ │ │ │ ├── incrementing_id_message.py │ │ │ │ ├── initialize_message.py │ │ │ │ ├── json_rpc_message.py │ │ │ │ ├── ping_message.py │ │ │ │ ├── prompts_messages.py │ │ │ │ ├── prompts_models.py │ │ │ │ ├── resources_messages.py │ │ │ │ └── tools_messages.py │ │ │ ├── send_call_tool.py │ │ │ ├── send_initialize_message.py │ │ │ ├── send_message.py │ │ │ ├── send_ping.py │ │ │ ├── send_prompts.py │ │ │ ├── send_resources.py │ │ │ └── send_tools_list.py │ │ ├── README.md │ │ ├── requirements.txt │ │ ├── server_config.json │ │ ├── SourceManagement.py │ │ ├── transport │ │ │ ├── __init__.py │ │ │ └── stdio │ │ │ ├── __init__.py │ │ │ ├── stdio_client.py │ │ │ ├── stdio_server_parameters.py │ │ │ └── stdio_server_shutdown.py │ │ ├── tsconfig.json │ │ └── UserManagement.py │ ├── Java │ │ ├── 1.0 mcp_login │ │ │ ├── json-20241224.jar │ │ │ ├── MCPLoginClient.class │ │ │ └── MCPLoginClient.java │ │ ├── 1.1 mcp_logout │ │ │ ├── json-20241224.jar │ │ │ ├── MCPLogoutClient.class │ │ │ └── MCPLogoutClient.java │ │ ├── 2.0 mcp_chat │ │ │ ├── json-20241224.jar │ │ │ ├── MCPChatClient.class │ │ │ └── MCPChatClient.java │ │ ├── 2.1 mcp_continue_chat │ │ │ ├── json-20241224.jar │ │ │ ├── MCPContinueChatClient.class │ │ │ └── MCPContinueChatClient.java │ │ ├── 2.2 mcp_get_chat_info │ │ │ ├── json-20241224.jar │ │ │ ├── MCPGetChatInfoClient.class │ │ │ └── MCPGetChatInfoClient.java │ │ ├── 3.0 mcp_create_source │ │ │ ├── json-20241224.jar │ │ │ ├── MCPCreateSourceClient.class │ │ │ └── MCPCreateSourceClient.java │ │ ├── 3.1 mcp_get_source │ │ │ ├── json-20241224.jar │ │ │ ├── MCPGetSourceClient.class │ │ │ └── MCPGetSourceClient.java │ │ ├── 3.2 mcp_list_sources │ │ │ ├── json-20241224.jar │ │ │ ├── MCPListSourcesClient.class │ │ │ └── MCPListSourcesClient.java │ │ ├── 3.3 mcp_edit_source │ │ │ ├── json-20241224.jar │ │ │ ├── MCPEditSourceClient.class │ │ │ └── MCPEditSourceClient.java │ │ ├── 3.4 mcp_delete_source │ │ │ ├── json-20241224.jar │ │ │ ├── MCPDeleteSourceClient.class │ │ │ └── MCPDeleteSourceClient.java │ │ ├── 4.0 mcp_list_groups │ │ │ ├── json-20241224.jar │ │ │ ├── MCPListGroupsClient.class │ │ │ └── MCPListGroupsClient.java │ │ ├── 4.1 mcp_store_group │ │ │ ├── json-20241224.jar │ │ │ ├── MCPStoreGroupClient.class │ │ │ └── MCPStoreGroupClient.java │ │ ├── 4.2 mcp_delete_group │ │ │ ├── json-20241224.jar │ │ │ ├── MCPDeleteGroupClient.class │ │ │ └── MCPDeleteGroupClient.java │ │ ├── 5.0 mcp_store_user │ │ │ ├── json-20241224.jar │ │ │ ├── MCPStoreUserClient.class │ │ │ └── MCPStoreUserClient.java │ │ ├── 5.1 mcp_edit_user │ │ │ ├── json-20241224.jar │ │ │ ├── MCPEditUserClient.class │ │ │ └── MCPEditUserClient.java │ │ ├── 5.2 mcp_delete_user │ │ │ ├── json-20241224.jar │ │ │ ├── MCPDeleteUserClient.class │ │ │ └── MCPDeleteUserClient.java │ │ └── README.md │ ├── JavaScript │ │ ├── 1.0 mcp_login │ │ │ └── MCPLoginClient.js │ │ ├── 1.1 mcp_logout │ │ │ └── MCPLogoutClient.js │ │ ├── 2.0 mcp_chat │ │ │ └── MCPChatClient.js │ │ ├── 2.1 mcp_continue_chat │ │ │ └── MCPContinueChatClient.js │ │ ├── 2.2 mcp_get_chat_info │ │ │ └── MCPGetChatInfoClient.js │ │ ├── 3.0 mcp_create_source │ │ │ └── MCPCreateSourceClient.js │ │ ├── 3.1 mcp_get_source │ │ │ └── MCPGetSourceClient.js │ │ ├── 3.2 mcp_list_sources │ │ │ └── MCPListSourcesClient.js │ │ ├── 3.3 mcp_edit_source │ │ │ └── MCPEditSourceClient.js │ │ ├── 3.4 mcp_delete_source │ │ │ └── MCPDeleteSourceClient.js │ │ ├── 4.0 mcp_list_groups │ │ │ └── MCPListGroupsClient.js │ │ ├── 4.1 mcp_store_group │ │ │ └── MCPStoreGroupClient.js │ │ ├── 4.2 mcp_delete_group │ │ │ └── MCPDeleteGroupClient.js │ │ ├── 5.0 mcp_store_user │ │ │ └── MCPStoreUserClient.js │ │ ├── 5.1 mcp_edit_user │ │ │ └── MCPEditUserClient.js │ │ ├── 5.2 mcp_delete_user │ │ │ └── MCPDeleteUserClient.js │ │ ├── 9.0 mcp_keygen │ │ │ └── MCPKeygenClient.js │ │ └── README.md │ ├── PHP │ │ ├── 1.0 mcp_login │ │ │ └── MCPLoginClient.php │ │ ├── 1.1 mcp_logout │ │ │ └── MCPLogoutClient.php │ │ ├── 2.0 mcp_chat │ │ │ └── MCPChatClient.php │ │ ├── 2.1 mcp_continue_chat │ │ │ └── MCPContinueChatClient.php │ │ ├── 2.2 mcp_get_chat_info │ │ │ └── MCPGetChatInfoClient.php │ │ ├── 3.0 mcp_create_source │ │ │ └── MCPCreateSourceClient.php │ │ ├── 3.1 mcp_get_source │ │ │ └── MCPGetSourceClient.php │ │ ├── 3.2 mcp_list_sources │ │ │ └── MCPListSourcesClient.php │ │ ├── 3.3 mcp_edit_source │ │ │ └── MCPEditSourceClient.php │ │ ├── 3.4 mcp_delete_source │ │ │ └── MCPDeleteSourceClient.php │ │ ├── 4.0 mcp_list_groups │ │ │ └── MCPListGroupsClient.php │ │ ├── 4.1 mcp_store_group │ │ │ └── MCPStoreGroupClient.php │ │ ├── 4.2 mcp_delete_group │ │ │ └── MCPDeleteGroupClient.php │ │ ├── 5.0 mcp_store_user │ │ │ └── MCPStoreUserClient.php │ │ ├── 5.1 mcp_edit_user │ │ │ └── MCPEditUserClient.php │ │ ├── 5.2 mcp_delete_user │ │ │ └── MCPDeleteUserClient.php │ │ ├── 9.0 mcp_keygen │ │ │ └── MCPKeygenClient.php │ │ └── README.md │ └── Python │ ├── __init__.py │ ├── 1.0 mcp_login │ │ └── MCPLoginClient.py │ ├── 1.1 mcp_logout │ │ └── MCPLogoutClient.py │ ├── 2.0 mcp_chat │ │ └── MCPChatClient.py │ ├── 2.1 mcp_continue_chat │ │ └── MCPContinueChatClient.py │ ├── 2.2 mcp_get_chat_info │ │ └── MCPGetChatInfoClient.py │ ├── 2.3 mcp_delete_all_chats │ │ └── MCPDeleteAllChatsClient.py │ ├── 2.4 mcp_delete_chat │ │ └── MCPDeleteChatClient.py │ ├── 3.0 mcp_create_source │ │ └── MCPCreateSourceClient.py │ ├── 3.1 mcp_get_source │ │ └── MCPGetSourceClient.py │ ├── 3.2 mcp_list_sources │ │ └── MCPListSourcesClient.py │ ├── 3.3 mcp_edit_source │ │ └── MCPEditSourceClient.py │ ├── 3.4 mcp_delete_source │ │ └── MCPDeleteSourceClient.py │ ├── 4.0 mcp_list_groups │ │ └── MCPListGroupsClient.py │ ├── 4.1 mcp_store_group │ │ └── MCPStoreGroupClient.py │ ├── 4.2 mcp_delete_group │ │ └── MCPDeleteGroupClient.py │ ├── 5.0 mcp_store_user │ │ └── MCPStoreUserClient.py │ ├── 5.1 mcp_edit_user │ │ └── MCPEditUserClient.py │ ├── 5.2 mcp_delete_user │ │ └── MCPDeleteUserClient.py │ ├── 9.0 mcp_keygen │ │ └── MCPKeygenClient.py │ ├── Gradio │ │ ├── __init__.py │ │ └── server_config.json │ └── README.md ├── examples │ ├── create_users_from_csv │ │ ├── config.json.example │ │ ├── config.py │ │ ├── create_users_from_csv.py │ │ └── language.py │ ├── dynamic_sources │ │ └── rss_reader │ │ ├── Api.py │ │ ├── config.json.example │ │ ├── config.py │ │ ├── demo_dynamic_sources.py │ │ └── rss_parser.py │ ├── example_users_to_add_no_tz.csv │ └── sftp_upload_with_id │ ├── Api.py │ ├── config_ftp.json.example │ ├── config.py │ ├── demo_upload.py │ ├── language.py │ └── requirements.txt ├── images │ ├── alternative mcp client.png │ ├── favicon │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon.ico │ │ └── site.webmanifest │ ├── mcp-general-architecture.png │ ├── privateGPT-MCP.png │ └── privateGPT.png ├── InstallMPCServer.sh ├── jest.config.js ├── LICENSE ├── package.json ├── pgpt.env.json.example ├── README.md ├── security │ ├── generate_decrypted_password.js │ └── generate_encrypted_password.js ├── src │ ├── helper.js │ ├── index.js │ ├── logger.js │ ├── pgpt-messages.js │ ├── public │ │ ├── index.html │ │ └── pgpt-mcp-logo.png │ ├── services │ │ └── pgpt-service.ts │ └── types │ └── api.ts ├── start_chatbot_agent.ps1 ├── start_chatbot_agent.sh ├── start_iot_agent.ps1 ├── start_iot_agent.sh ├── start_openai_compatible_api_agent.ps1 ├── start_openai_compatible_api_agent.sh ├── tsconfig.json ├── ver │ ├── index_np.js │ └── index_proxy_np.js └── WORKLOG.md ``` # Files -------------------------------------------------------------------------------- /clients/C# .Net/3.0 mcp_create_source/obj/mcp_create_source.csproj.nuget.dgspec.json: -------------------------------------------------------------------------------- ```json 1 | { 2 | "format": 1, 3 | "restore": { 4 | "C:\\Users\\uwuertz\\AI\\mcp-client\\mcp_create_source\\mcp_create_source.csproj": {} 5 | }, 6 | "projects": { 7 | "C:\\Users\\uwuertz\\AI\\mcp-client\\mcp_create_source\\mcp_create_source.csproj": { 8 | "version": "1.0.0", 9 | "restore": { 10 | "projectUniqueName": "C:\\Users\\uwuertz\\AI\\mcp-client\\mcp_create_source\\mcp_create_source.csproj", 11 | "projectName": "mcp_create_source", 12 | "projectPath": "C:\\Users\\uwuertz\\AI\\mcp-client\\mcp_create_source\\mcp_create_source.csproj", 13 | "packagesPath": "C:\\Users\\uwuertz\\.nuget\\packages\\", 14 | "outputPath": "C:\\Users\\uwuertz\\AI\\mcp-client\\mcp_create_source\\obj\\", 15 | "projectStyle": "PackageReference", 16 | "configFilePaths": [ 17 | "C:\\Users\\uwuertz\\AppData\\Roaming\\NuGet\\NuGet.Config" 18 | ], 19 | "originalTargetFrameworks": [ 20 | "net9.0" 21 | ], 22 | "sources": { 23 | "https://api.nuget.org/v3/index.json": {} 24 | }, 25 | "frameworks": { 26 | "net9.0": { 27 | "targetAlias": "net9.0", 28 | "projectReferences": {} 29 | } 30 | }, 31 | "warningProperties": { 32 | "warnAsError": [ 33 | "NU1605" 34 | ] 35 | }, 36 | "restoreAuditProperties": { 37 | "enableAudit": "true", 38 | "auditLevel": "low", 39 | "auditMode": "direct" 40 | }, 41 | "SdkAnalysisLevel": "9.0.100" 42 | }, 43 | "frameworks": { 44 | "net9.0": { 45 | "targetAlias": "net9.0", 46 | "dependencies": { 47 | "Newtonsoft.Json": { 48 | "target": "Package", 49 | "version": "[13.0.3, )" 50 | } 51 | }, 52 | "imports": [ 53 | "net461", 54 | "net462", 55 | "net47", 56 | "net471", 57 | "net472", 58 | "net48", 59 | "net481" 60 | ], 61 | "assetTargetFallback": true, 62 | "warn": true, 63 | "frameworkReferences": { 64 | "Microsoft.NETCore.App": { 65 | "privateAssets": "all" 66 | } 67 | }, 68 | "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.101/PortableRuntimeIdentifierGraph.json" 69 | } 70 | } 71 | } 72 | } 73 | } ``` -------------------------------------------------------------------------------- /clients/C# .Net/3.4 mcp_delete_source/obj/mcp_delete_source.csproj.nuget.dgspec.json: -------------------------------------------------------------------------------- ```json 1 | { 2 | "format": 1, 3 | "restore": { 4 | "C:\\Users\\uwuertz\\AI\\mcp-client\\mcp_delete_source\\mcp_delete_source.csproj": {} 5 | }, 6 | "projects": { 7 | "C:\\Users\\uwuertz\\AI\\mcp-client\\mcp_delete_source\\mcp_delete_source.csproj": { 8 | "version": "1.0.0", 9 | "restore": { 10 | "projectUniqueName": "C:\\Users\\uwuertz\\AI\\mcp-client\\mcp_delete_source\\mcp_delete_source.csproj", 11 | "projectName": "mcp_delete_source", 12 | "projectPath": "C:\\Users\\uwuertz\\AI\\mcp-client\\mcp_delete_source\\mcp_delete_source.csproj", 13 | "packagesPath": "C:\\Users\\uwuertz\\.nuget\\packages\\", 14 | "outputPath": "C:\\Users\\uwuertz\\AI\\mcp-client\\mcp_delete_source\\obj\\", 15 | "projectStyle": "PackageReference", 16 | "configFilePaths": [ 17 | "C:\\Users\\uwuertz\\AppData\\Roaming\\NuGet\\NuGet.Config" 18 | ], 19 | "originalTargetFrameworks": [ 20 | "net9.0" 21 | ], 22 | "sources": { 23 | "https://api.nuget.org/v3/index.json": {} 24 | }, 25 | "frameworks": { 26 | "net9.0": { 27 | "targetAlias": "net9.0", 28 | "projectReferences": {} 29 | } 30 | }, 31 | "warningProperties": { 32 | "warnAsError": [ 33 | "NU1605" 34 | ] 35 | }, 36 | "restoreAuditProperties": { 37 | "enableAudit": "true", 38 | "auditLevel": "low", 39 | "auditMode": "direct" 40 | }, 41 | "SdkAnalysisLevel": "9.0.100" 42 | }, 43 | "frameworks": { 44 | "net9.0": { 45 | "targetAlias": "net9.0", 46 | "dependencies": { 47 | "Newtonsoft.Json": { 48 | "target": "Package", 49 | "version": "[13.0.3, )" 50 | } 51 | }, 52 | "imports": [ 53 | "net461", 54 | "net462", 55 | "net47", 56 | "net471", 57 | "net472", 58 | "net48", 59 | "net481" 60 | ], 61 | "assetTargetFallback": true, 62 | "warn": true, 63 | "frameworkReferences": { 64 | "Microsoft.NETCore.App": { 65 | "privateAssets": "all" 66 | } 67 | }, 68 | "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.101/PortableRuntimeIdentifierGraph.json" 69 | } 70 | } 71 | } 72 | } 73 | } ``` -------------------------------------------------------------------------------- /agents/OpenAI_Compatible_API_Agent/Python/client_tests/openai_test_client_tools.py: -------------------------------------------------------------------------------- ```python 1 | import argparse 2 | import json 3 | from enum import Enum 4 | from typing import Union 5 | 6 | from pydantic import BaseModel 7 | 8 | import openai 9 | from openai import OpenAI 10 | 11 | 12 | class Table(str, Enum): 13 | orders = "orders" 14 | customers = "customers" 15 | products = "products" 16 | 17 | 18 | class Column(str, Enum): 19 | id = "id" 20 | status = "status" 21 | expected_delivery_date = "expected_delivery_date" 22 | delivered_at = "delivered_at" 23 | shipped_at = "shipped_at" 24 | ordered_at = "ordered_at" 25 | canceled_at = "canceled_at" 26 | 27 | 28 | class Operator(str, Enum): 29 | eq = "=" 30 | gt = ">" 31 | lt = "<" 32 | le = "<=" 33 | ge = ">=" 34 | ne = "!=" 35 | 36 | 37 | class OrderBy(str, Enum): 38 | asc = "asc" 39 | desc = "desc" 40 | 41 | 42 | class DynamicValue(BaseModel): 43 | column_name: str 44 | 45 | 46 | class Condition(BaseModel): 47 | column: str 48 | operator: Operator 49 | value: Union[str, int, DynamicValue] 50 | 51 | 52 | class Query(BaseModel): 53 | table_name: Table 54 | columns: list[Column] 55 | conditions: list[Condition] 56 | order_by: OrderBy 57 | 58 | if __name__ == "__main__": 59 | parser = argparse.ArgumentParser(description="Provide an API key to connect to OpenAI-compatible API.") 60 | parser.add_argument("--api_key", required=True, help="API key for login") 61 | args = parser.parse_args() 62 | 63 | stream = True 64 | client = OpenAI( 65 | base_url="http://localhost:8001/", 66 | api_key=args.api_key 67 | ) 68 | completion = client.beta.chat.completions.parse( 69 | model="pgpt", 70 | messages=[ 71 | { 72 | "role": "system", 73 | "content": "You are a helpful assistant. The current date is August 6, 2025. You help users query for the data they are looking for by calling the query function.", 74 | }, 75 | { 76 | "role": "user", 77 | "content": "look up all my orders in may of last year that were fulfilled but not delivered on time", 78 | }, 79 | ], 80 | tools=[ 81 | openai.pydantic_function_tool(Query), 82 | ], 83 | extra_body={ 84 | "groups": [], 85 | "newSession": True 86 | } 87 | ) 88 | 89 | try: 90 | results = json.loads(completion.choices[0].message.content) 91 | print(json.dumps(results, indent=2)) 92 | except: 93 | print(completion.choices[0].message.content) ``` -------------------------------------------------------------------------------- /clients/C# .Net/1.1 mcp_logout/Program.cs: -------------------------------------------------------------------------------- ```csharp 1 | using System; 2 | using System.Net.Sockets; 3 | using System.Text; 4 | using Newtonsoft.Json; 5 | 6 | class Program 7 | { 8 | static void Main(string[] args) 9 | { 10 | string serverIp = null; 11 | int serverPort = 0; 12 | string token = null; 13 | 14 | // Argumente parsen 15 | for (int i = 0; i < args.Length; i++) 16 | { 17 | switch (args[i]) 18 | { 19 | case "--server-ip": 20 | serverIp = args[++i]; 21 | break; 22 | case "--server-port": 23 | serverPort = int.Parse(args[++i]); 24 | break; 25 | case "--token": 26 | token = args[++i]; 27 | break; 28 | } 29 | } 30 | 31 | // Überprüfen, ob alle Argumente angegeben wurden 32 | if (string.IsNullOrEmpty(serverIp) || serverPort == 0 || string.IsNullOrEmpty(token)) 33 | { 34 | Console.WriteLine("❌ ERROR: Missing required parameters."); 35 | return; 36 | } 37 | 38 | Console.WriteLine("🔒 Sending logout request..."); 39 | string response = SendLogoutRequest(serverIp, serverPort, token); 40 | Console.WriteLine("Response from server:"); 41 | Console.WriteLine(response); 42 | } 43 | 44 | static string SendLogoutRequest(string serverIp, int serverPort, string token) 45 | { 46 | // Erstelle das JSON-Payload 47 | var payload = new 48 | { 49 | command = "logout", 50 | token = token 51 | }; 52 | 53 | string payloadJson = JsonConvert.SerializeObject(payload); 54 | 55 | try 56 | { 57 | using (var client = new TcpClient(serverIp, serverPort)) 58 | using (var stream = client.GetStream()) 59 | { 60 | // Sende das Payload 61 | byte[] data = Encoding.UTF8.GetBytes(payloadJson); 62 | stream.Write(data, 0, data.Length); 63 | 64 | // Antwort empfangen 65 | byte[] buffer = new byte[4096]; 66 | int bytesRead = stream.Read(buffer, 0, buffer.Length); 67 | 68 | string response = Encoding.UTF8.GetString(buffer, 0, bytesRead); 69 | return response; 70 | } 71 | } 72 | catch (Exception ex) 73 | { 74 | return $"Error: {ex.Message}"; 75 | } 76 | } 77 | } 78 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/Code Archiv/mcp_logout.cs: -------------------------------------------------------------------------------- ```csharp 1 | using System; 2 | using System.Net.Sockets; 3 | using System.Text; 4 | using Newtonsoft.Json; 5 | 6 | class Program 7 | { 8 | static void Main(string[] args) 9 | { 10 | string serverIp = null; 11 | int serverPort = 0; 12 | string token = null; 13 | 14 | // Argumente parsen 15 | for (int i = 0; i < args.Length; i++) 16 | { 17 | switch (args[i]) 18 | { 19 | case "--server-ip": 20 | serverIp = args[++i]; 21 | break; 22 | case "--server-port": 23 | serverPort = int.Parse(args[++i]); 24 | break; 25 | case "--token": 26 | token = args[++i]; 27 | break; 28 | } 29 | } 30 | 31 | // Überprüfen, ob alle Argumente angegeben wurden 32 | if (string.IsNullOrEmpty(serverIp) || serverPort == 0 || string.IsNullOrEmpty(token)) 33 | { 34 | Console.WriteLine("❌ ERROR: Missing required parameters."); 35 | return; 36 | } 37 | 38 | Console.WriteLine("🔒 Sending logout request..."); 39 | string response = SendLogoutRequest(serverIp, serverPort, token); 40 | Console.WriteLine("Response from server:"); 41 | Console.WriteLine(response); 42 | } 43 | 44 | static string SendLogoutRequest(string serverIp, int serverPort, string token) 45 | { 46 | // Erstelle das JSON-Payload 47 | var payload = new 48 | { 49 | command = "logout", 50 | token = token 51 | }; 52 | 53 | string payloadJson = JsonConvert.SerializeObject(payload); 54 | 55 | try 56 | { 57 | using (var client = new TcpClient(serverIp, serverPort)) 58 | using (var stream = client.GetStream()) 59 | { 60 | // Sende das Payload 61 | byte[] data = Encoding.UTF8.GetBytes(payloadJson); 62 | stream.Write(data, 0, data.Length); 63 | 64 | // Antwort empfangen 65 | byte[] buffer = new byte[4096]; 66 | int bytesRead = stream.Read(buffer, 0, buffer.Length); 67 | 68 | string response = Encoding.UTF8.GetString(buffer, 0, bytesRead); 69 | return response; 70 | } 71 | } 72 | catch (Exception ex) 73 | { 74 | return $"Error: {ex.Message}"; 75 | } 76 | } 77 | } 78 | ``` -------------------------------------------------------------------------------- /clients/Go/2.2 mcp_get_chat_info/MCPGetChatInfoClient.go: -------------------------------------------------------------------------------- ```go 1 | package main 2 | 3 | import ( 4 | "bytes" 5 | "encoding/json" 6 | "errors" 7 | "flag" 8 | "fmt" 9 | "io" 10 | "net" 11 | "os" 12 | ) 13 | 14 | type GenericPayload struct { 15 | Command string `json:"command"` 16 | Token string `json:"token"` 17 | Arguments map[string]interface{} `json:"arguments"` 18 | } 19 | 20 | func sendRequest(serverIP string, serverPort int, payload GenericPayload) (map[string]interface{}, error) { 21 | // Convert the payload to JSON 22 | payloadJSON, err := json.Marshal(payload) 23 | if err != nil { 24 | return nil, err 25 | } 26 | 27 | // Create a connection to the server 28 | conn, err := net.Dial("tcp", fmt.Sprintf("%s:%d", serverIP, serverPort)) 29 | if err != nil { 30 | return nil, err 31 | } 32 | defer conn.Close() 33 | 34 | // Send the request 35 | _, err = conn.Write(payloadJSON) 36 | if err != nil { 37 | return nil, err 38 | } 39 | 40 | // Receive the response 41 | var responseBuffer bytes.Buffer 42 | buf := make([]byte, 4096) 43 | for { 44 | n, err := conn.Read(buf) 45 | if err != nil { 46 | if errors.Is(err, io.EOF) { 47 | break 48 | } 49 | return nil, err 50 | } 51 | responseBuffer.Write(buf[:n]) 52 | if n < 4096 { 53 | break 54 | } 55 | } 56 | 57 | // Decode the response 58 | var response map[string]interface{} 59 | err = json.Unmarshal(responseBuffer.Bytes(), &response) 60 | if err != nil { 61 | return nil, err 62 | } 63 | 64 | return response, nil 65 | } 66 | 67 | func main() { 68 | serverIP := flag.String("server-ip", "", "IP address of the MCP server") 69 | serverPort := flag.Int("server-port", 0, "Port number of the MCP server") 70 | token := flag.String("token", "", "Authentication token") 71 | chatID := flag.String("chat-id", "", "ID of the conversation") 72 | 73 | flag.Parse() 74 | 75 | if *serverIP == "" || *serverPort == 0 || *token == "" || *chatID == "" { 76 | fmt.Println("❌ ERROR: All flags are required.") 77 | flag.Usage() 78 | os.Exit(1) 79 | } 80 | 81 | // Prepare the payload 82 | payload := GenericPayload{ 83 | Command: "get_chat_info", 84 | Token: *token, 85 | Arguments: map[string]interface{}{ 86 | "chatId": *chatID, 87 | }, 88 | } 89 | 90 | fmt.Println("📤 Sending request...") 91 | response, err := sendRequest(*serverIP, *serverPort, payload) 92 | if err != nil { 93 | fmt.Printf("❌ ERROR: %v\n", err) 94 | os.Exit(1) 95 | } 96 | 97 | responseJSON, err := json.MarshalIndent(response, "", " ") 98 | if err != nil { 99 | fmt.Printf("❌ ERROR: %v\n", err) 100 | os.Exit(1) 101 | } 102 | 103 | fmt.Println("✔️ Response:") 104 | fmt.Println(string(responseJSON)) 105 | } 106 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/4.0 mcp_list_groups/obj/mcp_list_groups.csproj.nuget.dgspec.json: -------------------------------------------------------------------------------- ```json 1 | { 2 | "format": 1, 3 | "restore": { 4 | "C:\\Users\\uwuertz\\AI\\mcp-client\\C# .Net\\mcp_list_groups\\mcp_list_groups.csproj": {} 5 | }, 6 | "projects": { 7 | "C:\\Users\\uwuertz\\AI\\mcp-client\\C# .Net\\mcp_list_groups\\mcp_list_groups.csproj": { 8 | "version": "1.0.0", 9 | "restore": { 10 | "projectUniqueName": "C:\\Users\\uwuertz\\AI\\mcp-client\\C# .Net\\mcp_list_groups\\mcp_list_groups.csproj", 11 | "projectName": "mcp_list_groups", 12 | "projectPath": "C:\\Users\\uwuertz\\AI\\mcp-client\\C# .Net\\mcp_list_groups\\mcp_list_groups.csproj", 13 | "packagesPath": "C:\\Users\\uwuertz\\.nuget\\packages\\", 14 | "outputPath": "C:\\Users\\uwuertz\\AI\\mcp-client\\C# .Net\\mcp_list_groups\\obj\\", 15 | "projectStyle": "PackageReference", 16 | "configFilePaths": [ 17 | "C:\\Users\\uwuertz\\AppData\\Roaming\\NuGet\\NuGet.Config" 18 | ], 19 | "originalTargetFrameworks": [ 20 | "net9.0" 21 | ], 22 | "sources": { 23 | "https://api.nuget.org/v3/index.json": {} 24 | }, 25 | "frameworks": { 26 | "net9.0": { 27 | "targetAlias": "net9.0", 28 | "projectReferences": {} 29 | } 30 | }, 31 | "warningProperties": { 32 | "warnAsError": [ 33 | "NU1605" 34 | ] 35 | }, 36 | "restoreAuditProperties": { 37 | "enableAudit": "true", 38 | "auditLevel": "low", 39 | "auditMode": "direct" 40 | }, 41 | "SdkAnalysisLevel": "9.0.100" 42 | }, 43 | "frameworks": { 44 | "net9.0": { 45 | "targetAlias": "net9.0", 46 | "dependencies": { 47 | "Newtonsoft.Json": { 48 | "target": "Package", 49 | "version": "[13.0.3, )" 50 | } 51 | }, 52 | "imports": [ 53 | "net461", 54 | "net462", 55 | "net47", 56 | "net471", 57 | "net472", 58 | "net48", 59 | "net481" 60 | ], 61 | "assetTargetFallback": true, 62 | "warn": true, 63 | "frameworkReferences": { 64 | "Microsoft.NETCore.App": { 65 | "privateAssets": "all" 66 | } 67 | }, 68 | "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.101/PortableRuntimeIdentifierGraph.json" 69 | } 70 | } 71 | } 72 | } 73 | } ``` -------------------------------------------------------------------------------- /clients/C# .Net/3.3 mcp_edit_source/obj/mcp_edit_source.csproj.nuget.dgspec.json: -------------------------------------------------------------------------------- ```json 1 | { 2 | "format": 1, 3 | "restore": { 4 | "C:\\Users\\uwuertz\\AI\\mcp-client\\C# .Net\\3.3 mcp_edit_source\\mcp_edit_source.csproj": {} 5 | }, 6 | "projects": { 7 | "C:\\Users\\uwuertz\\AI\\mcp-client\\C# .Net\\3.3 mcp_edit_source\\mcp_edit_source.csproj": { 8 | "version": "1.0.0", 9 | "restore": { 10 | "projectUniqueName": "C:\\Users\\uwuertz\\AI\\mcp-client\\C# .Net\\3.3 mcp_edit_source\\mcp_edit_source.csproj", 11 | "projectName": "mcp_edit_source", 12 | "projectPath": "C:\\Users\\uwuertz\\AI\\mcp-client\\C# .Net\\3.3 mcp_edit_source\\mcp_edit_source.csproj", 13 | "packagesPath": "C:\\Users\\uwuertz\\.nuget\\packages\\", 14 | "outputPath": "C:\\Users\\uwuertz\\AI\\mcp-client\\C# .Net\\3.3 mcp_edit_source\\obj\\", 15 | "projectStyle": "PackageReference", 16 | "configFilePaths": [ 17 | "C:\\Users\\uwuertz\\AppData\\Roaming\\NuGet\\NuGet.Config" 18 | ], 19 | "originalTargetFrameworks": [ 20 | "net9.0" 21 | ], 22 | "sources": { 23 | "https://api.nuget.org/v3/index.json": {} 24 | }, 25 | "frameworks": { 26 | "net9.0": { 27 | "targetAlias": "net9.0", 28 | "projectReferences": {} 29 | } 30 | }, 31 | "warningProperties": { 32 | "warnAsError": [ 33 | "NU1605" 34 | ] 35 | }, 36 | "restoreAuditProperties": { 37 | "enableAudit": "true", 38 | "auditLevel": "low", 39 | "auditMode": "direct" 40 | }, 41 | "SdkAnalysisLevel": "9.0.100" 42 | }, 43 | "frameworks": { 44 | "net9.0": { 45 | "targetAlias": "net9.0", 46 | "dependencies": { 47 | "Newtonsoft.Json": { 48 | "target": "Package", 49 | "version": "[13.0.3, )" 50 | } 51 | }, 52 | "imports": [ 53 | "net461", 54 | "net462", 55 | "net47", 56 | "net471", 57 | "net472", 58 | "net48", 59 | "net481" 60 | ], 61 | "assetTargetFallback": true, 62 | "warn": true, 63 | "frameworkReferences": { 64 | "Microsoft.NETCore.App": { 65 | "privateAssets": "all" 66 | } 67 | }, 68 | "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.101/PortableRuntimeIdentifierGraph.json" 69 | } 70 | } 71 | } 72 | } 73 | } ``` -------------------------------------------------------------------------------- /security/generate_decrypted_password.js: -------------------------------------------------------------------------------- ```javascript 1 | import fs from 'fs'; 2 | import crypto from 'crypto'; 3 | import readline from 'readline'; 4 | 5 | // Function to load the private key 6 | function loadPrivateKey(path) { 7 | if (!path) { 8 | throw new Error( 9 | `No private key path provided. Please specify the path to the RSA-private key as an argument. 10 | Example usage: node security/generate_decrypted_password.js ~/.ssh/id_rsa` 11 | ); 12 | } 13 | try { 14 | return fs.readFileSync(path, 'utf8'); 15 | } catch (err) { 16 | throw new Error(`Error reading private key at "${path}": ${err.message}`); 17 | } 18 | } 19 | 20 | // Function for decryption (uses RSA-OAEP) 21 | function decryptWithPrivateKey(encryptedData, privateKeyPem) { 22 | const ciphertext = Buffer.from(encryptedData, 'base64'); 23 | const keyObj = crypto.createPrivateKey(privateKeyPem); 24 | 25 | const tryOaep = (hash) => 26 | crypto.privateDecrypt( 27 | { 28 | key: keyObj, 29 | padding: crypto.constants.RSA_PKCS1_OAEP_PADDING, 30 | oaepHash: hash, // try sha256 first, sha1 fallback if legacy 31 | }, 32 | ciphertext 33 | ); 34 | 35 | try { 36 | return tryOaep('sha256').toString('utf8'); 37 | } catch (e256) { 38 | try { 39 | return tryOaep('sha1').toString('utf8'); 40 | } catch (e1) { 41 | throw new Error( 42 | `Decryption failed with RSA-OAEP (tried SHA-256 and SHA-1). ` + 43 | `Ensure the ciphertext was created with RSA-OAEP using the same hash. ` + 44 | `Errors: [${e256.message}] / [${e1.message}]` 45 | ); 46 | } 47 | } 48 | } 49 | 50 | // Function to prompt for encrypted password input 51 | function askEncryptedPassword(question) { 52 | const rl = readline.createInterface({ 53 | input: process.stdin, 54 | output: process.stdout, 55 | terminal: true, 56 | }); 57 | return new Promise((resolve) => { 58 | rl.question(question, (answer) => { 59 | rl.close(); 60 | resolve(answer.trim()); 61 | }); 62 | }); 63 | } 64 | 65 | // Main function 66 | async function main() { 67 | const privateKeyPath = process.argv[2]; // private key path as CLI arg 68 | 69 | try { 70 | const privateKey = loadPrivateKey(privateKeyPath); 71 | const encryptedPassword = await askEncryptedPassword('Please enter the encrypted password (base64): '); 72 | const decryptedPassword = decryptWithPrivateKey(encryptedPassword, privateKey); 73 | console.log('Decrypted Password:', decryptedPassword); 74 | } catch (err) { 75 | console.error('Error:', err.message); 76 | process.exitCode = 1; 77 | } 78 | } 79 | 80 | main(); 81 | ``` -------------------------------------------------------------------------------- /agents/OpenAI_Compatible_API_Agent/Python/client_tests/openai_test_client_structured.py: -------------------------------------------------------------------------------- ```python 1 | import argparse 2 | from openai import OpenAI 3 | import json 4 | 5 | if __name__ == "__main__": 6 | parser = argparse.ArgumentParser(description="Provide an API key to connect to OpenAI-compatible API.") 7 | parser.add_argument("--api_key", required=True, help="API key for login") 8 | args = parser.parse_args() 9 | 10 | stream = False 11 | 12 | 13 | # Initialize OpenAI client that points to the local LM Studio server 14 | client = OpenAI( 15 | base_url="http://localhost:8001/", 16 | api_key=args.api_key 17 | ) 18 | 19 | # Define the conversation with the AI 20 | messages = [ 21 | {"role": "system", "content": "You are a helpful AI assistant."}, 22 | {"role": "user", "content": "Create 5-10 fictional characters"} 23 | ] 24 | 25 | # Define the expected response structure 26 | character_schema = { 27 | "type": "json_schema", 28 | "json_schema": { 29 | "name": "characters", 30 | "schema": { 31 | "type": "object", 32 | "properties": { 33 | "characters": { 34 | "type": "array", 35 | "items": { 36 | "type": "object", 37 | "properties": { 38 | "name": {"type": "string"}, 39 | "occupation": {"type": "string"}, 40 | "personality": {"type": "string"}, 41 | "background": {"type": "string"} 42 | }, 43 | "required": ["name", "occupation", "personality", "background"] 44 | }, 45 | "minItems": 1, 46 | } 47 | }, 48 | "required": ["characters"] 49 | }, 50 | } 51 | } 52 | 53 | # Get response from AI 54 | response = client.chat.completions.create( 55 | model="pgpt", 56 | messages=messages, 57 | stream=stream, 58 | response_format=character_schema, 59 | extra_body={ 60 | "groups": [], 61 | "newSession": True 62 | } 63 | ) 64 | 65 | # Parse and display the results 66 | #print(response.choices[0].message.content) 67 | 68 | if stream: 69 | for chunk in response: 70 | print(chunk.choices[0].delta.content or "") 71 | 72 | else: 73 | results = json.loads(response.choices[0].message.content) 74 | print(json.dumps(results, indent=2)) ``` -------------------------------------------------------------------------------- /clients/Gradio/mcp_servers/moondream/server.py: -------------------------------------------------------------------------------- ```python 1 | import gzip 2 | import io 3 | import os 4 | import sys 5 | 6 | import requests 7 | from mcp.server import FastMCP 8 | 9 | sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') 10 | sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace') 11 | 12 | mcp = FastMCP("Caption or analyze a given image based on a prompt") 13 | md_model = None 14 | 15 | @mcp.tool() 16 | def process_image(prompt:str, file_path:str) -> str: 17 | """Describe an image based on a prompt. 18 | 19 | Args: 20 | prompt: Text prompt describing how to analyze the image 21 | file_path: Filepath to the image to analyze 22 | """ 23 | 24 | import moondream as md 25 | from PIL import Image 26 | global md_model 27 | 28 | # todo check if model exists, download on demand. make model selectable. 29 | if md_model is None: 30 | # md_model = md.vl(model="./clients/Gradio/models/moondream-0_5b-int8.mf") 31 | 32 | # URL of the zip file 33 | zip_url = 'https://huggingface.co/vikhyatk/moondream2/resolve/9dddae84d54db4ac56fe37817aeaeb502ed083e2/moondream-2b-int8.mf.gz?download=true' 34 | 35 | # Folder to extract into 36 | extract_to = './models' 37 | 38 | # Target file to check 39 | target_file = os.path.join(extract_to, 'moondream-2b-int8.mf') 40 | 41 | # Only proceed if the target file doesn't exist 42 | if not os.path.exists(target_file): 43 | print("moondream-2b-int8.mf not found. Downloading and extracting...") 44 | # Make sure the extraction folder exists 45 | os.makedirs(extract_to, exist_ok=True) 46 | 47 | # Download the zip 48 | response = requests.get(zip_url) 49 | response.raise_for_status() 50 | 51 | # Extract it 52 | # Decompress and write the file 53 | with gzip.open(io.BytesIO(response.content), 'rb') as f_in: 54 | with open(target_file, 'wb') as f_out: 55 | f_out.write(f_in.read()) 56 | 57 | print(f"Done! Extracted to: {extract_to}") 58 | 59 | md_model = md.vl(model="./models/moondream-2b-int8.mf") 60 | 61 | # Load and process image 62 | image = Image.open(file_path) 63 | encoded_image = md_model.encode_image(image) 64 | 65 | # Generate caption 66 | # caption = model.caption(encoded_image)["caption"] 67 | # print("Caption:", caption) 68 | 69 | # Ask questions 70 | result = md_model.query(encoded_image, prompt)["answer"] 71 | print("Answer:", result) 72 | return result 73 | 74 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/4.0 mcp_list_groups/Program.cs: -------------------------------------------------------------------------------- ```csharp 1 | using System; 2 | using System.Net.Sockets; 3 | using System.Text; 4 | using Newtonsoft.Json; 5 | 6 | namespace MCPListGroupsClient 7 | { 8 | class Program 9 | { 10 | static void Main(string[] args) 11 | { 12 | if (args.Length < 3) 13 | { 14 | Console.WriteLine("Usage: --server-ip <IP> --server-port <PORT> --token <TOKEN>"); 15 | return; 16 | } 17 | 18 | string serverIp = GetArgument(args, "--server-ip"); 19 | int serverPort = int.Parse(GetArgument(args, "--server-port")); 20 | string token = GetArgument(args, "--token"); 21 | 22 | Console.WriteLine("📄 Abrufen der Gruppen..."); 23 | 24 | var payload = new 25 | { 26 | command = "list_groups", 27 | token = token 28 | }; 29 | 30 | string response = SendRequest(serverIp, serverPort, payload); 31 | 32 | Console.WriteLine("✔️ Antwort:"); 33 | Console.WriteLine(response); 34 | } 35 | 36 | static string GetArgument(string[] args, string key) 37 | { 38 | int index = Array.IndexOf(args, key); 39 | return index >= 0 && index < args.Length - 1 ? args[index + 1] : null; 40 | } 41 | 42 | static string SendRequest(string serverIp, int serverPort, object payload) 43 | { 44 | string payloadJson = JsonConvert.SerializeObject(payload); 45 | 46 | try 47 | { 48 | using (TcpClient client = new TcpClient(serverIp, serverPort)) 49 | { 50 | NetworkStream stream = client.GetStream(); 51 | 52 | // Senden der Nutzdaten 53 | byte[] data = Encoding.UTF8.GetBytes(payloadJson); 54 | stream.Write(data, 0, data.Length); 55 | 56 | // Empfang der Antwort 57 | byte[] buffer = new byte[4096]; 58 | int bytesRead; 59 | StringBuilder response = new StringBuilder(); 60 | 61 | do 62 | { 63 | bytesRead = stream.Read(buffer, 0, buffer.Length); 64 | response.Append(Encoding.UTF8.GetString(buffer, 0, bytesRead)); 65 | } while (bytesRead == buffer.Length); 66 | 67 | return response.ToString(); 68 | } 69 | } 70 | catch (Exception e) 71 | { 72 | return $"Error: {e.Message}"; 73 | } 74 | } 75 | } 76 | } 77 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/Code Archiv/mcp_list_groups.cs: -------------------------------------------------------------------------------- ```csharp 1 | using System; 2 | using System.Net.Sockets; 3 | using System.Text; 4 | using Newtonsoft.Json; 5 | 6 | namespace MCPListGroupsClient 7 | { 8 | class Program 9 | { 10 | static void Main(string[] args) 11 | { 12 | if (args.Length < 3) 13 | { 14 | Console.WriteLine("Usage: --server-ip <IP> --server-port <PORT> --token <TOKEN>"); 15 | return; 16 | } 17 | 18 | string serverIp = GetArgument(args, "--server-ip"); 19 | int serverPort = int.Parse(GetArgument(args, "--server-port")); 20 | string token = GetArgument(args, "--token"); 21 | 22 | Console.WriteLine("📄 Abrufen der Gruppen..."); 23 | 24 | var payload = new 25 | { 26 | command = "list_groups", 27 | token = token 28 | }; 29 | 30 | string response = SendRequest(serverIp, serverPort, payload); 31 | 32 | Console.WriteLine("✔️ Antwort:"); 33 | Console.WriteLine(response); 34 | } 35 | 36 | static string GetArgument(string[] args, string key) 37 | { 38 | int index = Array.IndexOf(args, key); 39 | return index >= 0 && index < args.Length - 1 ? args[index + 1] : null; 40 | } 41 | 42 | static string SendRequest(string serverIp, int serverPort, object payload) 43 | { 44 | string payloadJson = JsonConvert.SerializeObject(payload); 45 | 46 | try 47 | { 48 | using (TcpClient client = new TcpClient(serverIp, serverPort)) 49 | { 50 | NetworkStream stream = client.GetStream(); 51 | 52 | // Senden der Nutzdaten 53 | byte[] data = Encoding.UTF8.GetBytes(payloadJson); 54 | stream.Write(data, 0, data.Length); 55 | 56 | // Empfang der Antwort 57 | byte[] buffer = new byte[4096]; 58 | int bytesRead; 59 | StringBuilder response = new StringBuilder(); 60 | 61 | do 62 | { 63 | bytesRead = stream.Read(buffer, 0, buffer.Length); 64 | response.Append(Encoding.UTF8.GetString(buffer, 0, bytesRead)); 65 | } while (bytesRead == buffer.Length); 66 | 67 | return response.ToString(); 68 | } 69 | } 70 | catch (Exception e) 71 | { 72 | return $"Error: {e.Message}"; 73 | } 74 | } 75 | } 76 | } 77 | ``` -------------------------------------------------------------------------------- /clients/Java/1.1 mcp_logout/MCPLogoutClient.java: -------------------------------------------------------------------------------- ```java 1 | import org.json.JSONObject; 2 | 3 | import java.io.IOException; 4 | import java.io.InputStream; 5 | import java.io.OutputStream; 6 | import java.net.Socket; 7 | import java.nio.charset.StandardCharsets; 8 | 9 | public class MCPLogoutClient { 10 | 11 | public static void main(String[] args) { 12 | String serverIp = null; 13 | int serverPort = 0; 14 | String token = null; 15 | 16 | // Argumente parsen 17 | for (int i = 0; i < args.length; i++) { 18 | switch (args[i]) { 19 | case "--server-ip": 20 | serverIp = args[++i]; 21 | break; 22 | case "--server-port": 23 | serverPort = Integer.parseInt(args[++i]); 24 | break; 25 | case "--token": 26 | token = args[++i]; 27 | break; 28 | } 29 | } 30 | 31 | // Überprüfen, ob alle Argumente angegeben wurden 32 | if (serverIp == null || serverPort == 0 || token == null) { 33 | System.out.println("❌ ERROR: Missing required parameters."); 34 | return; 35 | } 36 | 37 | System.out.println("🔒 Sending logout request..."); 38 | String response = sendLogoutRequest(serverIp, serverPort, token); 39 | System.out.println("Response from server:"); 40 | System.out.println(response); 41 | } 42 | 43 | private static String sendLogoutRequest(String serverIp, int serverPort, String token) { 44 | // JSON-Payload erstellen 45 | JSONObject payload = new JSONObject(); 46 | payload.put("command", "logout"); 47 | payload.put("token", token); 48 | 49 | // In String umwandeln 50 | String payloadJson = payload.toString(); 51 | 52 | try (Socket client = new Socket(serverIp, serverPort)) { 53 | // OutputStream holen und Daten senden 54 | OutputStream out = client.getOutputStream(); 55 | byte[] data = payloadJson.getBytes(StandardCharsets.UTF_8); 56 | out.write(data); 57 | out.flush(); 58 | 59 | // Antwort empfangen 60 | InputStream in = client.getInputStream(); 61 | byte[] buffer = new byte[4096]; 62 | int bytesRead = in.read(buffer); 63 | if (bytesRead == -1) { 64 | return "❌ ERROR: No response from server."; 65 | } 66 | 67 | return new String(buffer, 0, bytesRead, StandardCharsets.UTF_8); 68 | 69 | } catch (IOException ex) { 70 | return "Error: " + ex.getMessage(); 71 | } 72 | } 73 | } 74 | ``` -------------------------------------------------------------------------------- /clients/Go/3.0 mcp_create_source/MCPCreateSourceClient.go: -------------------------------------------------------------------------------- ```go 1 | package main 2 | 3 | import ( 4 | "bytes" 5 | "encoding/json" 6 | "errors" 7 | "flag" 8 | "fmt" 9 | "io" 10 | "net" 11 | "os" 12 | ) 13 | 14 | type CreateSourcePayload struct { 15 | Command string `json:"command"` 16 | Token string `json:"token"` 17 | Arguments map[string]interface{} `json:"arguments"` 18 | } 19 | 20 | func sendCreateSourceRequest(serverIP string, serverPort int, token, name, content string, groups []string) (string, error) { 21 | // Prepare the request payload 22 | payload := CreateSourcePayload{ 23 | Command: "create_source", 24 | Token: token, 25 | Arguments: map[string]interface{}{ 26 | "name": name, 27 | "content": content, 28 | "groups": groups, 29 | }, 30 | } 31 | 32 | // Convert the payload to JSON 33 | payloadJSON, err := json.Marshal(payload) 34 | if err != nil { 35 | return "", err 36 | } 37 | 38 | // Create a connection to the server 39 | conn, err := net.Dial("tcp", fmt.Sprintf("%s:%d", serverIP, serverPort)) 40 | if err != nil { 41 | return "", err 42 | } 43 | defer conn.Close() 44 | 45 | // Send the request 46 | _, err = conn.Write(payloadJSON) 47 | if err != nil { 48 | return "", err 49 | } 50 | 51 | // Receive the response 52 | var responseBuffer bytes.Buffer 53 | buf := make([]byte, 4096) 54 | for { 55 | n, err := conn.Read(buf) 56 | if err != nil { 57 | if errors.Is(err, io.EOF) { 58 | break 59 | } 60 | return "", err 61 | } 62 | responseBuffer.Write(buf[:n]) 63 | if n < 4096 { 64 | break 65 | } 66 | } 67 | 68 | return responseBuffer.String(), nil 69 | } 70 | 71 | func main() { 72 | serverIP := flag.String("server-ip", "", "IP address of the MCP server") 73 | serverPort := flag.Int("server-port", 0, "Port number of the MCP server") 74 | token := flag.String("token", "", "Authentication token") 75 | name := flag.String("name", "", "Name of the new source") 76 | content := flag.String("content", "", "Content to be formatted as markdown") 77 | groups := flag.String("groups", "", "Comma-separated list of groups to assign the source to") 78 | 79 | flag.Parse() 80 | 81 | if *serverIP == "" || *serverPort == 0 || *token == "" || *name == "" || *content == "" { 82 | fmt.Println("❌ ERROR: All flags except 'groups' are required.") 83 | flag.Usage() 84 | os.Exit(1) 85 | } 86 | 87 | // Convert groups to a slice 88 | groupList := []string{} 89 | if *groups != "" { 90 | groupList = append(groupList, *groups) 91 | } 92 | 93 | // Send the request to create the source 94 | fmt.Println("📤 Sending request to create source...") 95 | response, err := sendCreateSourceRequest(*serverIP, *serverPort, *token, *name, *content, groupList) 96 | if err != nil { 97 | fmt.Printf("❌ ERROR: %v\n", err) 98 | os.Exit(1) 99 | } 100 | 101 | fmt.Println("✔️ Response from server:") 102 | fmt.Println(response) 103 | } 104 | ``` -------------------------------------------------------------------------------- /clients/Python/1.1 mcp_logout/MCPLogoutClient.py: -------------------------------------------------------------------------------- ```python 1 | import argparse 2 | import socket 3 | import ssl 4 | import json 5 | 6 | def send_logout_request(server_ip, server_port, token, use_ssl=True, accept_self_signed=False): 7 | """ 8 | Sends a logout request to the MCP server. 9 | """ 10 | payload = { 11 | "command": "logout", 12 | "token": token 13 | } 14 | 15 | payload_json = json.dumps(payload) 16 | 17 | raw_socket = None 18 | client_socket = None 19 | 20 | try: 21 | raw_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 22 | raw_socket.settimeout(10) 23 | 24 | if use_ssl: 25 | context = ssl.create_default_context() 26 | if accept_self_signed: 27 | context.check_hostname = False 28 | context.verify_mode = ssl.CERT_NONE 29 | client_socket = context.wrap_socket(raw_socket, server_hostname=server_ip) 30 | else: 31 | client_socket = raw_socket 32 | 33 | client_socket.connect((server_ip, server_port)) 34 | client_socket.sendall(payload_json.encode('utf-8')) 35 | 36 | response = b"" 37 | while True: 38 | part = client_socket.recv(4096) 39 | if not part: 40 | break 41 | response += part 42 | 43 | return response.decode('utf-8') 44 | except ssl.SSLError: 45 | return "Error: The server requires TLS encryption. Please enable SSL/TLS." 46 | except Exception as e: 47 | return f"Error: {e}" 48 | 49 | finally: 50 | if client_socket is not None: 51 | try: 52 | client_socket.shutdown(socket.SHUT_RDWR) 53 | except: 54 | pass 55 | client_socket.close() 56 | 57 | if __name__ == "__main__": 58 | parser = argparse.ArgumentParser(description="Send a logout request to the MCP server.") 59 | parser.add_argument("--server-ip", required=True, help="IP address of the MCP server") 60 | parser.add_argument("--server-port", type=int, required=True, help="Port number of the MCP server") 61 | parser.add_argument("--token", required=True, help="Authentication token") 62 | parser.add_argument("--use-ssl", action="store_true", help="Connect using SSL/TLS") 63 | parser.add_argument("--accept-self-signed", action="store_true", help="Accept self-signed certificates (disable certificate verification)") 64 | 65 | args = parser.parse_args() 66 | 67 | response = send_logout_request( 68 | args.server_ip, 69 | args.server_port, 70 | args.token, 71 | use_ssl=args.use_ssl, 72 | accept_self_signed=args.accept_self_signed 73 | ) 74 | print("Response from server:", response) 75 | ``` -------------------------------------------------------------------------------- /agents/MCP-Client/Python/system_prompt_generator.py: -------------------------------------------------------------------------------- ```python 1 | import json 2 | 3 | 4 | class SystemPromptGenerator: 5 | """ 6 | A class for generating system prompts dynamically based on tools JSON and user inputs. 7 | """ 8 | 9 | def __init__(self): 10 | """ 11 | Initialize the SystemPromptGenerator with a default system prompt template. 12 | """ 13 | self.template = """ 14 | In this environment you have access to a set of tools you can use to answer the user's question. 15 | {{ FORMATTING INSTRUCTIONS }} 16 | String and scalar parameters should be specified as is, while lists and objects should use JSON format. Note that spaces for string values are not stripped. The output is not expected to be valid XML and is parsed with regular expressions. 17 | Here are the functions available in JSONSchema format: 18 | {{ TOOL DEFINITIONS IN JSON SCHEMA }} 19 | {{ USER SYSTEM PROMPT }} 20 | {{ TOOL CONFIGURATION }} 21 | """ 22 | self.default_user_system_prompt = "You are an intelligent assistant capable of using tools to solve user queries effectively." 23 | self.default_tool_config = "No additional configuration is required." 24 | 25 | def generate_prompt( 26 | self, tools: dict, user_system_prompt: str = None, tool_config: str = None 27 | ) -> str: 28 | """ 29 | Generate a system prompt based on the provided tools JSON, user prompt, and tool configuration. 30 | 31 | Args: 32 | tools (dict): The tools JSON containing definitions of the available tools. 33 | user_system_prompt (str): A user-provided description or instruction for the assistant (optional). 34 | tool_config (str): Additional tool configuration information (optional). 35 | 36 | Returns: 37 | str: The dynamically generated system prompt. 38 | """ 39 | 40 | # set the user system prompt 41 | user_system_prompt = user_system_prompt or self.default_user_system_prompt 42 | 43 | # set the tools config 44 | tool_config = tool_config or self.default_tool_config 45 | 46 | # get the tools schema 47 | tools_json_schema = json.dumps(tools, indent=2) 48 | 49 | # perform replacements 50 | prompt = self.template.replace( 51 | "{{ TOOL DEFINITIONS IN JSON SCHEMA }}", tools_json_schema 52 | ) 53 | prompt = prompt.replace("{{ FORMATTING INSTRUCTIONS }}", "") 54 | prompt = prompt.replace("{{ USER SYSTEM PROMPT }}", user_system_prompt) 55 | prompt = prompt.replace("{{ TOOL CONFIGURATION }}", tool_config) 56 | 57 | # return the prompt 58 | return prompt 59 | ``` -------------------------------------------------------------------------------- /clients/Gradio/mcp_servers/demo-mcp-server/demo-tools-stdio.js: -------------------------------------------------------------------------------- ```javascript 1 | import { createHTTPServer } from '@trpc/server/adapters/standalone'; 2 | import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js"; 3 | import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; 4 | import { z } from "zod"; 5 | 6 | //Import functions from tools folder 7 | import {calculator} from "./tools/calculator.js" 8 | import {weather} from "./tools/weather.js" 9 | import {bitcoin, gold} from "./tools/assets.js" 10 | 11 | //Basic config 12 | const name = "demo-tools-stdio" 13 | const version = "0.0.1" 14 | 15 | const config = { 16 | name: name, 17 | version: version, 18 | capabilities: { 19 | logging: {}, 20 | }, 21 | } 22 | 23 | // Create an MCP server for Stdio 24 | const server = new McpServer(config); 25 | 26 | 27 | // Add any tool and its paramters / function by calling add_tool 28 | await add_tool("calculator", 29 | "Perform basic calculations. Add, subtract, multiply, divide. Invoke this tool every time you need to perform a calculation.", 30 | {operation: z.enum(["add", "subtract", "multiply", "divide"]), a: z.string(), b: z.string()}, 31 | calculator) 32 | 33 | await add_tool("get_weather", 34 | "Fetch the current weather for a specific location. Invoke this tool every time you need to give information on the weather.", 35 | {location: z.string()}, 36 | weather) 37 | 38 | await add_tool("get_gold_price", 39 | "Get the current price of Gold. Invoke this every time the user asks for the price of Gold", 40 | {name: z.string()}, 41 | gold) 42 | 43 | await add_tool("get_bitcoin_price", 44 | "Get the current price of Bitcoin. Invoke this every time the user asks for the price of Bitcoin", 45 | {name: z.string()}, 46 | bitcoin) 47 | 48 | async function add_tool(name, description, schema, func){ 49 | // Add tool will add the tool to both, local and remote access systems 50 | server.tool(name, description, schema, 51 | async (args) => { 52 | return await func(args) 53 | }); 54 | } 55 | 56 | //Connection 57 | 58 | // Connect stdio 59 | const transport = new StdioServerTransport(); 60 | await server.connect(transport); 61 | 62 | //SSE 63 | /*const app = express(); 64 | 65 | app.get("/sse", async (req, res) => { 66 | const transport = new SSEServerTransport("/messages", res); 67 | await server.connect(transport); 68 | }); 69 | 70 | app.post("/messages", async (req, res) => { 71 | // Note: to support multiple simultaneous connections, these messages will 72 | // need to be routed to a specific matching transport. (This logic isn't 73 | // implemented here, for simplicity.) 74 | await transport.handlePostMessage(req, res); 75 | }); 76 | 77 | app.listen(3001);*/ ``` -------------------------------------------------------------------------------- /clients/C# .Net/1.0 mcp_login/Program.cs: -------------------------------------------------------------------------------- ```csharp 1 | // Using CommandLineParser for cleaner argument parsing 2 | using System; 3 | using Newtonsoft.Json; 4 | 5 | class Program 6 | { 7 | static void Main(string[] args) 8 | { 9 | string serverIp = null; 10 | int serverPort = 0; 11 | string email = null; 12 | string password = null; 13 | 14 | // Loop through args and parse them manually (or use a parser library like CommandLineParser) 15 | for (int i = 0; i < args.Length; i++) 16 | { 17 | switch (args[i]) 18 | { 19 | case "--server-ip": 20 | serverIp = args[++i]; 21 | break; 22 | case "--server-port": 23 | serverPort = int.Parse(args[++i]); 24 | break; 25 | case "--email": 26 | email = args[++i]; 27 | break; 28 | case "--password": 29 | password = args[++i]; 30 | break; 31 | } 32 | } 33 | 34 | if (string.IsNullOrEmpty(serverIp) || serverPort == 0 || string.IsNullOrEmpty(email) || string.IsNullOrEmpty(password)) 35 | { 36 | Console.WriteLine("❌ ERROR: Missing required parameters."); 37 | return; 38 | } 39 | 40 | Console.WriteLine("🔐 Logging in..."); 41 | var payload = new 42 | { 43 | command = "login", 44 | arguments = new 45 | { 46 | email, 47 | password 48 | } 49 | }; 50 | 51 | var response = SendRequest(serverIp, serverPort, payload); 52 | Console.WriteLine("✅ Server Response:"); 53 | Console.WriteLine(JsonConvert.SerializeObject(response, Formatting.Indented)); 54 | } 55 | 56 | static dynamic SendRequest(string serverIp, int serverPort, object payload) 57 | { 58 | using (var client = new System.Net.Sockets.TcpClient()) 59 | { 60 | client.Connect(serverIp, serverPort); 61 | using (var stream = client.GetStream()) 62 | { 63 | var payloadJson = JsonConvert.SerializeObject(payload); 64 | var data = System.Text.Encoding.UTF8.GetBytes(payloadJson); 65 | 66 | // Send payload 67 | stream.Write(data, 0, data.Length); 68 | 69 | // Receive response 70 | var buffer = new byte[4096]; 71 | var bytesRead = stream.Read(buffer, 0, buffer.Length); 72 | var responseJson = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead); 73 | 74 | return JsonConvert.DeserializeObject(responseJson); 75 | } 76 | } 77 | } 78 | } 79 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/Code Archiv/mcp_login.cs: -------------------------------------------------------------------------------- ```csharp 1 | // Using CommandLineParser for cleaner argument parsing 2 | using System; 3 | using Newtonsoft.Json; 4 | 5 | class Program 6 | { 7 | static void Main(string[] args) 8 | { 9 | string serverIp = null; 10 | int serverPort = 0; 11 | string email = null; 12 | string password = null; 13 | 14 | // Loop through args and parse them manually (or use a parser library like CommandLineParser) 15 | for (int i = 0; i < args.Length; i++) 16 | { 17 | switch (args[i]) 18 | { 19 | case "--server-ip": 20 | serverIp = args[++i]; 21 | break; 22 | case "--server-port": 23 | serverPort = int.Parse(args[++i]); 24 | break; 25 | case "--email": 26 | email = args[++i]; 27 | break; 28 | case "--password": 29 | password = args[++i]; 30 | break; 31 | } 32 | } 33 | 34 | if (string.IsNullOrEmpty(serverIp) || serverPort == 0 || string.IsNullOrEmpty(email) || string.IsNullOrEmpty(password)) 35 | { 36 | Console.WriteLine("❌ ERROR: Missing required parameters."); 37 | return; 38 | } 39 | 40 | Console.WriteLine("🔐 Logging in..."); 41 | var payload = new 42 | { 43 | command = "login", 44 | arguments = new 45 | { 46 | email, 47 | password 48 | } 49 | }; 50 | 51 | var response = SendRequest(serverIp, serverPort, payload); 52 | Console.WriteLine("✅ Server Response:"); 53 | Console.WriteLine(JsonConvert.SerializeObject(response, Formatting.Indented)); 54 | } 55 | 56 | static dynamic SendRequest(string serverIp, int serverPort, object payload) 57 | { 58 | using (var client = new System.Net.Sockets.TcpClient()) 59 | { 60 | client.Connect(serverIp, serverPort); 61 | using (var stream = client.GetStream()) 62 | { 63 | var payloadJson = JsonConvert.SerializeObject(payload); 64 | var data = System.Text.Encoding.UTF8.GetBytes(payloadJson); 65 | 66 | // Send payload 67 | stream.Write(data, 0, data.Length); 68 | 69 | // Receive response 70 | var buffer = new byte[4096]; 71 | var bytesRead = stream.Read(buffer, 0, buffer.Length); 72 | var responseJson = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead); 73 | 74 | return JsonConvert.DeserializeObject(responseJson); 75 | } 76 | } 77 | } 78 | } 79 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/5.2 mcp_delete_user/Program.cs: -------------------------------------------------------------------------------- ```csharp 1 | using System; 2 | using System.Net.Sockets; 3 | using System.Text; 4 | using Newtonsoft.Json; 5 | 6 | namespace MCPDeleteUserClient 7 | { 8 | class Program 9 | { 10 | static void Main(string[] args) 11 | { 12 | if (args.Length < 8) 13 | { 14 | Console.WriteLine("Usage: --server-ip <IP> --server-port <PORT> --email <EMAIL> --token <TOKEN>"); 15 | return; 16 | } 17 | 18 | string serverIp = GetArgument(args, "--server-ip"); 19 | int serverPort = int.Parse(GetArgument(args, "--server-port")); 20 | string email = GetArgument(args, "--email"); 21 | string token = GetArgument(args, "--token"); 22 | 23 | var payload = new 24 | { 25 | command = "delete_user", 26 | token = token, 27 | arguments = new 28 | { 29 | email = email 30 | } 31 | }; 32 | 33 | Console.WriteLine("📤 Sending delete user request..."); 34 | string response = SendRequest(serverIp, serverPort, payload); 35 | Console.WriteLine("✔️ Response from server:"); 36 | Console.WriteLine(response); 37 | } 38 | 39 | static string GetArgument(string[] args, string key) 40 | { 41 | int index = Array.IndexOf(args, key); 42 | return index >= 0 && index < args.Length - 1 ? args[index + 1] : null; 43 | } 44 | 45 | static string SendRequest(string serverIp, int serverPort, object payload) 46 | { 47 | string payloadJson = JsonConvert.SerializeObject(payload); 48 | 49 | try 50 | { 51 | using (TcpClient client = new TcpClient(serverIp, serverPort)) 52 | { 53 | NetworkStream stream = client.GetStream(); 54 | 55 | // Send payload 56 | byte[] data = Encoding.UTF8.GetBytes(payloadJson); 57 | stream.Write(data, 0, data.Length); 58 | 59 | // Receive response 60 | byte[] buffer = new byte[4096]; 61 | int bytesRead; 62 | StringBuilder response = new StringBuilder(); 63 | 64 | do 65 | { 66 | bytesRead = stream.Read(buffer, 0, buffer.Length); 67 | response.Append(Encoding.UTF8.GetString(buffer, 0, bytesRead)); 68 | } while (bytesRead == buffer.Length); 69 | 70 | return response.ToString(); 71 | } 72 | } 73 | catch (Exception e) 74 | { 75 | return $"Error: {e.Message}"; 76 | } 77 | } 78 | } 79 | } 80 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/Code Archiv/mcp_delete_user.cs: -------------------------------------------------------------------------------- ```csharp 1 | using System; 2 | using System.Net.Sockets; 3 | using System.Text; 4 | using Newtonsoft.Json; 5 | 6 | namespace MCPDeleteUserClient 7 | { 8 | class Program 9 | { 10 | static void Main(string[] args) 11 | { 12 | if (args.Length < 8) 13 | { 14 | Console.WriteLine("Usage: --server-ip <IP> --server-port <PORT> --email <EMAIL> --token <TOKEN>"); 15 | return; 16 | } 17 | 18 | string serverIp = GetArgument(args, "--server-ip"); 19 | int serverPort = int.Parse(GetArgument(args, "--server-port")); 20 | string email = GetArgument(args, "--email"); 21 | string token = GetArgument(args, "--token"); 22 | 23 | var payload = new 24 | { 25 | command = "delete_user", 26 | token = token, 27 | arguments = new 28 | { 29 | email = email 30 | } 31 | }; 32 | 33 | Console.WriteLine("📤 Sending delete user request..."); 34 | string response = SendRequest(serverIp, serverPort, payload); 35 | Console.WriteLine("✔️ Response from server:"); 36 | Console.WriteLine(response); 37 | } 38 | 39 | static string GetArgument(string[] args, string key) 40 | { 41 | int index = Array.IndexOf(args, key); 42 | return index >= 0 && index < args.Length - 1 ? args[index + 1] : null; 43 | } 44 | 45 | static string SendRequest(string serverIp, int serverPort, object payload) 46 | { 47 | string payloadJson = JsonConvert.SerializeObject(payload); 48 | 49 | try 50 | { 51 | using (TcpClient client = new TcpClient(serverIp, serverPort)) 52 | { 53 | NetworkStream stream = client.GetStream(); 54 | 55 | // Send payload 56 | byte[] data = Encoding.UTF8.GetBytes(payloadJson); 57 | stream.Write(data, 0, data.Length); 58 | 59 | // Receive response 60 | byte[] buffer = new byte[4096]; 61 | int bytesRead; 62 | StringBuilder response = new StringBuilder(); 63 | 64 | do 65 | { 66 | bytesRead = stream.Read(buffer, 0, buffer.Length); 67 | response.Append(Encoding.UTF8.GetString(buffer, 0, bytesRead)); 68 | } while (bytesRead == buffer.Length); 69 | 70 | return response.ToString(); 71 | } 72 | } 73 | catch (Exception e) 74 | { 75 | return $"Error: {e.Message}"; 76 | } 77 | } 78 | } 79 | } 80 | ``` -------------------------------------------------------------------------------- /clients/Python/2.3 mcp_delete_all_chats/MCPDeleteAllChatsClient.py: -------------------------------------------------------------------------------- ```python 1 | import socket 2 | import ssl 3 | import json 4 | import argparse 5 | 6 | def send_request(server_ip, server_port, payload, use_ssl=True, accept_self_signed=False): 7 | """ 8 | Sends a generic request to the server. 9 | """ 10 | payload_json = json.dumps(payload) 11 | 12 | raw_socket = None 13 | client_socket = None 14 | 15 | try: 16 | raw_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 17 | raw_socket.settimeout(10) 18 | 19 | if use_ssl: 20 | context = ssl.create_default_context() 21 | if accept_self_signed: 22 | context.check_hostname = False 23 | context.verify_mode = ssl.CERT_NONE 24 | client_socket = context.wrap_socket(raw_socket, server_hostname=server_ip) 25 | else: 26 | client_socket = raw_socket 27 | 28 | client_socket.connect((server_ip, server_port)) 29 | client_socket.sendall(payload_json.encode('utf-8')) 30 | 31 | response = b"" 32 | while True: 33 | part = client_socket.recv(4096) 34 | if not part: 35 | break 36 | response += part 37 | 38 | return json.loads(response.decode('utf-8')) 39 | except ssl.SSLError: 40 | return {"status": "error", "message": "Connection failed: Server and/or client may require TLS encryption. Please enable SSL/TLS."} 41 | except Exception as e: 42 | return {"status": "error", "message": str(e)} 43 | 44 | finally: 45 | if client_socket is not None: 46 | try: 47 | client_socket.shutdown(socket.SHUT_RDWR) 48 | except: 49 | pass 50 | client_socket.close() 51 | 52 | if __name__ == "__main__": 53 | parser = argparse.ArgumentParser(description="Deletes all chat history from the server.") 54 | parser.add_argument("--server-ip", required=True, help="IP address of the MCP server") 55 | parser.add_argument("--server-port", required=True, type=int, help="Port number of the MCP server") 56 | parser.add_argument("--token", required=True, help="Authentication token") 57 | parser.add_argument("--use-ssl", action="store_true", help="Connect using SSL/TLS") 58 | parser.add_argument("--accept-self-signed", action="store_true", help="Accept self-signed certificates (disable certificate verification)") 59 | 60 | args = parser.parse_args() 61 | 62 | payload = { 63 | "command": "delete_all_chats", 64 | "token": args.token 65 | } 66 | 67 | print("📤 Sending request to delete all chats...") 68 | response = send_request(args.server_ip, args.server_port, payload, use_ssl=args.use_ssl, accept_self_signed=args.accept_self_signed) 69 | print("✔️ Response:", json.dumps(response, indent=2)) 70 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/3.4 mcp_delete_source/Program.cs: -------------------------------------------------------------------------------- ```csharp 1 | using System; 2 | using System.Net.Sockets; 3 | using System.Text; 4 | using Newtonsoft.Json; 5 | 6 | namespace MCPDeleteSourceClient 7 | { 8 | class Program 9 | { 10 | static void Main(string[] args) 11 | { 12 | if (args.Length < 4) 13 | { 14 | Console.WriteLine("Usage: --server-ip <IP> --server-port <PORT> --token <TOKEN> --source-id <SOURCE_ID>"); 15 | return; 16 | } 17 | 18 | string serverIp = GetArgument(args, "--server-ip"); 19 | int serverPort = int.Parse(GetArgument(args, "--server-port")); 20 | string token = GetArgument(args, "--token"); 21 | string sourceId = GetArgument(args, "--source-id"); 22 | 23 | Console.WriteLine("📤 Sending request to delete source..."); 24 | 25 | var payload = new 26 | { 27 | command = "delete_source", 28 | token = token, 29 | arguments = new 30 | { 31 | sourceId = sourceId 32 | } 33 | }; 34 | 35 | string response = SendRequest(serverIp, serverPort, payload); 36 | 37 | Console.WriteLine("✔️ Response from server:"); 38 | Console.WriteLine(response); 39 | } 40 | 41 | static string GetArgument(string[] args, string key) 42 | { 43 | int index = Array.IndexOf(args, key); 44 | return index >= 0 && index < args.Length - 1 ? args[index + 1] : null; 45 | } 46 | 47 | static string SendRequest(string serverIp, int serverPort, object payload) 48 | { 49 | string payloadJson = JsonConvert.SerializeObject(payload); 50 | 51 | try 52 | { 53 | using (TcpClient client = new TcpClient(serverIp, serverPort)) 54 | { 55 | NetworkStream stream = client.GetStream(); 56 | 57 | // Send payload 58 | byte[] data = Encoding.UTF8.GetBytes(payloadJson); 59 | stream.Write(data, 0, data.Length); 60 | 61 | // Receive response 62 | byte[] buffer = new byte[4096]; 63 | int bytesRead; 64 | StringBuilder response = new StringBuilder(); 65 | 66 | do 67 | { 68 | bytesRead = stream.Read(buffer, 0, buffer.Length); 69 | response.Append(Encoding.UTF8.GetString(buffer, 0, bytesRead)); 70 | } while (bytesRead == buffer.Length); 71 | 72 | return response.ToString(); 73 | } 74 | } 75 | catch (Exception e) 76 | { 77 | return $"Error: {e.Message}"; 78 | } 79 | } 80 | } 81 | } 82 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/Code Archiv/mcp_delete_source.cs: -------------------------------------------------------------------------------- ```csharp 1 | using System; 2 | using System.Net.Sockets; 3 | using System.Text; 4 | using Newtonsoft.Json; 5 | 6 | namespace MCPDeleteSourceClient 7 | { 8 | class Program 9 | { 10 | static void Main(string[] args) 11 | { 12 | if (args.Length < 4) 13 | { 14 | Console.WriteLine("Usage: --server-ip <IP> --server-port <PORT> --token <TOKEN> --source-id <SOURCE_ID>"); 15 | return; 16 | } 17 | 18 | string serverIp = GetArgument(args, "--server-ip"); 19 | int serverPort = int.Parse(GetArgument(args, "--server-port")); 20 | string token = GetArgument(args, "--token"); 21 | string sourceId = GetArgument(args, "--source-id"); 22 | 23 | Console.WriteLine("📤 Sending request to delete source..."); 24 | 25 | var payload = new 26 | { 27 | command = "delete_source", 28 | token = token, 29 | arguments = new 30 | { 31 | sourceId = sourceId 32 | } 33 | }; 34 | 35 | string response = SendRequest(serverIp, serverPort, payload); 36 | 37 | Console.WriteLine("✔️ Response from server:"); 38 | Console.WriteLine(response); 39 | } 40 | 41 | static string GetArgument(string[] args, string key) 42 | { 43 | int index = Array.IndexOf(args, key); 44 | return index >= 0 && index < args.Length - 1 ? args[index + 1] : null; 45 | } 46 | 47 | static string SendRequest(string serverIp, int serverPort, object payload) 48 | { 49 | string payloadJson = JsonConvert.SerializeObject(payload); 50 | 51 | try 52 | { 53 | using (TcpClient client = new TcpClient(serverIp, serverPort)) 54 | { 55 | NetworkStream stream = client.GetStream(); 56 | 57 | // Send payload 58 | byte[] data = Encoding.UTF8.GetBytes(payloadJson); 59 | stream.Write(data, 0, data.Length); 60 | 61 | // Receive response 62 | byte[] buffer = new byte[4096]; 63 | int bytesRead; 64 | StringBuilder response = new StringBuilder(); 65 | 66 | do 67 | { 68 | bytesRead = stream.Read(buffer, 0, buffer.Length); 69 | response.Append(Encoding.UTF8.GetString(buffer, 0, bytesRead)); 70 | } while (bytesRead == buffer.Length); 71 | 72 | return response.ToString(); 73 | } 74 | } 75 | catch (Exception e) 76 | { 77 | return $"Error: {e.Message}"; 78 | } 79 | } 80 | } 81 | } 82 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/3.1 mcp_get_source/Program.cs: -------------------------------------------------------------------------------- ```csharp 1 | using System; 2 | using System.Net.Sockets; 3 | using System.Text; 4 | using Newtonsoft.Json; 5 | 6 | namespace MCPGetSourceClient 7 | { 8 | class Program 9 | { 10 | static void Main(string[] args) 11 | { 12 | if (args.Length < 4) 13 | { 14 | Console.WriteLine("Usage: --server-ip <IP> --server-port <PORT> --token <TOKEN> --source-id <SOURCE_ID>"); 15 | return; 16 | } 17 | 18 | string serverIp = GetArgument(args, "--server-ip"); 19 | int serverPort = int.Parse(GetArgument(args, "--server-port")); 20 | string token = GetArgument(args, "--token"); 21 | string sourceId = GetArgument(args, "--source-id"); 22 | 23 | Console.WriteLine("📤 Sending request to get source information..."); 24 | 25 | var payload = new 26 | { 27 | command = "get_source", 28 | token = token, 29 | arguments = new 30 | { 31 | sourceId = sourceId 32 | } 33 | }; 34 | 35 | string response = SendRequest(serverIp, serverPort, payload); 36 | 37 | Console.WriteLine("✔️ Response from server:"); 38 | Console.WriteLine(response); 39 | } 40 | 41 | static string GetArgument(string[] args, string key) 42 | { 43 | int index = Array.IndexOf(args, key); 44 | return index >= 0 && index < args.Length - 1 ? args[index + 1] : null; 45 | } 46 | 47 | static string SendRequest(string serverIp, int serverPort, object payload) 48 | { 49 | string payloadJson = JsonConvert.SerializeObject(payload); 50 | 51 | try 52 | { 53 | using (TcpClient client = new TcpClient(serverIp, serverPort)) 54 | { 55 | NetworkStream stream = client.GetStream(); 56 | 57 | // Send payload 58 | byte[] data = Encoding.UTF8.GetBytes(payloadJson); 59 | stream.Write(data, 0, data.Length); 60 | 61 | // Receive response 62 | byte[] buffer = new byte[4096]; 63 | int bytesRead; 64 | StringBuilder response = new StringBuilder(); 65 | 66 | do 67 | { 68 | bytesRead = stream.Read(buffer, 0, buffer.Length); 69 | response.Append(Encoding.UTF8.GetString(buffer, 0, bytesRead)); 70 | } while (bytesRead == buffer.Length); 71 | 72 | return response.ToString(); 73 | } 74 | } 75 | catch (Exception e) 76 | { 77 | return $"Error: {e.Message}"; 78 | } 79 | } 80 | } 81 | } 82 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/4.2 mcp_delete_group/Program.cs: -------------------------------------------------------------------------------- ```csharp 1 | using System; 2 | using System.Net.Sockets; 3 | using System.Text; 4 | using Newtonsoft.Json; 5 | 6 | namespace MCPDeleteGroupClient 7 | { 8 | class Program 9 | { 10 | static void Main(string[] args) 11 | { 12 | if (args.Length < 8) 13 | { 14 | Console.WriteLine("Usage: --server-ip <IP> --server-port <PORT> --token <TOKEN> --group-name <GROUP_NAME>"); 15 | return; 16 | } 17 | 18 | string serverIp = GetArgument(args, "--server-ip"); 19 | int serverPort = int.Parse(GetArgument(args, "--server-port")); 20 | string token = GetArgument(args, "--token"); 21 | string groupName = GetArgument(args, "--group-name"); 22 | 23 | Console.WriteLine("📤 Sending request to delete group..."); 24 | 25 | var payload = new 26 | { 27 | command = "delete_group", 28 | token = token, 29 | arguments = new 30 | { 31 | groupName = groupName 32 | } 33 | }; 34 | 35 | string response = SendRequest(serverIp, serverPort, payload); 36 | 37 | Console.WriteLine("✔️ Response from server:"); 38 | Console.WriteLine(response); 39 | } 40 | 41 | static string GetArgument(string[] args, string key) 42 | { 43 | int index = Array.IndexOf(args, key); 44 | return index >= 0 && index < args.Length - 1 ? args[index + 1] : null; 45 | } 46 | 47 | static string SendRequest(string serverIp, int serverPort, object payload) 48 | { 49 | string payloadJson = JsonConvert.SerializeObject(payload); 50 | 51 | try 52 | { 53 | using (TcpClient client = new TcpClient(serverIp, serverPort)) 54 | { 55 | NetworkStream stream = client.GetStream(); 56 | 57 | // Send payload 58 | byte[] data = Encoding.UTF8.GetBytes(payloadJson); 59 | stream.Write(data, 0, data.Length); 60 | 61 | // Receive response 62 | byte[] buffer = new byte[4096]; 63 | int bytesRead; 64 | StringBuilder response = new StringBuilder(); 65 | 66 | do 67 | { 68 | bytesRead = stream.Read(buffer, 0, buffer.Length); 69 | response.Append(Encoding.UTF8.GetString(buffer, 0, bytesRead)); 70 | } while (bytesRead == buffer.Length); 71 | 72 | return response.ToString(); 73 | } 74 | } 75 | catch (Exception e) 76 | { 77 | return $"Error: {e.Message}"; 78 | } 79 | } 80 | } 81 | } 82 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/Code Archiv/mcp_delete_group.cs: -------------------------------------------------------------------------------- ```csharp 1 | using System; 2 | using System.Net.Sockets; 3 | using System.Text; 4 | using Newtonsoft.Json; 5 | 6 | namespace MCPDeleteGroupClient 7 | { 8 | class Program 9 | { 10 | static void Main(string[] args) 11 | { 12 | if (args.Length < 8) 13 | { 14 | Console.WriteLine("Usage: --server-ip <IP> --server-port <PORT> --token <TOKEN> --group-name <GROUP_NAME>"); 15 | return; 16 | } 17 | 18 | string serverIp = GetArgument(args, "--server-ip"); 19 | int serverPort = int.Parse(GetArgument(args, "--server-port")); 20 | string token = GetArgument(args, "--token"); 21 | string groupName = GetArgument(args, "--group-name"); 22 | 23 | Console.WriteLine("📤 Sending request to delete group..."); 24 | 25 | var payload = new 26 | { 27 | command = "delete_group", 28 | token = token, 29 | arguments = new 30 | { 31 | groupName = groupName 32 | } 33 | }; 34 | 35 | string response = SendRequest(serverIp, serverPort, payload); 36 | 37 | Console.WriteLine("✔️ Response from server:"); 38 | Console.WriteLine(response); 39 | } 40 | 41 | static string GetArgument(string[] args, string key) 42 | { 43 | int index = Array.IndexOf(args, key); 44 | return index >= 0 && index < args.Length - 1 ? args[index + 1] : null; 45 | } 46 | 47 | static string SendRequest(string serverIp, int serverPort, object payload) 48 | { 49 | string payloadJson = JsonConvert.SerializeObject(payload); 50 | 51 | try 52 | { 53 | using (TcpClient client = new TcpClient(serverIp, serverPort)) 54 | { 55 | NetworkStream stream = client.GetStream(); 56 | 57 | // Send payload 58 | byte[] data = Encoding.UTF8.GetBytes(payloadJson); 59 | stream.Write(data, 0, data.Length); 60 | 61 | // Receive response 62 | byte[] buffer = new byte[4096]; 63 | int bytesRead; 64 | StringBuilder response = new StringBuilder(); 65 | 66 | do 67 | { 68 | bytesRead = stream.Read(buffer, 0, buffer.Length); 69 | response.Append(Encoding.UTF8.GetString(buffer, 0, bytesRead)); 70 | } while (bytesRead == buffer.Length); 71 | 72 | return response.ToString(); 73 | } 74 | } 75 | catch (Exception e) 76 | { 77 | return $"Error: {e.Message}"; 78 | } 79 | } 80 | } 81 | } 82 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/Code Archiv/mcp_get_source.cs: -------------------------------------------------------------------------------- ```csharp 1 | using System; 2 | using System.Net.Sockets; 3 | using System.Text; 4 | using Newtonsoft.Json; 5 | 6 | namespace MCPGetSourceClient 7 | { 8 | class Program 9 | { 10 | static void Main(string[] args) 11 | { 12 | if (args.Length < 4) 13 | { 14 | Console.WriteLine("Usage: --server-ip <IP> --server-port <PORT> --token <TOKEN> --source-id <SOURCE_ID>"); 15 | return; 16 | } 17 | 18 | string serverIp = GetArgument(args, "--server-ip"); 19 | int serverPort = int.Parse(GetArgument(args, "--server-port")); 20 | string token = GetArgument(args, "--token"); 21 | string sourceId = GetArgument(args, "--source-id"); 22 | 23 | Console.WriteLine("📤 Sending request to get source information..."); 24 | 25 | var payload = new 26 | { 27 | command = "get_source", 28 | token = token, 29 | arguments = new 30 | { 31 | sourceId = sourceId 32 | } 33 | }; 34 | 35 | string response = SendRequest(serverIp, serverPort, payload); 36 | 37 | Console.WriteLine("✔️ Response from server:"); 38 | Console.WriteLine(response); 39 | } 40 | 41 | static string GetArgument(string[] args, string key) 42 | { 43 | int index = Array.IndexOf(args, key); 44 | return index >= 0 && index < args.Length - 1 ? args[index + 1] : null; 45 | } 46 | 47 | static string SendRequest(string serverIp, int serverPort, object payload) 48 | { 49 | string payloadJson = JsonConvert.SerializeObject(payload); 50 | 51 | try 52 | { 53 | using (TcpClient client = new TcpClient(serverIp, serverPort)) 54 | { 55 | NetworkStream stream = client.GetStream(); 56 | 57 | // Send payload 58 | byte[] data = Encoding.UTF8.GetBytes(payloadJson); 59 | stream.Write(data, 0, data.Length); 60 | 61 | // Receive response 62 | byte[] buffer = new byte[4096]; 63 | int bytesRead; 64 | StringBuilder response = new StringBuilder(); 65 | 66 | do 67 | { 68 | bytesRead = stream.Read(buffer, 0, buffer.Length); 69 | response.Append(Encoding.UTF8.GetString(buffer, 0, bytesRead)); 70 | } while (bytesRead == buffer.Length); 71 | 72 | return response.ToString(); 73 | } 74 | } 75 | catch (Exception e) 76 | { 77 | return $"Error: {e.Message}"; 78 | } 79 | } 80 | } 81 | } 82 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/2.2 mcp_get_chat_info/Program.cs: -------------------------------------------------------------------------------- ```csharp 1 | using System; 2 | using System.Net.Sockets; 3 | using System.Text; 4 | using Newtonsoft.Json; 5 | 6 | namespace MCPChatInfoClient 7 | { 8 | class Program 9 | { 10 | static void Main(string[] args) 11 | { 12 | if (args.Length < 4) 13 | { 14 | Console.WriteLine("Usage: --server-ip <IP> --server-port <PORT> --token <TOKEN> --chat-id <CHAT_ID>"); 15 | return; 16 | } 17 | 18 | string serverIp = GetArgument(args, "--server-ip"); 19 | int serverPort = int.Parse(GetArgument(args, "--server-port")); 20 | string token = GetArgument(args, "--token"); 21 | string chatId = GetArgument(args, "--chat-id"); 22 | 23 | var payload = new 24 | { 25 | command = "get_chat_info", 26 | token = token, 27 | arguments = new 28 | { 29 | chatId = chatId 30 | } 31 | }; 32 | 33 | Console.WriteLine("📤 Anfrage senden..."); 34 | string response = SendRequest(serverIp, serverPort, payload); 35 | Console.WriteLine("✔️ Antwort:"); 36 | Console.WriteLine(response); 37 | } 38 | 39 | static string GetArgument(string[] args, string key) 40 | { 41 | int index = Array.IndexOf(args, key); 42 | return index >= 0 && index < args.Length - 1 ? args[index + 1] : null; 43 | } 44 | 45 | static string SendRequest(string serverIp, int serverPort, object payload) 46 | { 47 | string payloadJson = JsonConvert.SerializeObject(payload); 48 | 49 | try 50 | { 51 | using (TcpClient client = new TcpClient(serverIp, serverPort)) 52 | { 53 | NetworkStream stream = client.GetStream(); 54 | 55 | // Send payload 56 | byte[] data = Encoding.UTF8.GetBytes(payloadJson); 57 | stream.Write(data, 0, data.Length); 58 | 59 | // Receive response 60 | byte[] buffer = new byte[4096]; 61 | int bytesRead; 62 | StringBuilder response = new StringBuilder(); 63 | 64 | do 65 | { 66 | bytesRead = stream.Read(buffer, 0, buffer.Length); 67 | response.Append(Encoding.UTF8.GetString(buffer, 0, bytesRead)); 68 | } while (bytesRead == buffer.Length); 69 | 70 | return response.ToString(); 71 | } 72 | } 73 | catch (Exception e) 74 | { 75 | return JsonConvert.SerializeObject(new { status = "error", message = e.Message }); 76 | } 77 | } 78 | } 79 | } 80 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/3.2 mcp_list_sources/Program.cs: -------------------------------------------------------------------------------- ```csharp 1 | using System; 2 | using System.Net.Sockets; 3 | using System.Text; 4 | using Newtonsoft.Json; 5 | 6 | namespace MCPListSourcesClient 7 | { 8 | class Program 9 | { 10 | static void Main(string[] args) 11 | { 12 | if (args.Length < 8) 13 | { 14 | Console.WriteLine("Usage: --server-ip <IP> --server-port <PORT> --token <TOKEN> --group-name <GROUP_NAME>"); 15 | return; 16 | } 17 | 18 | string serverIp = GetArgument(args, "--server-ip"); 19 | int serverPort = int.Parse(GetArgument(args, "--server-port")); 20 | string token = GetArgument(args, "--token"); 21 | string groupName = GetArgument(args, "--group-name"); 22 | 23 | Console.WriteLine("📤 Sending request to list sources..."); 24 | 25 | var payload = new 26 | { 27 | command = "list_sources", 28 | token = token, 29 | attributes = new 30 | { 31 | groupName = groupName 32 | } 33 | }; 34 | 35 | string response = SendRequest(serverIp, serverPort, payload); 36 | 37 | Console.WriteLine("✔️ Response from server:"); 38 | Console.WriteLine(response); 39 | } 40 | 41 | static string GetArgument(string[] args, string key) 42 | { 43 | int index = Array.IndexOf(args, key); 44 | return index >= 0 && index < args.Length - 1 ? args[index + 1] : null; 45 | } 46 | 47 | static string SendRequest(string serverIp, int serverPort, object payload) 48 | { 49 | string payloadJson = JsonConvert.SerializeObject(payload); 50 | 51 | try 52 | { 53 | using (TcpClient client = new TcpClient(serverIp, serverPort)) 54 | { 55 | NetworkStream stream = client.GetStream(); 56 | 57 | // Send payload 58 | byte[] data = Encoding.UTF8.GetBytes(payloadJson); 59 | stream.Write(data, 0, data.Length); 60 | 61 | // Receive response 62 | byte[] buffer = new byte[4096]; 63 | int bytesRead; 64 | StringBuilder response = new StringBuilder(); 65 | 66 | do 67 | { 68 | bytesRead = stream.Read(buffer, 0, buffer.Length); 69 | response.Append(Encoding.UTF8.GetString(buffer, 0, bytesRead)); 70 | } while (bytesRead == buffer.Length); 71 | 72 | return response.ToString(); 73 | } 74 | } 75 | catch (Exception e) 76 | { 77 | return $"Error: {e.Message}"; 78 | } 79 | } 80 | } 81 | } 82 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/Code Archiv/mcp_get_chat_info.cs: -------------------------------------------------------------------------------- ```csharp 1 | using System; 2 | using System.Net.Sockets; 3 | using System.Text; 4 | using Newtonsoft.Json; 5 | 6 | namespace MCPChatInfoClient 7 | { 8 | class Program 9 | { 10 | static void Main(string[] args) 11 | { 12 | if (args.Length < 4) 13 | { 14 | Console.WriteLine("Usage: --server-ip <IP> --server-port <PORT> --token <TOKEN> --chat-id <CHAT_ID>"); 15 | return; 16 | } 17 | 18 | string serverIp = GetArgument(args, "--server-ip"); 19 | int serverPort = int.Parse(GetArgument(args, "--server-port")); 20 | string token = GetArgument(args, "--token"); 21 | string chatId = GetArgument(args, "--chat-id"); 22 | 23 | var payload = new 24 | { 25 | command = "get_chat_info", 26 | token = token, 27 | arguments = new 28 | { 29 | chatId = chatId 30 | } 31 | }; 32 | 33 | Console.WriteLine("📤 Anfrage senden..."); 34 | string response = SendRequest(serverIp, serverPort, payload); 35 | Console.WriteLine("✔️ Antwort:"); 36 | Console.WriteLine(response); 37 | } 38 | 39 | static string GetArgument(string[] args, string key) 40 | { 41 | int index = Array.IndexOf(args, key); 42 | return index >= 0 && index < args.Length - 1 ? args[index + 1] : null; 43 | } 44 | 45 | static string SendRequest(string serverIp, int serverPort, object payload) 46 | { 47 | string payloadJson = JsonConvert.SerializeObject(payload); 48 | 49 | try 50 | { 51 | using (TcpClient client = new TcpClient(serverIp, serverPort)) 52 | { 53 | NetworkStream stream = client.GetStream(); 54 | 55 | // Send payload 56 | byte[] data = Encoding.UTF8.GetBytes(payloadJson); 57 | stream.Write(data, 0, data.Length); 58 | 59 | // Receive response 60 | byte[] buffer = new byte[4096]; 61 | int bytesRead; 62 | StringBuilder response = new StringBuilder(); 63 | 64 | do 65 | { 66 | bytesRead = stream.Read(buffer, 0, buffer.Length); 67 | response.Append(Encoding.UTF8.GetString(buffer, 0, bytesRead)); 68 | } while (bytesRead == buffer.Length); 69 | 70 | return response.ToString(); 71 | } 72 | } 73 | catch (Exception e) 74 | { 75 | return JsonConvert.SerializeObject(new { status = "error", message = e.Message }); 76 | } 77 | } 78 | } 79 | } 80 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/Code Archiv/mcp_list_sources.cs: -------------------------------------------------------------------------------- ```csharp 1 | using System; 2 | using System.Net.Sockets; 3 | using System.Text; 4 | using Newtonsoft.Json; 5 | 6 | namespace MCPListSourcesClient 7 | { 8 | class Program 9 | { 10 | static void Main(string[] args) 11 | { 12 | if (args.Length < 8) 13 | { 14 | Console.WriteLine("Usage: --server-ip <IP> --server-port <PORT> --token <TOKEN> --group-name <GROUP_NAME>"); 15 | return; 16 | } 17 | 18 | string serverIp = GetArgument(args, "--server-ip"); 19 | int serverPort = int.Parse(GetArgument(args, "--server-port")); 20 | string token = GetArgument(args, "--token"); 21 | string groupName = GetArgument(args, "--group-name"); 22 | 23 | Console.WriteLine("📤 Sending request to list sources..."); 24 | 25 | var payload = new 26 | { 27 | command = "list_sources", 28 | token = token, 29 | attributes = new 30 | { 31 | groupName = groupName 32 | } 33 | }; 34 | 35 | string response = SendRequest(serverIp, serverPort, payload); 36 | 37 | Console.WriteLine("✔️ Response from server:"); 38 | Console.WriteLine(response); 39 | } 40 | 41 | static string GetArgument(string[] args, string key) 42 | { 43 | int index = Array.IndexOf(args, key); 44 | return index >= 0 && index < args.Length - 1 ? args[index + 1] : null; 45 | } 46 | 47 | static string SendRequest(string serverIp, int serverPort, object payload) 48 | { 49 | string payloadJson = JsonConvert.SerializeObject(payload); 50 | 51 | try 52 | { 53 | using (TcpClient client = new TcpClient(serverIp, serverPort)) 54 | { 55 | NetworkStream stream = client.GetStream(); 56 | 57 | // Send payload 58 | byte[] data = Encoding.UTF8.GetBytes(payloadJson); 59 | stream.Write(data, 0, data.Length); 60 | 61 | // Receive response 62 | byte[] buffer = new byte[4096]; 63 | int bytesRead; 64 | StringBuilder response = new StringBuilder(); 65 | 66 | do 67 | { 68 | bytesRead = stream.Read(buffer, 0, buffer.Length); 69 | response.Append(Encoding.UTF8.GetString(buffer, 0, bytesRead)); 70 | } while (bytesRead == buffer.Length); 71 | 72 | return response.ToString(); 73 | } 74 | } 75 | catch (Exception e) 76 | { 77 | return $"Error: {e.Message}"; 78 | } 79 | } 80 | } 81 | } 82 | ``` -------------------------------------------------------------------------------- /clients/Go/3.3 mcp_edit_source/MCPEditSourceClient.go: -------------------------------------------------------------------------------- ```go 1 | package main 2 | 3 | import ( 4 | "bytes" 5 | "encoding/json" 6 | "errors" 7 | "flag" 8 | "fmt" 9 | "io" 10 | "net" 11 | "os" 12 | ) 13 | 14 | type EditSourcePayload struct { 15 | Command string `json:"command"` 16 | Token string `json:"token"` 17 | Arguments map[string]interface{} `json:"arguments"` 18 | } 19 | 20 | func sendEditSourceRequest(serverIP string, serverPort int, token, sourceID, title, content string, groups []string) (string, error) { 21 | // Prepare the request payload 22 | arguments := map[string]interface{}{ 23 | "sourceId": sourceID, 24 | } 25 | if title != "" { 26 | arguments["title"] = title 27 | } 28 | if content != "" { 29 | arguments["content"] = content 30 | } 31 | if len(groups) > 0 { 32 | arguments["groups"] = groups 33 | } 34 | 35 | payload := EditSourcePayload{ 36 | Command: "edit_source", 37 | Token: token, 38 | Arguments: arguments, 39 | } 40 | 41 | // Convert the payload to JSON 42 | payloadJSON, err := json.Marshal(payload) 43 | if err != nil { 44 | return "", err 45 | } 46 | 47 | // Create a connection to the server 48 | conn, err := net.Dial("tcp", fmt.Sprintf("%s:%d", serverIP, serverPort)) 49 | if err != nil { 50 | return "", err 51 | } 52 | defer conn.Close() 53 | 54 | // Send the request 55 | _, err = conn.Write(payloadJSON) 56 | if err != nil { 57 | return "", err 58 | } 59 | 60 | // Receive the response 61 | var responseBuffer bytes.Buffer 62 | buf := make([]byte, 4096) 63 | for { 64 | n, err := conn.Read(buf) 65 | if err != nil { 66 | if errors.Is(err, io.EOF) { 67 | break 68 | } 69 | return "", err 70 | } 71 | responseBuffer.Write(buf[:n]) 72 | if n < 4096 { 73 | break 74 | } 75 | } 76 | 77 | return responseBuffer.String(), nil 78 | } 79 | 80 | func main() { 81 | serverIP := flag.String("server-ip", "", "IP address of the MCP server") 82 | serverPort := flag.Int("server-port", 0, "Port number of the MCP server") 83 | token := flag.String("token", "", "Authentication token") 84 | sourceID := flag.String("source-id", "", "ID of the source to edit") 85 | title := flag.String("title", "", "New title for the source (optional)") 86 | content := flag.String("content", "", "Updated content in markdown format (optional)") 87 | groups := flag.String("groups", "", "Comma-separated list of updated groups (optional)") 88 | 89 | flag.Parse() 90 | 91 | if *serverIP == "" || *serverPort == 0 || *token == "" || *sourceID == "" { 92 | fmt.Println("❌ ERROR: Required flags are missing.") 93 | flag.Usage() 94 | os.Exit(1) 95 | } 96 | 97 | // Convert groups to a slice 98 | groupList := []string{} 99 | if *groups != "" { 100 | groupList = append(groupList, *groups) 101 | } 102 | 103 | // Send the request to edit the source 104 | fmt.Println("📤 Sending request to edit source...") 105 | response, err := sendEditSourceRequest(*serverIP, *serverPort, *token, *sourceID, *title, *content, groupList) 106 | if err != nil { 107 | fmt.Printf("❌ ERROR: %v\n", err) 108 | os.Exit(1) 109 | } 110 | 111 | fmt.Println("✔️ Response from server:") 112 | fmt.Println(response) 113 | } 114 | ``` -------------------------------------------------------------------------------- /clients/Gradio/mcp_servers/pgpt/config.py: -------------------------------------------------------------------------------- ```python 1 | # Python/config.py 2 | 3 | import json 4 | import os 5 | import logging 6 | from language import languages 7 | 8 | 9 | class ConfigError(Exception): 10 | pass 11 | 12 | 13 | class Config: 14 | 15 | def __init__(self, config_file="config.json", required_fields=None): 16 | self.required_fields = required_fields if required_fields is not None else [] 17 | self.config_file = config_file 18 | self.data = self.load_config() 19 | 20 | # 🔥 Sprache wird **vor** validate() gesetzt 21 | self.language = self.get("language", "en") 22 | if self.language not in languages: 23 | # Fallback zu Englisch, wenn die angegebene Sprache nicht unterstützt wird 24 | fallback_lang = "en" 25 | logging.warning(f"⚠️ Unsupported language '{self.language}', falling back to English.") 26 | self.language = fallback_lang 27 | self.lang = languages[self.language] # ✅ Setzt self.lang vor validate() 28 | 29 | self.validate() 30 | 31 | 32 | def set_value(self, key, value): 33 | self.data[key] = value 34 | 35 | 36 | def set_value(self, key, value): 37 | self.data[key] = value 38 | 39 | def get_lang_message(self, key, **kwargs): 40 | """ 41 | Sichere Methode zum Abrufen von Nachrichten aus dem Sprachwörterbuch. 42 | Wenn der Schlüssel nicht existiert, wird eine Standardnachricht zurückgegeben. 43 | """ 44 | message = self.lang.get(key, "Message not defined.") 45 | try: 46 | return message.format(**kwargs) 47 | except KeyError as e: 48 | logging.error(f"Missing placeholder in language file for key '{key}': {e}") 49 | return message 50 | 51 | def load_config(self): 52 | if not os.path.exists(self.config_file): 53 | # Da die Sprache noch nicht geladen ist, verwenden wir Englisch für die Fehlermeldung 54 | fallback_lang = "en" 55 | message = languages[fallback_lang]['config_file_not_found'].format(config_file=self.config_file) 56 | logging.error(message) 57 | raise ConfigError(message) 58 | try: 59 | with open(self.config_file, "r", encoding="utf-8") as f: 60 | return json.load(f) 61 | except json.JSONDecodeError as e: 62 | fallback_lang = "en" 63 | message = languages[fallback_lang]['invalid_json_in_config'].format(error=str(e)) 64 | logging.error(message) 65 | raise ConfigError(message) 66 | 67 | def validate(self): 68 | missing = [field for field in self.required_fields if field not in self.data] 69 | if missing: 70 | message = self.get_lang_message("missing_required_fields", fields=missing) 71 | logging.error(message) 72 | raise ConfigError(message) 73 | 74 | def get(self, key, default=None): 75 | return self.data.get(key, default) 76 | ``` -------------------------------------------------------------------------------- /examples/create_users_from_csv/config.py: -------------------------------------------------------------------------------- ```python 1 | # Python/config.py 2 | 3 | import json 4 | import os 5 | import logging 6 | from language import languages 7 | 8 | 9 | class ConfigError(Exception): 10 | pass 11 | 12 | 13 | class Config: 14 | 15 | def __init__(self, config_file="config.json", required_fields=None): 16 | self.required_fields = required_fields if required_fields is not None else [] 17 | self.config_file = config_file 18 | self.data = self.load_config() 19 | 20 | # 🔥 Sprache wird **vor** validate() gesetzt 21 | self.language = self.get("language", "en") 22 | if self.language not in languages: 23 | # Fallback zu Englisch, wenn die angegebene Sprache nicht unterstützt wird 24 | fallback_lang = "en" 25 | logging.warning(f"⚠️ Unsupported language '{self.language}', falling back to English.") 26 | self.language = fallback_lang 27 | self.lang = languages[self.language] # ✅ Setzt self.lang vor validate() 28 | 29 | self.validate() 30 | 31 | 32 | def set_value(self, key, value): 33 | self.data[key] = value 34 | 35 | 36 | def set_value(self, key, value): 37 | self.data[key] = value 38 | 39 | def get_lang_message(self, key, **kwargs): 40 | """ 41 | Sichere Methode zum Abrufen von Nachrichten aus dem Sprachwörterbuch. 42 | Wenn der Schlüssel nicht existiert, wird eine Standardnachricht zurückgegeben. 43 | """ 44 | message = self.lang.get(key, "Message not defined.") 45 | try: 46 | return message.format(**kwargs) 47 | except KeyError as e: 48 | logging.error(f"Missing placeholder in language file for key '{key}': {e}") 49 | return message 50 | 51 | def load_config(self): 52 | if not os.path.exists(self.config_file): 53 | # Da die Sprache noch nicht geladen ist, verwenden wir Englisch für die Fehlermeldung 54 | fallback_lang = "en" 55 | message = languages[fallback_lang]['config_file_not_found'].format(config_file=self.config_file) 56 | logging.error(message) 57 | raise ConfigError(message) 58 | try: 59 | with open(self.config_file, "r", encoding="utf-8") as f: 60 | return json.load(f) 61 | except json.JSONDecodeError as e: 62 | fallback_lang = "en" 63 | message = languages[fallback_lang]['invalid_json_in_config'].format(error=str(e)) 64 | logging.error(message) 65 | raise ConfigError(message) 66 | 67 | def validate(self): 68 | missing = [field for field in self.required_fields if field not in self.data] 69 | if missing: 70 | message = self.get_lang_message("missing_required_fields", fields=missing) 71 | logging.error(message) 72 | raise ConfigError(message) 73 | 74 | def get(self, key, default=None): 75 | return self.data.get(key, default) 76 | ``` -------------------------------------------------------------------------------- /agents/AgentInterface/Python/config.py: -------------------------------------------------------------------------------- ```python 1 | # Python/config.py 2 | 3 | import json 4 | import os 5 | import logging 6 | from .language import languages 7 | 8 | 9 | class ConfigError(Exception): 10 | pass 11 | 12 | 13 | class Config: 14 | 15 | def __init__(self, config_file="config.json", required_fields=None): 16 | self.required_fields = required_fields if required_fields is not None else [] 17 | self.config_file = config_file 18 | self.data = self.load_config() 19 | 20 | # 🔥 Sprache wird **vor** validate() gesetzt 21 | self.language = self.get("language", "en") 22 | if self.language not in languages: 23 | # Fallback zu Englisch, wenn die angegebene Sprache nicht unterstützt wird 24 | fallback_lang = "en" 25 | logging.warning(f"⚠️ Unsupported language '{self.language}', falling back to English.") 26 | self.language = fallback_lang 27 | self.lang = languages[self.language] # ✅ Setzt self.lang vor validate() 28 | 29 | self.validate() 30 | 31 | 32 | def set_value(self, key, value): 33 | self.data[key] = value 34 | 35 | 36 | def set_value(self, key, value): 37 | self.data[key] = value 38 | 39 | def get_lang_message(self, key, **kwargs): 40 | """ 41 | Sichere Methode zum Abrufen von Nachrichten aus dem Sprachwörterbuch. 42 | Wenn der Schlüssel nicht existiert, wird eine Standardnachricht zurückgegeben. 43 | """ 44 | message = self.lang.get(key, "Message not defined.") 45 | try: 46 | return message.format(**kwargs) 47 | except KeyError as e: 48 | logging.error(f"Missing placeholder in language file for key '{key}': {e}") 49 | return message 50 | 51 | def load_config(self): 52 | if not os.path.exists(self.config_file): 53 | # Da die Sprache noch nicht geladen ist, verwenden wir Englisch für die Fehlermeldung 54 | fallback_lang = "en" 55 | message = languages[fallback_lang]['config_file_not_found'].format(config_file=self.config_file) 56 | logging.error(message) 57 | raise ConfigError(message) 58 | try: 59 | with open(self.config_file, "r", encoding="utf-8") as f: 60 | return json.load(f) 61 | except json.JSONDecodeError as e: 62 | fallback_lang = "en" 63 | message = languages[fallback_lang]['invalid_json_in_config'].format(error=str(e)) 64 | logging.error(message) 65 | raise ConfigError(message) 66 | 67 | def validate(self): 68 | missing = [field for field in self.required_fields if field not in self.data] 69 | if missing: 70 | message = self.get_lang_message("missing_required_fields", fields=missing) 71 | logging.error(message) 72 | raise ConfigError(message) 73 | 74 | def get(self, key, default=None): 75 | return self.data.get(key, default) 76 | ``` -------------------------------------------------------------------------------- /examples/dynamic_sources/rss_reader/config.py: -------------------------------------------------------------------------------- ```python 1 | # Python/config.py 2 | 3 | import json 4 | import os 5 | import logging 6 | from .language import languages 7 | 8 | 9 | class ConfigError(Exception): 10 | pass 11 | 12 | 13 | class Config: 14 | 15 | def __init__(self, config_file="config.json", required_fields=None): 16 | self.required_fields = required_fields if required_fields is not None else [] 17 | self.config_file = config_file 18 | self.data = self.load_config() 19 | 20 | # 🔥 Sprache wird **vor** validate() gesetzt 21 | self.language = self.get("language", "en") 22 | if self.language not in languages: 23 | # Fallback zu Englisch, wenn die angegebene Sprache nicht unterstützt wird 24 | fallback_lang = "en" 25 | logging.warning(f"⚠️ Unsupported language '{self.language}', falling back to English.") 26 | self.language = fallback_lang 27 | self.lang = languages[self.language] # ✅ Setzt self.lang vor validate() 28 | 29 | self.validate() 30 | 31 | 32 | def set_value(self, key, value): 33 | self.data[key] = value 34 | 35 | 36 | def set_value(self, key, value): 37 | self.data[key] = value 38 | 39 | def get_lang_message(self, key, **kwargs): 40 | """ 41 | Sichere Methode zum Abrufen von Nachrichten aus dem Sprachwörterbuch. 42 | Wenn der Schlüssel nicht existiert, wird eine Standardnachricht zurückgegeben. 43 | """ 44 | message = self.lang.get(key, "Message not defined.") 45 | try: 46 | return message.format(**kwargs) 47 | except KeyError as e: 48 | logging.error(f"Missing placeholder in language file for key '{key}': {e}") 49 | return message 50 | 51 | def load_config(self): 52 | if not os.path.exists(self.config_file): 53 | # Da die Sprache noch nicht geladen ist, verwenden wir Englisch für die Fehlermeldung 54 | fallback_lang = "en" 55 | message = languages[fallback_lang]['config_file_not_found'].format(config_file=self.config_file) 56 | logging.error(message) 57 | raise ConfigError(message) 58 | try: 59 | with open(self.config_file, "r", encoding="utf-8") as f: 60 | return json.load(f) 61 | except json.JSONDecodeError as e: 62 | fallback_lang = "en" 63 | message = languages[fallback_lang]['invalid_json_in_config'].format(error=str(e)) 64 | logging.error(message) 65 | raise ConfigError(message) 66 | 67 | def validate(self): 68 | missing = [field for field in self.required_fields if field not in self.data] 69 | if missing: 70 | message = self.get_lang_message("missing_required_fields", fields=missing) 71 | logging.error(message) 72 | raise ConfigError(message) 73 | 74 | def get(self, key, default=None): 75 | return self.data.get(key, default) 76 | ``` -------------------------------------------------------------------------------- /examples/sftp_upload_with_id/config.py: -------------------------------------------------------------------------------- ```python 1 | # Python/config.py 2 | 3 | import json 4 | import os 5 | import logging 6 | from .language import languages 7 | 8 | 9 | class ConfigError(Exception): 10 | pass 11 | 12 | 13 | class Config: 14 | 15 | def __init__(self, config_file="config.json", required_fields=None): 16 | self.required_fields = required_fields if required_fields is not None else [] 17 | self.config_file = config_file 18 | self.data = self.load_config() 19 | 20 | # 🔥 Sprache wird **vor** validate() gesetzt 21 | self.language = self.get("language", "en") 22 | if self.language not in languages: 23 | # Fallback zu Englisch, wenn die angegebene Sprache nicht unterstützt wird 24 | fallback_lang = "en" 25 | logging.warning(f"⚠️ Unsupported language '{self.language}', falling back to English.") 26 | self.language = fallback_lang 27 | self.lang = languages[self.language] # ✅ Setzt self.lang vor validate() 28 | 29 | self.validate() 30 | 31 | 32 | def set_value(self, key, value): 33 | self.data[key] = value 34 | 35 | 36 | def set_value(self, key, value): 37 | self.data[key] = value 38 | 39 | def get_lang_message(self, key, **kwargs): 40 | """ 41 | Sichere Methode zum Abrufen von Nachrichten aus dem Sprachwörterbuch. 42 | Wenn der Schlüssel nicht existiert, wird eine Standardnachricht zurückgegeben. 43 | """ 44 | message = self.lang.get(key, "Message not defined.") 45 | try: 46 | return message.format(**kwargs) 47 | except KeyError as e: 48 | logging.error(f"Missing placeholder in language file for key '{key}': {e}") 49 | return message 50 | 51 | def load_config(self): 52 | if not os.path.exists(self.config_file): 53 | # Da die Sprache noch nicht geladen ist, verwenden wir Englisch für die Fehlermeldung 54 | fallback_lang = "en" 55 | message = languages[fallback_lang]['config_file_not_found'].format(config_file=self.config_file) 56 | logging.error(message) 57 | raise ConfigError(message) 58 | try: 59 | with open(self.config_file, "r", encoding="utf-8") as f: 60 | return json.load(f) 61 | except json.JSONDecodeError as e: 62 | fallback_lang = "en" 63 | message = languages[fallback_lang]['invalid_json_in_config'].format(error=str(e)) 64 | logging.error(message) 65 | raise ConfigError(message) 66 | 67 | def validate(self): 68 | missing = [field for field in self.required_fields if field not in self.data] 69 | if missing: 70 | message = self.get_lang_message("missing_required_fields", fields=missing) 71 | logging.error(message) 72 | raise ConfigError(message) 73 | 74 | def get(self, key, default=None): 75 | return self.data.get(key, default) 76 | ``` -------------------------------------------------------------------------------- /clients/Python/9.0 mcp_keygen/MCPKeygenClient.py: -------------------------------------------------------------------------------- ```python 1 | import argparse 2 | import socket 3 | import ssl 4 | import json 5 | 6 | def send_keygen_request(server_ip, server_port, token, password, use_ssl=True, accept_self_signed=False): 7 | """ 8 | Sends a keygen request to the MCP server. 9 | """ 10 | payload = { 11 | "command": "keygen", 12 | "token": token, 13 | "arguments": { 14 | "password": password 15 | } 16 | } 17 | 18 | payload_json = json.dumps(payload) 19 | 20 | raw_socket = None 21 | client_socket = None 22 | 23 | try: 24 | raw_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 25 | raw_socket.settimeout(10) 26 | 27 | if use_ssl: 28 | context = ssl.create_default_context() 29 | if accept_self_signed: 30 | context.check_hostname = False 31 | context.verify_mode = ssl.CERT_NONE 32 | client_socket = context.wrap_socket(raw_socket, server_hostname=server_ip) 33 | else: 34 | client_socket = raw_socket 35 | 36 | client_socket.connect((server_ip, server_port)) 37 | client_socket.sendall(payload_json.encode("utf-8")) 38 | 39 | response = b"" 40 | while True: 41 | part = client_socket.recv(4096) 42 | if not part: 43 | break 44 | response += part 45 | 46 | return response.decode("utf-8") 47 | except ssl.SSLError: 48 | return "Error: Server and/or client may require TLS encryption. Please enable SSL/TLS." 49 | except Exception as e: 50 | return f"Error: {e}" 51 | 52 | finally: 53 | if client_socket is not None: 54 | try: 55 | client_socket.shutdown(socket.SHUT_RDWR) 56 | except: 57 | pass 58 | client_socket.close() 59 | 60 | if __name__ == "__main__": 61 | parser = argparse.ArgumentParser(description="Send a keygen request to the MCP server.") 62 | parser.add_argument("--server-ip", required=True, help="IP address of the MCP server") 63 | parser.add_argument("--server-port", type=int, required=True, help="Port number of the MCP server") 64 | parser.add_argument("--token", required=True, help="Authentication token") 65 | parser.add_argument("--password", required=True, help="Password to send for key generation") 66 | parser.add_argument("--use-ssl", action="store_true", help="Connect using SSL/TLS") 67 | parser.add_argument("--accept-self-signed", action="store_true", help="Accept self-signed certificates (disable certificate verification)") 68 | 69 | args = parser.parse_args() 70 | 71 | # Send the keygen request 72 | response = send_keygen_request( 73 | args.server_ip, 74 | args.server_port, 75 | args.token, 76 | args.password, 77 | use_ssl=args.use_ssl, 78 | accept_self_signed=args.accept_self_signed 79 | ) 80 | print("Response from server:", response) 81 | ``` -------------------------------------------------------------------------------- /clients/Gradio/config.py: -------------------------------------------------------------------------------- ```python 1 | # Python/config.py 2 | 3 | import json 4 | import os 5 | import logging 6 | from clients.Gradio.language import languages 7 | 8 | 9 | class ConfigError(Exception): 10 | pass 11 | 12 | 13 | class Config: 14 | 15 | def __init__(self, config_file="config.json", required_fields=None): 16 | self.required_fields = required_fields if required_fields is not None else [] 17 | self.config_file = config_file 18 | self.data = self.load_config() 19 | 20 | # 🔥 Sprache wird **vor** validate() gesetzt 21 | self.language = self.get("language", "en") 22 | if self.language not in languages: 23 | # Fallback zu Englisch, wenn die angegebene Sprache nicht unterstützt wird 24 | fallback_lang = "en" 25 | logging.warning(f"⚠️ Unsupported language '{self.language}', falling back to English.") 26 | self.language = fallback_lang 27 | self.lang = languages[self.language] # ✅ Setzt self.lang vor validate() 28 | 29 | self.validate() 30 | 31 | 32 | def set_value(self, key, value): 33 | self.data[key] = value 34 | 35 | 36 | def set_value(self, key, value): 37 | self.data[key] = value 38 | 39 | def get_lang_message(self, key, **kwargs): 40 | """ 41 | Sichere Methode zum Abrufen von Nachrichten aus dem Sprachwörterbuch. 42 | Wenn der Schlüssel nicht existiert, wird eine Standardnachricht zurückgegeben. 43 | """ 44 | message = self.lang.get(key, "Message not defined.") 45 | try: 46 | return message.format(**kwargs) 47 | except KeyError as e: 48 | logging.error(f"Missing placeholder in language file for key '{key}': {e}") 49 | return message 50 | 51 | def load_config(self): 52 | if not os.path.exists(self.config_file): 53 | # Da die Sprache noch nicht geladen ist, verwenden wir Englisch für die Fehlermeldung 54 | fallback_lang = "en" 55 | message = languages[fallback_lang]['config_file_not_found'].format(config_file=self.config_file) 56 | logging.error(message) 57 | raise ConfigError(message) 58 | try: 59 | with open(self.config_file, "r", encoding="utf-8") as f: 60 | return json.load(f) 61 | except json.JSONDecodeError as e: 62 | fallback_lang = "en" 63 | message = languages[fallback_lang]['invalid_json_in_config'].format(error=str(e)) 64 | logging.error(message) 65 | raise ConfigError(message) 66 | 67 | def validate(self): 68 | missing = [field for field in self.required_fields if field not in self.data] 69 | if missing: 70 | message = self.get_lang_message("missing_required_fields", fields=missing) 71 | logging.error(message) 72 | raise ConfigError(message) 73 | 74 | def get(self, key, default=None): 75 | return self.data.get(key, default) 76 | ``` -------------------------------------------------------------------------------- /clients/Python/2.2 mcp_get_chat_info/MCPGetChatInfoClient.py: -------------------------------------------------------------------------------- ```python 1 | import socket 2 | import ssl 3 | import json 4 | import argparse 5 | 6 | def send_request(server_ip, server_port, payload, use_ssl=True, accept_self_signed=False): 7 | """ 8 | Sends a generic request to the server. 9 | """ 10 | payload_json = json.dumps(payload) 11 | 12 | raw_socket = None 13 | client_socket = None 14 | 15 | try: 16 | raw_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 17 | raw_socket.settimeout(10) 18 | 19 | if use_ssl: 20 | context = ssl.create_default_context() 21 | if accept_self_signed: 22 | context.check_hostname = False 23 | context.verify_mode = ssl.CERT_NONE 24 | client_socket = context.wrap_socket(raw_socket, server_hostname=server_ip) 25 | else: 26 | client_socket = raw_socket 27 | 28 | client_socket.connect((server_ip, server_port)) 29 | client_socket.sendall(payload_json.encode('utf-8')) 30 | 31 | response = b"" 32 | while True: 33 | part = client_socket.recv(4096) 34 | if not part: 35 | break 36 | response += part 37 | 38 | return json.loads(response.decode('utf-8')) 39 | except ssl.SSLError: 40 | return {"status": "error", "message": "Connection failed: Server and/or client may require TLS encryption. Please enable SSL/TLS."} 41 | except Exception as e: 42 | return {"status": "error", "message": str(e)} 43 | 44 | finally: 45 | if client_socket is not None: 46 | try: 47 | client_socket.shutdown(socket.SHUT_RDWR) 48 | except: 49 | pass 50 | client_socket.close() 51 | 52 | if __name__ == "__main__": 53 | parser = argparse.ArgumentParser(description="Retrieve information about an existing conversation.") 54 | parser.add_argument("--server-ip", required=True, help="IP address of the MCP server") 55 | parser.add_argument("--server-port", required=True, type=int, help="Port number of the MCP server") 56 | parser.add_argument("--token", required=True, help="Authentication token") 57 | parser.add_argument("--chat-id", required=True, help="ID of the conversation") 58 | parser.add_argument("--use-ssl", action="store_true", help="Connect using SSL/TLS") 59 | parser.add_argument("--accept-self-signed", action="store_true", help="Accept self-signed certificates (disable certificate verification)") 60 | 61 | args = parser.parse_args() 62 | 63 | payload = { 64 | "command": "get_chat_info", 65 | "token": args.token, 66 | "arguments": { 67 | "chatId": args.chat_id 68 | } 69 | } 70 | 71 | print("📤 Sending request...") 72 | response = send_request(args.server_ip, args.server_port, payload, use_ssl=args.use_ssl, accept_self_signed=args.accept_self_signed) 73 | print("✔️ Response:", json.dumps(response, indent=2)) ``` -------------------------------------------------------------------------------- /clients/C# .Net/4.1 mcp_store_group/Program.cs: -------------------------------------------------------------------------------- ```csharp 1 | using System; 2 | using System.Net.Sockets; 3 | using System.Text; 4 | using Newtonsoft.Json; 5 | 6 | namespace MCPStoreGroupClient 7 | { 8 | class Program 9 | { 10 | static void Main(string[] args) 11 | { 12 | if (args.Length < 4) 13 | { 14 | Console.WriteLine("Usage: --server-ip <IP> --server-port <PORT> --group-name <GROUP_NAME> --token <TOKEN> [--description <DESCRIPTION>]"); 15 | return; 16 | } 17 | 18 | string serverIp = GetArgument(args, "--server-ip"); 19 | int serverPort = int.Parse(GetArgument(args, "--server-port")); 20 | string groupName = GetArgument(args, "--group-name"); 21 | string token = GetArgument(args, "--token"); 22 | string description = GetArgument(args, "--description") ?? ""; 23 | 24 | Console.WriteLine("📤 Sende Anfrage zur Erstellung einer Gruppe..."); 25 | 26 | var payload = new 27 | { 28 | command = "store_group", 29 | token = token, 30 | arguments = new 31 | { 32 | groupName = groupName, 33 | description = description 34 | } 35 | }; 36 | 37 | string response = SendRequest(serverIp, serverPort, payload); 38 | 39 | Console.WriteLine("✔️ Antwort vom Server:"); 40 | Console.WriteLine(response); 41 | } 42 | 43 | static string GetArgument(string[] args, string key) 44 | { 45 | int index = Array.IndexOf(args, key); 46 | return index >= 0 && index < args.Length - 1 ? args[index + 1] : null; 47 | } 48 | 49 | static string SendRequest(string serverIp, int serverPort, object payload) 50 | { 51 | string payloadJson = JsonConvert.SerializeObject(payload); 52 | 53 | try 54 | { 55 | using (TcpClient client = new TcpClient(serverIp, serverPort)) 56 | { 57 | NetworkStream stream = client.GetStream(); 58 | 59 | // Senden der Nutzdaten 60 | byte[] data = Encoding.UTF8.GetBytes(payloadJson); 61 | stream.Write(data, 0, data.Length); 62 | 63 | // Empfang der Antwort 64 | byte[] buffer = new byte[4096]; 65 | int bytesRead; 66 | StringBuilder response = new StringBuilder(); 67 | 68 | do 69 | { 70 | bytesRead = stream.Read(buffer, 0, buffer.Length); 71 | response.Append(Encoding.UTF8.GetString(buffer, 0, bytesRead)); 72 | } while (bytesRead == buffer.Length); 73 | 74 | return response.ToString(); 75 | } 76 | } 77 | catch (Exception e) 78 | { 79 | return $"Error: {e.Message}"; 80 | } 81 | } 82 | } 83 | } 84 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/Code Archiv/mcp_store_group.cs: -------------------------------------------------------------------------------- ```csharp 1 | using System; 2 | using System.Net.Sockets; 3 | using System.Text; 4 | using Newtonsoft.Json; 5 | 6 | namespace MCPStoreGroupClient 7 | { 8 | class Program 9 | { 10 | static void Main(string[] args) 11 | { 12 | if (args.Length < 4) 13 | { 14 | Console.WriteLine("Usage: --server-ip <IP> --server-port <PORT> --group-name <GROUP_NAME> --token <TOKEN> [--description <DESCRIPTION>]"); 15 | return; 16 | } 17 | 18 | string serverIp = GetArgument(args, "--server-ip"); 19 | int serverPort = int.Parse(GetArgument(args, "--server-port")); 20 | string groupName = GetArgument(args, "--group-name"); 21 | string token = GetArgument(args, "--token"); 22 | string description = GetArgument(args, "--description") ?? ""; 23 | 24 | Console.WriteLine("📤 Sende Anfrage zur Erstellung einer Gruppe..."); 25 | 26 | var payload = new 27 | { 28 | command = "store_group", 29 | token = token, 30 | arguments = new 31 | { 32 | groupName = groupName, 33 | description = description 34 | } 35 | }; 36 | 37 | string response = SendRequest(serverIp, serverPort, payload); 38 | 39 | Console.WriteLine("✔️ Antwort vom Server:"); 40 | Console.WriteLine(response); 41 | } 42 | 43 | static string GetArgument(string[] args, string key) 44 | { 45 | int index = Array.IndexOf(args, key); 46 | return index >= 0 && index < args.Length - 1 ? args[index + 1] : null; 47 | } 48 | 49 | static string SendRequest(string serverIp, int serverPort, object payload) 50 | { 51 | string payloadJson = JsonConvert.SerializeObject(payload); 52 | 53 | try 54 | { 55 | using (TcpClient client = new TcpClient(serverIp, serverPort)) 56 | { 57 | NetworkStream stream = client.GetStream(); 58 | 59 | // Senden der Nutzdaten 60 | byte[] data = Encoding.UTF8.GetBytes(payloadJson); 61 | stream.Write(data, 0, data.Length); 62 | 63 | // Empfang der Antwort 64 | byte[] buffer = new byte[4096]; 65 | int bytesRead; 66 | StringBuilder response = new StringBuilder(); 67 | 68 | do 69 | { 70 | bytesRead = stream.Read(buffer, 0, buffer.Length); 71 | response.Append(Encoding.UTF8.GetString(buffer, 0, bytesRead)); 72 | } while (bytesRead == buffer.Length); 73 | 74 | return response.ToString(); 75 | } 76 | } 77 | catch (Exception e) 78 | { 79 | return $"Error: {e.Message}"; 80 | } 81 | } 82 | } 83 | } 84 | ```