This is page 1 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/Gradio/mcp_servers/sqlite/.python-version: -------------------------------------------------------------------------------- ``` 1 | 3.12 2 | ``` -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- ``` 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | ``` -------------------------------------------------------------------------------- /agents/MCP-Client/.env.example: -------------------------------------------------------------------------------- ``` 1 | PGPT_API_KEY = 'mykey' 2 | PGPT_OAI_BASE_URL = 'http://127.0.0.1:8001' 3 | PGPT_API_KEY_VLLM = 'vllmapikey' 4 | PGPT_OAI_BASE_URL_VLLM = 'https://vllmapi' 5 | USE_VLLM = "False" ``` -------------------------------------------------------------------------------- /clients/C# .Net/1.0 mcp_login/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- ```csharp 1 | // <autogenerated /> 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] 5 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/1.1 mcp_logout/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- ```csharp 1 | // <autogenerated /> 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] 5 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/2.0 mcp_chat/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- ```csharp 1 | // <autogenerated /> 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] 5 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/2.1 mcp_continue_chat/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- ```csharp 1 | // <autogenerated /> 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] 5 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/2.2 mcp_get_chat_info/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- ```csharp 1 | // <autogenerated /> 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] 5 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/3.0 mcp_create_source/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- ```csharp 1 | // <autogenerated /> 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] 5 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/3.1 mcp_get_source/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- ```csharp 1 | // <autogenerated /> 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] 5 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/3.2 mcp_list_sources/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- ```csharp 1 | // <autogenerated /> 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] 5 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/3.3 mcp_edit_source/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- ```csharp 1 | // <autogenerated /> 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] 5 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/3.4 mcp_delete_source/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- ```csharp 1 | // <autogenerated /> 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] 5 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/4.0 mcp_list_groups/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- ```csharp 1 | // <autogenerated /> 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] 5 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/4.1 mcp_store_group/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- ```csharp 1 | // <autogenerated /> 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] 5 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/4.2 mcp_delete_group/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- ```csharp 1 | // <autogenerated /> 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] 5 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/5.0 mcp_store_user/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- ```csharp 1 | // <autogenerated /> 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] 5 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/5.1 mcp_edit_user/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- ```csharp 1 | // <autogenerated /> 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] 5 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/5.2 mcp_delete_user/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs: -------------------------------------------------------------------------------- ```csharp 1 | // <autogenerated /> 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")] 5 | ``` -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- ``` 1 | node_modules 2 | dist 3 | tests 4 | .idea 5 | logs 6 | package-lock.json 7 | pgpt.env.json 8 | agents/ChatBotAgent/pgpt_botagent.json 9 | agents/ChatBotAgent/Python/__pycache__/ 10 | agents/ChatBotAgent/__pycache__ 11 | open-ai-compatible-api/__pycache__/ 12 | /agents/ChatBotAgent/config.json 13 | agents/__pycache__/__init__.cpython-312.pyc 14 | *.pyc 15 | /.vscode 16 | agents/ChatBotAgent/flask.log 17 | agents/OpenAI_Compatible_API_Agent/pgpt_openai_api_mcp.json 18 | agents/OpenAI_Compatible_API_Agent/pgpt_openai_api_proxy.json 19 | agents/OpenAI_Compatible_API_Agent/pgpt_openai_api_proxy_sam.json 20 | agents/ChatBotAgent/agent.log 21 | agents/OpenAI_Compatible_API_Agent/venv 22 | agent.log 23 | *.log 24 | agents/SourceManagerAgent/config.json 25 | agents/SourceManagerAgent/database/documents.sql 26 | /tests/mcp-cli/undefined/ 27 | /agents/MCP-Client/undefined/ 28 | agents/MCP-Client/.env 29 | agents/MCP-Client/test_prompts.txt 30 | /agents/MCP-Client/server_config2.json 31 | clients/Python/Gradio/.gradio/cached_examples/16/log.csv 32 | agents/OpenAI_Compatible_API_Agent/.gradio/cached_examples/16/log.csv 33 | clients/Python/Gradio/config.json 34 | clients/Gradio/config.json 35 | clients/Gradio/mcp_servers/sqlite/uv.lock 36 | clients/Gradio/mcp_servers/sqlite/test.db 37 | clients/Gradio/models/moondream-2b-int8.mf 38 | clients/Gradio/models/moondream-0_5b-int8.mf 39 | examples/dynamic_sources/rss_reader/config.json 40 | /clients/Gradio/mcp_servers/pgpt/config.json 41 | examples/sftp_upload_with_id/config_ftp.json 42 | ``` -------------------------------------------------------------------------------- /clients/Gradio/mcp_servers/pgpt/README.md: -------------------------------------------------------------------------------- ```markdown 1 | # mcp-server-pgpt 2 | Model Context Protocol server to access PrivateGPT functionalities 3 | 4 | [](https://www.python.org/downloads/release/python-3120/) 5 | [](https://opensource.org/licenses/MIT) 6 | 7 | ## Demos 8 | 9 | 10 | https://github.com/user-attachments/assets/dc4e377b-4efb-43e6-85fa-93ed852fe21f 11 | 12 | uv sync 13 | 14 | ## Quickstart 15 | 16 | To try this in Claude Desktop app, add this to your claude config files: 17 | 18 | ```json 19 | { 20 | "mcpServers": { 21 | "mcp-server-oracle": { 22 | "command": "uvx", 23 | "args": [ 24 | "mcp-server-oracle" 25 | ], 26 | "env": { 27 | "ORACLE_CONNECTION_STRING": "username/password@hostname:password/service_name" 28 | } 29 | } 30 | } 31 | } 32 | ``` 33 | 34 | ### Prerequisites 35 | 36 | - UV (pacakge manager) 37 | - Python 3.12+ 38 | - Claude Desktop 39 | 40 | ### Installation 41 | 42 | #### Claude Desktop Configuration 43 | 44 | Add the server configuration to your Claude Desktop config file: 45 | 46 | **MacOS**: `~/Library/Application\ Support/Claude/claude_desktop_config.json` 47 | **Windows**: `%APPDATA%/Claude/claude_desktop_config.json` 48 | 49 | 50 | ## Contributing 51 | 52 | 1. Fork the repository from [mcp-server-oracle](https://github.com/hdcola/mcp-server-oracle) 53 | 2. Create your feature branch 54 | 3. Commit your changes 55 | 4. Push to the branch 56 | 5. Open a Pull Request 57 | 58 | ## License 59 | 60 | This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. 61 | ``` -------------------------------------------------------------------------------- /agents/MCP-Client/README.md: -------------------------------------------------------------------------------- ```markdown 1 | 2 | # MCP-Client 3 | 4 | ## Overview 5 | The **MCP Client** is an example Client that uses the PGPT OpenAI-Compatible API (or other providers) and MCP Servers to make use of MCP tools. 6 | 7 | 8 | --- 9 | 10 | ## Features 11 | - **Load Multiple MCP servers** 12 | - **Communicate via Stdio** 13 | - **List tools, and use tools** 14 | 15 | ## Prerequisites 16 | - **Python:** 3.8 or higher 17 | - **Dependencies:** 18 | - **Have the OpenAI Compatible API agent running** 19 | --- 20 | 21 | ## Setup 22 | 1. **Clone the Repository:** 23 | ```bash 24 | git clone https://github.com/pgpt-dev/MCP-Server-for-MAS-Developments.git 25 | cd MCP-Server-for-MAS-Developments 26 | ``` 27 | 28 | 2. **(Optional) Create and Activate a Virtual Environment:** 29 | - **Windows:** 30 | ```bash 31 | python -m venv venv 32 | .\venv\Scripts\activate 33 | ``` 34 | 35 | - **Unix/MacOS:** 36 | ```bash 37 | python -m venv venv 38 | source venv/bin/activate 39 | ``` 40 | 41 | 3. **Install Dependencies:** 42 | ```bash 43 | pip install -r agents/MCP-Client/requirements.txt 44 | ``` 45 | 46 | 4. **Configure the Agent:** 47 | Copy the example configuration file and adjust it to your environment: 48 | 49 | ```bash 50 | cp agents/MCP-Client/.env.example agents/MCP-Client/.env 51 | ``` 52 | 53 | **Example `config.json`:** 54 | 55 | ```env 56 | PGPT_API_KEY = '<your api key>' 57 | PGPT_OAI_BASE_URL = '<PGPT OpenAiCompatible API URL>' 58 | ``` 59 | 60 | 61 | ## Running the Agent 62 | To start the MCP-Client, ensure you're in the repository's root directory and the OAI Agent is running and run: 63 | 64 | ```bash 65 | python -m agents.MCP-Client.Python.mcp_client 66 | ``` 67 | 68 | --- 69 | 70 | 71 | ## License 72 | This project is licensed under the MIT License - see the LICENSE file for details. 73 | ``` -------------------------------------------------------------------------------- /clients/Gradio/mcp_servers/arxiv/README.md: -------------------------------------------------------------------------------- ```markdown 1 | # arXiv MCP Server Integration 2 | 3 | This integration allows you to use the arXiv MCP Server with the Gradio client. The arXiv MCP Server provides tools for searching, downloading, and reading arXiv papers. 4 | 5 | ## Prerequisites 6 | 7 | - Python 3.10 or higher 8 | - Node.js 16 or higher 9 | 10 | ## Installation 11 | 12 | 1. Install the arxiv-mcp-server package: 13 | ```bash 14 | pip install arxiv-mcp-server 15 | ``` 16 | 17 | 2. Make sure the arxiv-stdio.js script is executable: 18 | ```bash 19 | chmod +x arxiv-stdio.js 20 | ``` 21 | 22 | ## Configuration 23 | 24 | Add the arxiv server to your server_config.json file: 25 | 26 | ```json 27 | { 28 | "mcpServers": { 29 | "arxiv": { 30 | "command": "node", 31 | "args": [ 32 | "clients/Gradio/mcp_servers/arxiv/arxiv-stdio.js" 33 | ] 34 | } 35 | } 36 | } 37 | ``` 38 | 39 | ## Available Tools 40 | 41 | The arXiv MCP Server provides the following tools: 42 | 43 | 1. **search_papers**: Search for papers on arXiv 44 | - Parameters: 45 | - query: The search query 46 | - max_results: Maximum number of results to return (default: 10) 47 | 48 | 2. **download_paper**: Download a paper from arXiv 49 | - Parameters: 50 | - paper_id: The arXiv ID of the paper 51 | 52 | 3. **list_papers**: List downloaded papers 53 | - Parameters: None 54 | 55 | 4. **read_paper**: Read a downloaded paper 56 | - Parameters: 57 | - paper_id: The arXiv ID of the paper 58 | 59 | ## Example Usage 60 | 61 | Here are some example prompts to use with the arXiv MCP Server: 62 | 63 | - "Search for papers about large language models" 64 | - "Download the paper with ID 2303.08774" 65 | - "List all downloaded papers" 66 | - "Read the paper with ID 2303.08774" 67 | 68 | ## Troubleshooting 69 | 70 | If you encounter any issues, make sure: 71 | 72 | 1. The arxiv-mcp-server package is installed 73 | 2. The arxiv-stdio.js script is executable 74 | 3. The server_config.json file is correctly configured 75 | 4. You have an active internet connection to access arXiv 76 | ``` -------------------------------------------------------------------------------- /clients/Gradio/README.md: -------------------------------------------------------------------------------- ```markdown 1 | # PrivateGPT Multi-Backend Demo Chat App 2 | 3 | ## Description 4 | This is a small demo demonstrating the usage of both, the VLLM API and the PrivateGPT API via RAG. 5 | Note: This is still under development and might change in the future 6 | --- 7 | 8 | ## Prerequisites 9 | - Python 3.8 or higher 10 | - Access to the PrivateGPT server 11 | - Access to the VLLM API on PrivateGPT 12 | 13 | --- 14 | 15 | ## Setup 16 | 1. **Clone the repository:** 17 | ```bash 18 | git clone [https://github.com/Fujitsu-AI/MCP-Server-for-MAS-Developments.git](https://github.com/Fujitsu-AI/MCP-Server-for-MAS-Developments.git) 19 | cd MCP-Server-for-MAS-Developments/ 20 | ``` 21 | 22 | 2. **Optional: Create and activate a virtual environment:** 23 | ```bash 24 | python -m venv venv 25 | ``` 26 | 27 | - **Windows:** 28 | ```bash 29 | .\venv\Scripts\activate 30 | ``` 31 | 32 | - **Unix/MacOS:** 33 | ```bash 34 | source venv/bin/activate 35 | ``` 36 | 37 | 3. **Install dependencies:** 38 | ```bash 39 | pip install -r .\clients\Gradio\requirements.txt 40 | ``` 41 | 42 | 4. **Customise configuration file:** 43 | 44 | - 4.1 **Configuration for Gradio Client:** 45 | 46 | Copy the `config.json.example` file to `config.json` e.g. with `cp .\clients\Gradio\config.json.example .\clients\Gradio\config.json` 47 | Make sure that the `config.json` is configured correctly and contains all necessary fields. The file should look like this: 48 | ```json 49 | { 50 | "base_url": "https://.../api/v1", 51 | "proxy_user": "", 52 | "proxy_password": "", 53 | "access_header": "", 54 | "vllm_url": "https://.../api/v1", 55 | "vllm_api_key": "", 56 | "language": "en", 57 | "use_public": true 58 | } 59 | 60 | ``` 61 | 62 | 63 | 64 | 5. **Start the UI:** 65 | - 5.1 **Start the multi-backend Gradio Client Demo:** 66 | ```bash 67 | python -m clients.Gradio.main 68 | ``` 69 | 70 | 71 | ## License 72 | This project is licensed under the MIT License - see the LICENSE file for details. ``` -------------------------------------------------------------------------------- /clients/Gradio/mcp_servers/sqlite/README.md: -------------------------------------------------------------------------------- ```markdown 1 | # SQLite MCP Server 2 | 3 | ## Overview 4 | A Model Context Protocol (MCP) server implementation that provides database interaction and business intelligence capabilities through SQLite. This server enables running SQL queries, analyzing business data, and automatically generating business insight memos. 5 | 6 | ## Components 7 | 8 | ### Resources 9 | The server exposes a single dynamic resource: 10 | - `memo://insights`: A continuously updated business insights memo that aggregates discovered insights during analysis 11 | - Auto-updates as new insights are discovered via the append-insight tool 12 | 13 | ### Prompts 14 | The server provides a demonstration prompt: 15 | - `mcp-demo`: Interactive prompt that guides users through database operations 16 | - Required argument: `topic` - The business domain to analyze 17 | - Generates appropriate database schemas and sample data 18 | - Guides users through analysis and insight generation 19 | - Integrates with the business insights memo 20 | 21 | ### Tools 22 | The server offers six core tools: 23 | 24 | #### Query Tools 25 | - `read_query` 26 | - Execute SELECT queries to read data from the database 27 | - Input: 28 | - `query` (string): The SELECT SQL query to execute 29 | - Returns: Query results as array of objects 30 | 31 | - `write_query` 32 | - Execute INSERT, UPDATE, or DELETE queries 33 | - Input: 34 | - `query` (string): The SQL modification query 35 | - Returns: `{ affected_rows: number }` 36 | 37 | - `create_table` 38 | - Create new tables in the database 39 | - Input: 40 | - `query` (string): CREATE TABLE SQL statement 41 | - Returns: Confirmation of table creation 42 | 43 | #### Schema Tools 44 | - `list_tables` 45 | - Get a list of all tables in the database 46 | - No input required 47 | - Returns: Array of table names 48 | 49 | - `describe-table` 50 | - View schema information for a specific table 51 | - Input: 52 | - `table_name` (string): Name of table to describe 53 | - Returns: Array of column definitions with names and types 54 | 55 | #### Analysis Tools 56 | - `append_insight` 57 | - Add new business insights to the memo resource 58 | - Input: 59 | - `insight` (string): Business insight discovered from data analysis 60 | - Returns: Confirmation of insight addition 61 | - Triggers update of memo://insights resource 62 | 63 | 64 | ## Usage with Claude Desktop 65 | 66 | ### uv 67 | 68 | ```bash 69 | # Add the server to your claude_desktop_config.json 70 | "mcpServers": { 71 | "sqlite": { 72 | "command": "uv", 73 | "args": [ 74 | "--directory", 75 | "parent_of_servers_repo/servers/src/sqlite", 76 | "run", 77 | "mcp-server-sqlite", 78 | "--db-path", 79 | "~/test.db" 80 | ] 81 | } 82 | } 83 | ``` 84 | 85 | ### Docker 86 | 87 | ```json 88 | # Add the server to your claude_desktop_config.json 89 | "mcpServers": { 90 | "sqlite": { 91 | "command": "docker", 92 | "args": [ 93 | "run", 94 | "--rm", 95 | "-i", 96 | "-v", 97 | "mcp-test:/mcp", 98 | "mcp/sqlite", 99 | "--db-path", 100 | "/mcp/test.db" 101 | ] 102 | } 103 | } 104 | ``` 105 | 106 | ## Building 107 | 108 | Docker: 109 | 110 | ```bash 111 | docker build -t mcp/sqlite . 112 | ``` 113 | 114 | ## License 115 | 116 | This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository. 117 | ``` -------------------------------------------------------------------------------- /agents/IoTAgent/README.md: -------------------------------------------------------------------------------- ```markdown 1 | # Fujitsu PrivateGPT MQTT IoT Agent 2 | The **IoT MQTT Agent** is a Python application that connects to an MQTT broker, processes vehicle data, and logs messages as JSON records. In addition, it communicates with a Chatbot Agent to generate human-readable, logical sentences from raw data. This communication is performed using the standardized FIPA ACL (Agent Communication Language) protocol, ensuring interoperability in multi-agent environments. 3 | 4 | --- 5 | 6 | ## Features 7 | - **MQTT Communication:** 8 | Connects to an MQTT broker to subscribe to topics and receive vehicle data. 9 | 10 | - **Data Logging:** 11 | Records incoming messages as JSON records with timestamps, vehicle details, and parameter values. Data is saved locally and rotated based on file size limits. 12 | 13 | - **Multi-Language Support:** 14 | Processes messages in multiple languages (e.g., German and English) and stores generated sentences accordingly. 15 | 16 | - **Chatbot Agent Integration:** 17 | Utilizes a Chatbot Agent to generate logical sentences from incoming MQTT data. The request to the Chatbot Agent is structured as a FIPA ACL message. 18 | 19 | - **FIPA ACL Standard:** 20 | The agent leverages FIPA ACL for structured multi-agent communication. Each message includes standardized fields such as: 21 | - **Performative:** (`request` or `failure`) 22 | - **Sender:** (`IoT_MQTT_Agent`) 23 | - **Receiver:** (`Chatbot_Agent`) 24 | - **Language:** (`fipa-sl`) 25 | - **Ontology:** (`fujitsu-iot-ontology`) 26 | - **Content:** (The JSON parameters used to generate a logical sentence) 27 | 28 | - **SFTP File Transfer:** 29 | When log files exceed a size threshold, they are automatically uploaded to a remote SFTP server, connected to Private GPT bulk upload services, and archived locally. 30 | 31 | --- 32 | 33 | ## How It Works 34 | 1. **Configuration Loading:** 35 | The agent loads its settings from a JSON configuration file (default: `pgpt_iot_agent.json`), which includes details for MQTT, SFTP, file handling, and the Chatbot Agent. 36 | 37 | 2. **MQTT Subscription:** 38 | Once connected to the MQTT broker, the agent subscribes to a pre-defined topic to receive data from vehicles. 39 | 40 | 3. **Message Processing & Logging:** 41 | Incoming MQTT messages are parsed, timestamped, and saved locally as JSON records. Additionally, the agent displays and logs these records. 42 | 43 | 4. **Interpreting Data via the Chatbot Agent:** 44 | - The agent prepares a prompt based on the received data. 45 | - It then sends a **FIPA ACL** request to the Chatbot Agent with the necessary details. 46 | - If the Chatbot Agent returns a failure (e.g., due to a connectivity issue), the IoT Agent waits and retries the request until a successful response is received. 47 | - Upon receiving an OK response, the agent logs the generated sentence and saves it to a language-specific text file. 48 | 49 | 5. **File Management:** 50 | Files are automatically rotated when they reach a configured size limit, ensuring continuous logging without manual intervention. 51 | 52 | --- 53 | 54 | ## Requirements 55 | - **Python 3.x** 56 | 57 | - **Python Libraries:** 58 | The required libraries are listed in `requirements.txt` and include: 59 | - `paho-mqtt` 60 | - `paramiko` 61 | - `requests` 62 | - Plus standard libraries such as `json`, `logging`, `datetime`, etc. 63 | 64 | --- 65 | 66 | ## License 67 | This project is licensed under the MIT License - see the LICENSE file for details. ``` -------------------------------------------------------------------------------- /clients/Gradio/mcp_servers/filesystem/README.md: -------------------------------------------------------------------------------- ```markdown 1 | # Filesystem MCP Server 2 | 3 | Node.js server implementing Model Context Protocol (MCP) for filesystem operations. 4 | 5 | ## Features 6 | 7 | - Read/write files 8 | - Create/list/delete directories 9 | - Move files/directories 10 | - Search files 11 | - Get file metadata 12 | 13 | **Note**: The server will only allow operations within directories specified via `args`. 14 | 15 | ## API 16 | 17 | ### Resources 18 | 19 | - `file://system`: File system operations interface 20 | 21 | ### Tools 22 | 23 | - **read_file** 24 | - Read complete contents of a file 25 | - Input: `path` (string) 26 | - Reads complete file contents with UTF-8 encoding 27 | 28 | - **read_multiple_files** 29 | - Read multiple files simultaneously 30 | - Input: `paths` (string[]) 31 | - Failed reads won't stop the entire operation 32 | 33 | - **write_file** 34 | - Create new file or overwrite existing (exercise caution with this) 35 | - Inputs: 36 | - `path` (string): File location 37 | - `content` (string): File content 38 | 39 | - **edit_file** 40 | - Make selective edits using advanced pattern matching and formatting 41 | - Features: 42 | - Line-based and multi-line content matching 43 | - Whitespace normalization with indentation preservation 44 | - Fuzzy matching with confidence scoring 45 | - Multiple simultaneous edits with correct positioning 46 | - Indentation style detection and preservation 47 | - Git-style diff output with context 48 | - Preview changes with dry run mode 49 | - Failed match debugging with confidence scores 50 | - Inputs: 51 | - `path` (string): File to edit 52 | - `edits` (array): List of edit operations 53 | - `oldText` (string): Text to search for (can be substring) 54 | - `newText` (string): Text to replace with 55 | - `dryRun` (boolean): Preview changes without applying (default: false) 56 | - `options` (object): Optional formatting settings 57 | - `preserveIndentation` (boolean): Keep existing indentation (default: true) 58 | - `normalizeWhitespace` (boolean): Normalize spaces while preserving structure (default: true) 59 | - `partialMatch` (boolean): Enable fuzzy matching (default: true) 60 | - Returns detailed diff and match information for dry runs, otherwise applies changes 61 | - Best Practice: Always use dryRun first to preview changes before applying them 62 | 63 | - **create_directory** 64 | - Create new directory or ensure it exists 65 | - Input: `path` (string) 66 | - Creates parent directories if needed 67 | - Succeeds silently if directory exists 68 | 69 | - **list_directory** 70 | - List directory contents with [FILE] or [DIR] prefixes 71 | - Input: `path` (string) 72 | 73 | - **move_file** 74 | - Move or rename files and directories 75 | - Inputs: 76 | - `source` (string) 77 | - `destination` (string) 78 | - Fails if destination exists 79 | 80 | - **search_files** 81 | - Recursively search for files/directories 82 | - Inputs: 83 | - `path` (string): Starting directory 84 | - `pattern` (string): Search pattern 85 | - `excludePatterns` (string[]): Exclude any patterns. Glob formats are supported. 86 | - Case-insensitive matching 87 | - Returns full paths to matches 88 | 89 | - **get_file_info** 90 | - Get detailed file/directory metadata 91 | - Input: `path` (string) 92 | - Returns: 93 | - Size 94 | - Creation time 95 | - Modified time 96 | - Access time 97 | - Type (file/directory) 98 | - Permissions 99 | 100 | - **list_allowed_directories** 101 | - List all directories the server is allowed to access 102 | - No input required 103 | - Returns: 104 | - Directories that this server can read/write from 105 | 106 | ## Usage with Claude Desktop 107 | Add this to your `claude_desktop_config.json`: 108 | 109 | Note: you can provide sandboxed directories to the server by mounting them to `/projects`. Adding the `ro` flag will make the directory readonly by the server. 110 | 111 | ### Docker 112 | Note: all directories must be mounted to `/projects` by default. 113 | 114 | ```json 115 | { 116 | "mcpServers": { 117 | "filesystem": { 118 | "command": "docker", 119 | "args": [ 120 | "run", 121 | "-i", 122 | "--rm", 123 | "--mount", "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop", 124 | "--mount", "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro", 125 | "--mount", "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt", 126 | "mcp/filesystem", 127 | "/projects" 128 | ] 129 | } 130 | } 131 | } 132 | ``` 133 | 134 | ### NPX 135 | 136 | ```json 137 | { 138 | "mcpServers": { 139 | "filesystem": { 140 | "command": "npx", 141 | "args": [ 142 | "-y", 143 | "@modelcontextprotocol/server-filesystem", 144 | "/Users/username/Desktop", 145 | "/path/to/other/allowed/dir" 146 | ] 147 | } 148 | } 149 | } 150 | ``` 151 | 152 | ## Build 153 | 154 | Docker build: 155 | 156 | ```bash 157 | docker build -t mcp/filesystem -f src/filesystem/Dockerfile . 158 | ``` 159 | 160 | ## License 161 | 162 | This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository. 163 | ``` -------------------------------------------------------------------------------- /agents/OpenAI_Compatible_API_Agent/README.md: -------------------------------------------------------------------------------- ```markdown 1 | # PrivateGPT OpenAI-Compatible API Agent 2 | 3 | ## Description 4 | The PrivateGPT OpenAI-Compatible API Agent is a client that communicates with a private GPT server and provides an interface to openai-compatible libraries and tools. 5 | It comes in two variations. Variation 1 (*openai_compatible_api.py*) uses the PrivateGPT API directly, Variation 2 (*openai_mcp_api.py*) uses communicates through the PrivateGPT MCP Server. 6 | 7 | --- 8 | 9 | ## Prerequisites 10 | - Python 3.8 or higher 11 | - Access to the PrivateGPT server 12 | - For Variation 2, access to MCP server 13 | 14 | --- 15 | 16 | ## Setup 17 | 1. **Clone the repository:** 18 | ```bash 19 | git clone [https://github.com/Fujitsu-AI/MCP-Server-for-MAS-Developments.git](https://github.com/Fujitsu-AI/MCP-Server-for-MAS-Developments.git) 20 | cd MCP-Server-for-MAS-Developments 21 | ``` 22 | 23 | 2. **Optional: Create and activate a virtual environment:** 24 | ```bash 25 | python -m venv venv 26 | ``` 27 | 28 | - **Windows:** 29 | ```bash 30 | .\venv\Scripts\activate 31 | ``` 32 | 33 | - **Unix/MacOS:** 34 | ```bash 35 | source venv/bin/activate 36 | ``` 37 | 38 | 3. **Install dependencies:** 39 | ```bash 40 | pip install -r .\agents\OpenAI_Compatible_API_Agent\requirements.txt 41 | ``` 42 | 43 | 4. **Customise configuration file:** 44 | 45 | - 4.1 **OpenAI-Compatible API via PrivateGPT API:** 46 | 47 | Copy the `pgpt_api_proxy.json.example` file to `pgpt_api_proxy.json` e.g. with `cp .\agents\OpenAI_Compatible_API_Agent\pgpt_api_proxy.json.example .\agents\OpenAI_Compatible_API_Agent\pgpt_api_proxy.json` 48 | Make sure that the `pgpt_api_proxy.json` is configured correctly and contains all necessary fields. The file should look like this: 49 | ```json 50 | { 51 | "base_url": "<Url to your private GPT instance>", 52 | "proxy_user": "<Proxy User>", 53 | "proxy_password": "<Proxy Password>", 54 | "access_header": "<Access Header>", 55 | "groups": ["<Groups to access>"], 56 | "language": "en", 57 | "use_public": true, 58 | "api_ip": "0.0.0.0", 59 | "api_port": 8001, 60 | "whitelist_keys": [] 61 | } 62 | ``` 63 | - 4.2 **OpenAI-Compatible API via MCP Server:** 64 | 65 | Copy the `pgpt_openai_api_mcp.json.example` file to `pgpt_openai_api_mcp.json` e.g. with `cp .\pgpt_openai_api_mcp.json.example .\pgpt_openai_api_mcp.json` 66 | Make sure that the `pgpt_openai_api_mcp.json` is configured correctly and contains all necessary fields. The file should look like this: 67 | ```json 68 | { 69 | "email": "<Your PrivateGPT account>", 70 | "password": "<Your PrivateGPT password>", 71 | "groups": ["<Groups to access>"], 72 | "language": "en", 73 | "api_ip": "0.0.0.0", 74 | "api_port": 8002, 75 | "whitelist_keys": [], 76 | "mcp_server": { 77 | "host": "127.0.0.1", 78 | "port": 5000 79 | } 80 | } 81 | ``` 82 | 83 | 84 | 5. **Start the AI agents:** 85 | - 5.1 **Start the OpenAI-compatible API agent that uses the PrivateGPT API directly:** 86 | ```bash 87 | python -m agents.OpenAI_Compatible_API_Agent.Python.openai_compatible_api 88 | ``` 89 | 90 | - 5.2 **Start the OpenAI-compatible API agent that uses the MCP server to communicate:** 91 | ```bash 92 | python -m agents.OpenAI_Compatible_API_Agent.Python.openai_mcp_api 93 | ``` 94 | - 5.3 **In order to run the OpenAI Compatible Agent with Docker:** 95 | Make sure Docker is installed on your System. 96 | ```bash 97 | cd agents\OpenAI_Compatible_API_Agent 98 | ``` 99 | To build and run Docker in Foreground: 100 | ```bash 101 | docker compose up --build 102 | ``` 103 | To build and run Docker in Background: 104 | ```bash 105 | docker compose up --build -d 106 | ``` 107 | 108 | 109 | 110 | 6. **Generate API key** 111 | Generate a key with the following command: 112 | ```bash 113 | python -m agents.OpenAI_Compatible_API_Agent.Python.generate_api_key --email "<PrivateGPT account>" --password "<PrivateGPT Password>" 114 | ``` 115 | This API key can be used for OpenAI compatible Clients. Make sure you either enter it to the config under whitelist_keys (see 4.1 and 4.2) or whitelist_keys is empty (no check, but prone to errors) 116 | --- 117 | 118 | ## Utilisation 119 | - **Use libraries (like litellm, ollama, smolagents) or tools (like Msty) to use PrivateGPT with the OpenAI API interface:** 120 | 121 | Some example usages for external tools: 122 | 123 | - Usage in Msty: 124 | - To use the API in MSTY, add a remote server and add "<http://ip:port>" and your API key 125 | 126 | - Usage in Continue: 127 | - To use the API in Continue (Visual Studio/Pycharm Plugin) add this to your config: 128 | ```json 129 | { 130 | "model": "privategpt", 131 | "title": "PrivateGPT", 132 | "systemMessage": "You are an expert software developer. You give helpful and concise responses.", 133 | "apiKey": "<your-api-key>", 134 | "apiBase": "http://<ip:port>", 135 | "provider": "openai" 136 | } 137 | ``` 138 | 139 | - Usage with OpenAI Library: 140 | - See openai_test_client.py for an example. 141 | --- 142 | 143 | ## License 144 | This project is licensed under the MIT License - see the LICENSE file for details. ``` -------------------------------------------------------------------------------- /agents/ChatBotAgent/README.md: -------------------------------------------------------------------------------- ```markdown 1 | 2 | # PrivateGPT ChatBot Agent 3 | 4 | ## Overview 5 | The **PrivateGPT ChatBot Agent** is a crucial component of the Fujitsu PrivateGPT multi-agent system. It acts as a client that communicates with a private GPT server to respond to queries and provide information. This agent leverages both local knowledge databases and server-based responses, employing **FIPA ACL (Agent Communication Language)** to standardize communications within the system. 6 | 7 | --- 8 | 9 | ## Features 10 | - **Multi-Agent Communication via FIPA ACL:** 11 | - Handles structured messages with standardized fields such as `performative`, `sender`, `receiver`, `ontology`, and `content`. 12 | - Sends FIPA ACL failure messages if a connection to the MCP server cannot be established. 13 | 14 | - **Production WSGI Servers: Waitress & Gunicorn:** 15 | - Manages RESTful endpoints (e.g., `/ask`, `/logs`, `/status`) using Flask. 16 | - Uses Waitress for serving requests in Windows environments and Gunicorn for Unix-based systems, ensuring readiness for production environments. 17 | - Implements Cross-Origin Resource Sharing (CORS) to allow requests from any domain (`origins: "*"`) for broad compatibility. 18 | 19 | - **Authentication:** 20 | - All endpoints, except for `OPTIONS` and `/status`, require an API key sent via the `X-API-KEY` header. 21 | 22 | - **MCP Server Connectivity:** 23 | - Ensures connectivity to the MCP server (as defined in `config.json`) is validated before processing requests. 24 | 25 | - **Logging:** 26 | - Maintains detailed logs for both the agent operations (`agent.log`) and the Flask server (`flask.log`). 27 | 28 | ## Prerequisites 29 | - **Python:** Version 3.8 or higher 30 | - **Dependencies:** 31 | Install the required packages listed in the corresponding `requirements.txt` which includes Flask, waitress (for Windows), gunicorn (for Unix-based systems), flask-cors, paho-mqtt, paramiko, etc. 32 | 33 | --- 34 | 35 | ## Setup 36 | 1. **Clone the Repository:** 37 | ```bash 38 | git clone https://github.com/pgpt-dev/MCP-Server-for-MAS-Developments.git 39 | cd MCP-Server-for-MAS-Developments 40 | ``` 41 | 42 | 2. **(Optional) Create and Activate a Virtual Environment:** 43 | - **Windows:** 44 | ```bash 45 | python -m venv venv 46 | .\venv\Scripts\activate 47 | ``` 48 | - **Unix/MacOS:** 49 | ```bash 50 | python -m venv venv 51 | source venv/bin/activate 52 | ``` 53 | 54 | 3. **Install Dependencies:** 55 | ```bash 56 | pip install -r agents/ChatBotAgent/requirements.txt 57 | ``` 58 | 59 | 4. **Configure the Agent:** 60 | Copy the example configuration file and adjust it according to your environment: 61 | 62 | ```bash 63 | cp agents/ChatBotAgent/config.json.example agents/ChatBotAgent/config.json 64 | ``` 65 | 66 | **Example `config.json`:** 67 | 68 | ```json 69 | { 70 | "email": "<YOUR EMAIL>", 71 | "password": "<YOUR PASSWORD>", 72 | "api_ip": "0.0.0.0", 73 | "api_port": 5001, 74 | "api_key": "<YOUR_API_KEY>", 75 | "mcp_server": { 76 | "host": "172.24.123.123", 77 | "port": 5000 78 | }, 79 | "language": "en", 80 | "groups": ["<Your Group>"] 81 | } 82 | ``` 83 | 84 | **Note:** All sensitive parameters, such as `email` and `password`, should be securely stored and managed. 85 | 86 | ## Running the Agent 87 | - **Using Waitress (Windows):** 88 | To start the ChatBot Agent, ensure you are in the repository's root directory and execute: 89 | 90 | ```bash 91 | python -m agents.ChatBotAgent.Python.chatbot_agent 92 | ``` 93 | 94 | - **Using Gunicorn (Unix-based systems):** 95 | To start the application using Gunicorn, run the following command: 96 | 97 | ```bash 98 | gunicorn -w 4 -b 0.0.0.0:5001 agents.ChatBotAgent.Python.chatbot_agent:app 99 | ``` 100 | 101 | This command launches the Flask API server using Gunicorn on the configured `api_ip` and `api_port` and uses multiple workers to handle requests efficiently. The `fcntl` package is needed to run this under Linux, use `pip` to install it. 102 | 103 | --- 104 | 105 | ## API Endpoints 106 | 107 | ### `/ask` (POST) 108 | - **Purpose:** 109 | Accepts questions for the ChatBot Agent. This endpoint supports both a **FIPA ACL** structured message and a legacy JSON format. 110 | 111 | - **Authentication:** 112 | Requires the `X-API-KEY` header with the correct API key. 113 | 114 | - **FIPA ACL Request Example:** 115 | 116 | ```json 117 | { 118 | "performative": "request", 119 | "sender": "IoT_MQTT_Agent", 120 | "receiver": "Chatbot_Agent", 121 | "ontology": "fujitsu-iot-ontology", 122 | "content": { 123 | "question": "What is the system status?", 124 | "usePublic": false, 125 | "groups": ["group1"], 126 | "language": "en" 127 | } 128 | } 129 | ``` 130 | 131 | - **Legacy JSON Request Example:** 132 | 133 | ```json 134 | { 135 | "question": "What is the system status?", 136 | "usePublic": false, 137 | "groups": ["group1"], 138 | "language": "en" 139 | } 140 | ``` 141 | 142 | - **Response:** 143 | Returns a JSON object containing the answer generated by the PrivateGPT server. If the MCP server connection fails, a FIPA ACL failure message is returned. 144 | 145 | ### `/logs` (GET) 146 | - **Purpose:** 147 | Provides access to the Flask server's log file (`flask.log`) for debugging and monitoring purposes. 148 | 149 | ### `/status` (GET) 150 | - **Purpose:** 151 | Outputs a simple JSON message confirming that the agent is operational. This endpoint does **not** require authentication. 152 | 153 | --- 154 | 155 | ## Multi-Agent Communication & FIPA ACL 156 | The ChatBot Agent utilizes **FIPA ACL** to structure its communications with other agents, ensuring reliable interactions within a multi-agent system. It provides standardized message fields for consistency and effective communication. 157 | 158 | --- 159 | 160 | ## Logging & Debugging 161 | - **Agent Logs:** 162 | Key events, errors, and status updates are logged in `agent.log`. 163 | 164 | - **Flask Logs:** 165 | Logs specific to the Flask server are stored in `flask.log`. 166 | 167 | These logs are critical for troubleshooting and provide insights into the agent's operation. 168 | 169 | --- 170 | 171 | ## Example Conversation 172 | ```plaintext 173 | 🎉 Welcome to the PrivateGPT ChatBot Agent. 174 | You: What is your name? 175 | Agent: I am the PrivateGPT ChatBot Agent. 176 | You: Provide system status. 177 | Agent: The system is running normally. 178 | ``` 179 | 180 | --- 181 | 182 | 183 | ``` -------------------------------------------------------------------------------- /agents/AgentMonitoring/README.md: -------------------------------------------------------------------------------- ```markdown 1 | # README 2 | 3 | ## Overview 4 | To monitor the three different **agents**, each providing Prometheus metrics so they can be monitored in **Prometheus** and visualized in **Grafana**: 5 | 6 | 1. **OpenAI-Compatible API Agent** 7 | - By default runs on **port 7777** and serves `/metrics`. 8 | 2. **Chatbot Agent** 9 | - Runs on **port 5001** (by default), and also exposes `/metrics` (or configurable via JSON). 10 | 3. **IoT MQTT Agent** 11 | - Runs on a **Prometheus port** specified in its JSON config (e.g., `9101`), providing `/metrics` via a custom WSGI server. 12 | 13 | ### Requirements 14 | - Install each agent’s dependencies (e.g., via `pip install -r requirements.txt`), including the **`prometheus_client`** library.hon 3.8+** is 15 | - You need **Prometheus** and **Grafana** set up to ingest and display these metrics. 16 | 17 | --- 18 | 19 | ## 1. OpenAI-Compatible API Agent 20 | - By default, runs on **port 7777**. 21 | - `/metrics` will be served at **`http://<host>:7777/metrics`**. 22 | 23 | ### How to Start 24 | Switch to the agent’s directory and start the agent as desribed in the agent's `README.md` 25 | 26 | You should see in the logs something like: 27 | ``` 28 | Starting API on http://0.0.0.0:7777 29 | Starting Prometheus metrics server on port 7777... 30 | ``` 31 | 32 | ### Metrics 33 | - Typical metrics might include: 34 | - `request_count{method,endpoint}` 35 | - `request_latency_seconds{method,endpoint}` 36 | - `chat_completion_count` 37 | - `completion_count` 38 | - etc. 39 | 40 | **Note:** Search and select the metrics that suit you in the Grafana dashboard. 41 | 42 | --- 43 | 44 | ## 2. Chatbot Agent 45 | - Runs on **port 5001** by default. 46 | - Also serves Prometheus metrics under **`http://<host>:5001/metrics`** (or whichever port is in use). 47 | 48 | ### How to Start 49 | Switch to the agent’s directory and start the agent as desribed in the agent's `README.md` 50 | 51 | You’ll see logs like: 52 | ``` 53 | Starting API server on 0.0.0.0:5001 54 | Starting Prometheus WSGI server on port 5001... 55 | ``` 56 | Then `/metrics` is accessible. 57 | 58 | ### Metrics 59 | - Common metrics: 60 | - `request_count` / `request_latency_seconds` 61 | - `agent_ask_count` 62 | - etc. 63 | 64 | **Note:** Search and select the metrics that suit you in the Grafana dashboard. 65 | 66 | --- 67 | 68 | ## 3. IoT MQTT Agent 69 | - Reads a **port** from its JSON config (`pgpt_iot_agent.json`), e.g.: 70 | 71 | ```json 72 | { 73 | "metrics": { 74 | "port": 9101 75 | } 76 | ... 77 | } 78 | ``` 79 | 80 | - The agent starts a small WSGI server on `metrics.port` and exposes `/metrics`. 81 | 82 | ### How to Start 83 | Switch to the agent’s directory and start the agent as desribed in the agent's `README.md` 84 | 85 | Logs should show: 86 | ``` 87 | Starting Prometheus WSGI server on port 9101... 88 | ``` 89 | Hence `http://<host>:9101/metrics` gives the metrics. 90 | 91 | ### Metrics 92 | - For example: 93 | - `mqtt_message_count` (number of MQTT messages received) 94 | - `mqtt_message_latency_seconds` (histogram measuring processing latency) 95 | 96 | **Note:** Search and select the metrics that suit you in the Grafana dashboard. 97 | 98 | --- 99 | 100 | ## 4. Prometheus Configuration 101 | To let Prometheus scrape these metrics, add **targets** for all three agents in your `prometheus.yml`. For example: 102 | 103 | ```yaml 104 | global: 105 | scrape_interval: 15s 106 | evaluation_interval: 15s 107 | 108 | scrape_configs: 109 | 110 | # 1) OpenAI-Compatible API Agent 111 | - job_name: "openai_compatible_agent" 112 | scrape_interval: 5s 113 | static_configs: 114 | - targets: 115 | - "192.168.123.123:7777" # your openai compatible API agent ip and port 116 | 117 | # 2) Chatbot Agent 118 | - job_name: "chatbot_agent" 119 | scrape_interval: 5s 120 | static_configs: 121 | - targets: 122 | - "192.168.123.123:5001" # your chatbot ip and port 123 | 124 | # 3) IoT MQTT Agent 125 | - job_name: "iot_mqtt_agent" 126 | scrape_interval: 5s 127 | static_configs: 128 | - targets: 129 | - "192.168.123.123:9101" # your IoT agent ip and port 130 | ``` 131 | 132 | > Change **`192.168.123.123`** to your actual IP or hostname; use `localhost` (`127.0.0.1`) if everything is local. 133 | > And verify the ports: 134 | > - **`7777`** (OpenAI-Compatible) 135 | > - **`5001`** (Chatbot) 136 | > - **`9101`** (IoT) 137 | 138 | Once Prometheus is running (e.g., via Docker or binary), navigate to `http://<prometheus-host>:9090/targets` and confirm all three jobs appear and show **UP**: 139 | 140 |  141 | 142 | --- 143 | 144 | ## 5. Grafana Dashboards 145 | This repo provides **Grafana Dashboard JSON** files for each agent. You can import them to visualize the metrics. 146 | 147 | ### A) OpenAI-Compatible API Agent Dashboard 148 | - File: `OpenAI compatible API - Agent Dashboard Example - Grafana.json` (example) 149 | - Contains panels such as: 150 | - *Request Count (rate)* 151 | - *Request Latency (p95)* 152 | - *Chat Completion Count* 153 | - and more. 154 | 155 | #### Import Procedure 156 | 1. In Grafana: **Dashboards** → **Import**. 157 | 2. Paste the JSON from `OpenAI compatible API - Agent Dashboard Example - Grafana.json`. 158 | 3. Select your **Prometheus** data source. 159 | 4. Click **Import**. 160 | 161 | ### B) Chatbot Agent Dashboard 162 | - File: `ChatBot-Agent Dashboard Example - Grafana.json`. 163 | - Shows metrics such as `agent_ask_count`, `request_latency_seconds`, etc. 164 | 165 | #### Import Steps 166 | 1. Go to Grafana → **Import**. 167 | 2. Paste the JSON content. 168 | 3. Select your Prometheus data source. 169 | 4. Save the dashboard. 170 | 171 | Example below: 172 | 173 |  174 | 175 | ### C) IoT MQTT Agent Dashboard 176 | - File: `IoT-Agent Dashboard Example - Grafana.json`. 177 | - Example panels: 178 | - Rate of MQTT messages (`rate(mqtt_message_count[1m])`) 179 | - Total MQTT messages 180 | - Latencies (e.g., 95th percentile for `mqtt_message_latency_seconds_bucket`) 181 | 182 | #### Import Steps 183 | Identical approach: 184 | 1. **Dashboards** → **Import**. 185 | 2. Paste JSON from `IoT-Agent Dashboard Example - Grafana.json`. 186 | 3. Pick **Prometheus** as the data source. 187 | 188 | --- 189 | 190 | ## 6. Parameters to Adjust 191 | 1. **Agent Ports** 192 | - Update ports in the respective JSON configs or Python code to avoid port collisions. 193 | - Defaults: 194 | - **OpenAI-Compatible**: `7777` 195 | - **Chatbot**: `5001` 196 | - **IoT**: `9101` (via `metrics.port` in JSON) 197 | 198 | 2. **Prometheus `prometheus.yml`** 199 | - Change the **targets** to match your IP addresses/ports. 200 | - Adjust `scrape_interval` if needed (default is 15s). 201 | 202 | 3. **Grafana** 203 | - When importing each JSON, make sure to choose **the correct Prometheus data source** if you have multiple. 204 | - If panels show “No data,” double-check that Prometheus is indeed scraping the relevant metrics. 205 | 206 | --- 207 | 208 | ## 7. Troubleshooting 209 | - **“No data”** in Grafana: 210 | - Check Prometheus at `/targets` to see if the jobs are **UP**. 211 | - Check Prometheus’s expression browser for the metrics (e.g., `mqtt_message_count`). 212 | - **Port collisions**: 213 | - If `7777`, `5001`, `9101` are already in use, adjust them in code/JSON. 214 | - **Authentication errors**: 215 | - If the agent has an API key for `/metrics`, you may need to disable that or specifically allow `/metrics` to be unauthenticated. 216 | - **Docker environment**: 217 | - Ensure you map the correct ports (e.g., `-p 5001:5001`) and use the correct IP addresses. 218 | 219 | --- 220 | 221 | ## Conclusion 222 | With these three agents, you can gather both **LLM-related** (OpenAI-Compatible & Chatbot) and **IoT-related** (MQTT agent) metrics in **Prometheus**, then visualize everything in **Grafana** using the provided dashboards. Enjoy your fully monitored environment! ``` -------------------------------------------------------------------------------- /clients/Go/README.md: -------------------------------------------------------------------------------- ```markdown 1 | # MCP Client Examples (Go) 2 | This repository contains examples for interacting with the MCP server using **Go**. Each console application demonstrates a specific operation and its corresponding server interaction. 3 | 4 | ## Main Menu 5 | Choose an operation from the list below. Each example demonstrates a specific server interaction. 6 | 7 | ### 1. Authentication 8 | [1.1 Login User](#10-mcploginclient) 9 | [1.2 Logout User](#12-mcplogoutclient) 10 | 11 | ### 2. Chat Operations 12 | [2.1 Start a New Chat](#20-mcpchatclient) 13 | [2.2 Continue a Chat Session](#21-mcpcontinuechatclient) 14 | [2.3 Retrieve Chat Info](#22-mcpgetchatinfoClient) 15 | 16 | ### 3. Source Management 17 | [3.1 Create a New Source](#30-mcpcreatesourceclient) 18 | [3.2 Retrieve Source Details](#31-mcpgetsourceclient) 19 | [3.3 List All Sources in a Group](#32-mcplistsourcesclient) 20 | [3.4 Edit an Existing Source](#33-mcpeditsourceclient) 21 | [3.5 Delete a Source](#34-mcpdeletesourceclient) 22 | 23 | ### 4. Group Management 24 | [4.1 List All Groups](#40-mcplistgroupsclient) 25 | [4.2 Create/Update a Group](#41-mcpstoregroupclient) 26 | [4.3 Delete a Group](#42-mcpdeletegroupclient) 27 | 28 | ### 5. User Management 29 | [5.1 Create/Update a User](#50-mcpstoreuserclient) 30 | [5.2 Edit User Details](#51-mcpedituserclient) 31 | [5.3 Delete a User](#52-mcpdeleteuserclient) 32 | 33 | --- 34 | 35 | 36 | ### 1.0 MCPLoginClient 37 | - **Purpose**: Handles user authentication by sending login requests to the MCP server. 38 | 39 | - **Main Features**: 40 | - Sends a `login` command to the server with user credentials. 41 | - Handles JSON-based requests and parses the server's response. 42 | 43 | - **Key Arguments**: 44 | - `--server-ip`: IP address of the MCP server. 45 | - `--server-port`: Port number of the MCP server. 46 | - `--email`: User email for authentication. 47 | - `--password`: User password for authentication. 48 | 49 | - **Usage Example**: 50 | ```bash 51 | MCPLoginClient.exe --server-ip 127.0.0.1 --server-port 1234 --email [email protected] --password secret 52 | ``` 53 | 54 | ### 1.2 MCPLogoutClient 55 | - **Purpose**: Logs out an authenticated user by invalidating their session token. 56 | 57 | - **Main Features**: 58 | - Sends a `logout` command to the server. 59 | - Invalidates the token provided in the request. 60 | 61 | - **Key Arguments**: 62 | - `--server-ip`: IP address of the MCP server. 63 | - `--server-port`: Port number of the MCP server. 64 | - `--token`: Authentication token to be invalidated. 65 | 66 | - **Usage Example**: 67 | ```bash 68 | MCPLogoutClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken 69 | ``` 70 | 71 | --- 72 | 73 | ### 2.0 MCPChatClient 74 | - **Purpose**: Initiates a new chat session with the MCP server. 75 | 76 | - **Main Features**: 77 | - Sends a `chat` command to the server with a question. 78 | - Supports optional parameters for public chats, groups, and language. 79 | 80 | - **Key Arguments**: 81 | - `--server-ip`: IP address of the MCP server. 82 | - `--server-port`: Port number of the MCP server. 83 | - `--token`: Authentication token. 84 | - `--question`: Initial question for the chat session. 85 | - `--use-public`: Optional flag for public chat. 86 | - `--groups`: Optional group list. 87 | - `--language`: Optional language parameter. 88 | 89 | - **Usage Example**: 90 | ```bash 91 | MCPChatClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --question "Hello World" --use-public --groups "devops,hr" --language en 92 | ``` 93 | 94 | ### 2.1 MCPContinueChatClient 95 | - **Purpose**: Continues an existing chat session by sending follow-up messages. 96 | 97 | - **Main Features**: 98 | - Sends a `continue_chat` command to the server. 99 | - Provides the conversation ID and follow-up message. 100 | 101 | - **Key Arguments**: 102 | - `--server-ip`: IP address of the MCP server. 103 | - `--server-port`: Port number of the MCP server. 104 | - `--token`: Authentication token. 105 | - `--conversation-id`: ID of the conversation to continue. 106 | - `--message`: Follow-up message. 107 | 108 | - **Usage Example**: 109 | ```bash 110 | MCPContinueChatClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --conversation-id 12345 --message "Can you provide an update?" 111 | ``` 112 | 113 | ### 2.2 MCPGetChatInfoClient 114 | - **Purpose**: Retrieves metadata and status information about an existing chat session. 115 | 116 | - **Main Features**: 117 | - Sends a `get_chat_info` command to the server. 118 | - Extracts and displays information about the chat session. 119 | 120 | - **Key Arguments**: 121 | - `--server-ip`: IP address of the MCP server. 122 | - `--server-port`: Port number of the MCP server. 123 | - `--token`: Authentication token. 124 | - `--chat-id`: ID of the chat session to retrieve information for. 125 | 126 | - **Usage Example**: 127 | ```bash 128 | MCPGetChatInfoClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --chat-id 6789 129 | ``` 130 | 131 | --- 132 | 133 | ### 3.0 MCPCreateSourceClient 134 | - **Purpose**: Creates a new source on the MCP server and associates it with specified groups. 135 | 136 | - **Main Features**: 137 | - Sends a `create_source` command with details such as name, content, and associated groups. 138 | - Provides robust error handling for missing arguments and server communication issues. 139 | 140 | - **Key Arguments**: 141 | - `--server-ip`: IP address of the MCP server. 142 | - `--server-port`: Port number of the MCP server. 143 | - `--token`: Authentication token for the session. 144 | - `--name`: Name of the source to create. 145 | - `--content`: Content of the source in plain text or markdown. 146 | - `--groups`: (Optional) List of groups to associate with the source. 147 | 148 | - **Usage Example**: 149 | ```bash 150 | MCPCreateSourceClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --name "Sample Source" --content "This is a test content" --groups devops hr 151 | ``` 152 | 153 | --- 154 | 155 | ### 3.1 MCPGetSourceClient 156 | - **Purpose**: Fetches detailed information about a specific source from the MCP server. 157 | 158 | - **Main Features**: 159 | - Sends a `get_source` command to the server with the source ID as a parameter. 160 | - Retrieves and displays the source's metadata and contents. 161 | 162 | - **Key Arguments**: 163 | - `--server-ip`: IP address of the MCP server. 164 | - `--server-port`: Port number of the MCP server. 165 | - `--token`: Authentication token for the server. 166 | - `--source-id`: Unique ID of the source to retrieve. 167 | 168 | - **Usage Example**: 169 | ```bash 170 | MCPGetSourceClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --source-id 12345 171 | ``` 172 | 173 | ### 3.2 MCPListSourcesClient 174 | - **Purpose**: Lists all sources belonging to a specified group on the MCP server. 175 | 176 | - **Main Features**: 177 | - Sends a `list_sources` command with the group name as a parameter. 178 | - Displays a list of sources available in the specified group. 179 | 180 | - **Key Arguments**: 181 | - `--server-ip`: IP address of the MCP server. 182 | - `--server-port`: Port number of the MCP server. 183 | - `--token`: Authentication token for the server. 184 | - `--group-name`: Name of the group for which to list sources. 185 | 186 | - **Usage Example**: 187 | ```bash 188 | MCPListSourcesClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --group-name devops 189 | ``` 190 | 191 | ### 3.3 MCPEditSourceClient 192 | - **Purpose**: Edits the details of an existing source on the MCP server. 193 | 194 | - **Main Features**: 195 | - Sends an `edit_source` command with optional updates for the source title, content, and group associations. 196 | - Supports adding or updating multiple groups for the source. 197 | 198 | - **Key Arguments**: 199 | - `--server-ip`: IP address of the MCP server. 200 | - `--server-port`: Port number of the MCP server. 201 | - `--token`: Authentication token for the server. 202 | - `--source-id`: ID of the source to edit. 203 | - `--title`: (Optional) New title for the source. 204 | - `--content`: (Optional) New content for the source. 205 | - `--groups`: (Optional) List of groups to associate with the source. 206 | 207 | - **Usage Example**: 208 | ```bash 209 | MCPEditSourceClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --source-id 12345 --title "Updated Title" --content "Updated content for the source." --groups devops finance 210 | ``` 211 | 212 | ### 3.4 MCPDeleteSourceClient 213 | - **Purpose**: Deletes a specific source from the MCP server. 214 | 215 | - **Main Features**: 216 | - Sends a `delete_source` command to remove the source identified by its ID. 217 | 218 | - **Key Arguments**: 219 | - `--server-ip`: IP address of the MCP server. 220 | - `--server-port`: Port number of the MCP server. 221 | - `--token`: Authentication token for the server. 222 | - `--source-id`: ID of the source to delete. 223 | 224 | - **Usage Example**: 225 | ```bash 226 | MCPDeleteSourceClient.exe --server-ip 127.0.0.1 --server-port 1234 -token MyToken --source-id 12345 227 | ``` 228 | 229 | --- 230 | 231 | ### 4.0 MCPListGroupsClient 232 | - **Purpose**: 233 | Lists all the groups available on the MCP server. 234 | 235 | - **Main Features**: 236 | - Sends a `list_groups` command to retrieve the available groups. 237 | - Outputs the groups in JSON format. 238 | 239 | - **Key Arguments**: 240 | - `--server-ip`: IP address of the MCP server. 241 | - `--server-port`: Port number of the MCP server. 242 | - `--token`: Authentication token for the session. 243 | 244 | - **Usage Example**: 245 | ```bash 246 | MCPListGroupsClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken 247 | ``` 248 | 249 | ### 4.1 MCPStoreGroupClient 250 | - **Purpose**: 251 | - Creates or updates a group on the MCP server. 252 | 253 | - **Main Features**: 254 | - Sends a `store_group` command with the group's name and description. 255 | - Allows creation of new groups or modification of existing ones. 256 | 257 | - **Key Arguments**: 258 | - `--server-ip`: IP address of the MCP server. 259 | - `--server-port`: Port number of the MCP server. 260 | - `--token`: Authentication token for the session. 261 | - `--group-name`: Name of the group to create or update. 262 | - `--description`: (Optional) Description of the group. 263 | 264 | - **Usage Example**: 265 | ```bash 266 | MCPStoreGroupClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --group-name "Team DevOps" --description "Group for development and operations" 267 | ``` 268 | 269 | ### 4.2 MCPDeleteGroupClient 270 | - **Purpose**: 271 | - Deletes a specified group from the MCP server. 272 | 273 | - **Main Features**: 274 | - Sends a `delete_group` command with the group name. 275 | - Ensures the group is removed from the server. 276 | 277 | - **Key Arguments**: 278 | - `--server-ip`: IP address of the MCP server. 279 | - `--server-port`: Port number of the MCP server. 280 | - `--token`: Authentication token for the session. 281 | - `--group-name`: Name of the group to delete. 282 | 283 | - **Usage Example**: 284 | ```bash 285 | MCPDeleteGroupClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --group-name "Team DevOps" 286 | ``` 287 | 288 | --- 289 | 290 | ### 5.0 MCPStoreUserClient 291 | - **Purpose:** Creates or updates user details on the MCP server. 292 | 293 | - **Main Features:** 294 | - Sends a `store_user` command with comprehensive user details. 295 | - Allows specification of default values for language and timezone if not provided. 296 | 297 | - **Key Arguments:** 298 | - `--server-ip`: IP address of the MCP server. 299 | - `--server-port`: Port number of the MCP server. 300 | - `--token`: Authentication token. 301 | - `--name`: Name of the user. 302 | - `--email`: Email address of the user. 303 | - `--password`: Password for the user account. 304 | - `--language` (Optional): User's preferred language (default: "en"). 305 | - `--timezone` (Optional): User's timezone (default: "Europe/Berlin"). 306 | - `--roles` (Optional): Roles assigned to the user. 307 | - `--groups` (Optional): Groups the user belongs to. 308 | - `--usePublic` (Optional): Flag to set the user as public. 309 | - `--activateFtp` (Optional): Flag to activate FTP access. 310 | - `--ftpPassword` (Optional): Password for FTP access. 311 | 312 | **Usage Example:** 313 | ```bash 314 | MCPStoreUserClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --name John --email [email protected] --password secret --language en --roles admin manager --groups devops finance --usePublic --activateFtp --ftpPassword ftpPass123 315 | ``` 316 | 317 | ### 5.1 MCPEditUserClient 318 | - **Purpose:** Modifies the details of an existing user on the MCP server. 319 | 320 | - **Main Features:** 321 | - Sends an `edit_user` command with the specified user details. 322 | - Supports conditional sending of fields to avoid unnecessary data transmission. 323 | 324 | - **Key Arguments:** 325 | - `--server-ip`: IP address of the MCP server. 326 | - `--server-port`: Port number of the MCP server. 327 | - `--token`: Authentication token. 328 | - `--user-id`: ID of the user to modify. 329 | - `--name` (Optional): New name of the user. 330 | - `--email` (Optional): New email for the user. 331 | - `--password` (Optional): New password for the user. 332 | - `--language` (Optional): New language for the user. 333 | - `--timezone` (Optional): New timezone for the user. 334 | - `--roles` (Optional): New roles for the user. 335 | - `--groups` (Optional): New groups for the user. 336 | - `--usePublic` (Optional): Flag to set the user as public. 337 | - `--activateFtp` (Optional): Flag to activate FTP for the user. 338 | - `--ftpPassword` (Optional): New password for FTP access. 339 | 340 | - **Usage Example:** 341 | ```bash 342 | MCPEditUserClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --user-id 12345 --name Jane --roles manager devops --groups hr devops 343 | ``` 344 | 345 | ### 5.2 MCPDeleteUserClient 346 | - **Purpose:** Deletes a user from the MCP server. 347 | 348 | - **Main Features:** 349 | - Sends a `delete_user` command using the user's email as an identifier. 350 | 351 | - **Key Arguments:** 352 | - `--server-ip`: IP address of the MCP server. 353 | - `--server-port`: Port number of the MCP server. 354 | - `--email`: Email address of the user to delete. 355 | - `--token`: Authentication token. 356 | 357 | - **Usage Example:** 358 | ```bash 359 | MCPDeleteUserClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --email [email protected] 360 | ``` 361 | 362 | --- 363 | 364 | ## General Notes 365 | **JSON Communication:** 366 | - Each file constructs and sends JSON payloads specific to its functionality. 367 | - Responses from the server are parsed and displayed in JSON format. 368 | 369 | **Socket Communication:** 370 | - The files use Go's Socket class for establishing TCP connections with the MCP server. 371 | 372 | **Error Handling:** 373 | - The scripts handle missing or invalid arguments gracefully, printing clear usage instructions where necessary. 374 | 375 | **Examples:** 376 | - Replace placeholders (e.g., `<SERVER_IP>`, `<TOKEN>`) with actual values relevant to your environment. 377 | 378 | ## Prerequisites and Dependencies: 379 | 1. **Go Compiler**: Those agents have been build using Go. 380 | 381 | ## Build 382 | Each Go console application is designed to perform a specific operation. Below are the details for compiling an example application, in this case MCPKeygenClient: 383 | ```bash 384 | go build .\MCPKeygenClient.go 385 | ``` 386 | 387 | ## Error Handling 388 | Both clients include error handling for: 389 | - Missing or invalid parameters. 390 | - Server connection issues. 391 | - Unexpected server responses. 392 | 393 | ## Future Enhancements 394 | - Add support for SSL/TLS encryption for secure communication. 395 | - Implement a configuration file to simplify the command-line parameters. 396 | - Enhance error reporting with detailed server-side error codes. 397 | 398 | ## License 399 | This project is licensed under the MIT License - see the LICENSE file for details. 400 | This repository and/or code is provided "as is" without warranty of any kind, and use is at your own risk. 401 | 402 | 403 | ``` -------------------------------------------------------------------------------- /clients/C# .Net/README.md: -------------------------------------------------------------------------------- ```markdown 1 | # MCP Client Examples (C# .Net) 2 | This repository contains examples for interacting with the MCP server using **C# .Net**. Each console application demonstrates a specific operation and its corresponding server interaction. 3 | 4 | ### 1. Authentication 5 | [1.1 Login User](#10-mcploginclient) 6 | [1.2 Logout User](#12-mcplogoutclient) 7 | 8 | ### 2. Chat Operations 9 | [2.1 Start a New Chat](#20-mcpchatclient) 10 | [2.2 Continue a Chat Session](#21-mcpcontinuechatclient) 11 | [2.3 Retrieve Chat Info](#22-mcpgetchatinfoClient) 12 | 13 | ### 3. Source Management 14 | [3.1 Create a New Source](#30-mcpcreatesourceclient) 15 | [3.2 Retrieve Source Details](#31-mcpgetsourceclient) 16 | [3.3 List All Sources in a Group](#32-mcplistsourcesclient) 17 | [3.4 Edit an Existing Source](#33-mcpeditsourceclient) 18 | [3.5 Delete a Source](#34-mcpdeletesourceclient) 19 | 20 | ### 4. Group Management 21 | [4.1 List All Groups](#40-mcplistgroupsclient) 22 | [4.2 Create/Update a Group](#41-mcpstoregroupclient) 23 | [4.3 Delete a Group](#42-mcpdeletegroupclient) 24 | 25 | ### 5. User Management 26 | [5.1 Create/Update a User](#50-mcpstoreuserclient) 27 | [5.2 Edit User Details](#51-mcpedituserclient) 28 | [5.3 Delete a User](#52-mcpdeleteuserclient) 29 | 30 | --- 31 | 32 | ### 1.0 MCPLoginClient 33 | - **Purpose**: Handles user authentication by sending login requests to the MCP server. 34 | 35 | - **Main Features**: 36 | - Sends a `login` command to the server with user credentials. 37 | - Handles JSON-based requests and parses the server's response. 38 | 39 | - **Key Arguments**: 40 | - `--server-ip`: IP address of the MCP server. 41 | - `--server-port`: Port number of the MCP server. 42 | - `--email`: User email for authentication. 43 | - `--password`: User password for authentication. 44 | 45 | - **Usage Example**: 46 | ```bash 47 | dotnet run -- --server-ip 127.0.0.1 --server-port 1234 --email [email protected] --password secret 48 | ``` 49 | 50 | ### 1.2 MCPLogoutClient 51 | - **Purpose**: Logs out an authenticated user by invalidating their session token. 52 | 53 | - **Main Features**: 54 | - Sends a `logout` command to the server. 55 | - Invalidates the token provided in the request. 56 | 57 | - **Key Arguments**: 58 | - `--server-ip`: IP address of the MCP server. 59 | - `--server-port`: Port number of the MCP server. 60 | - `--token`: Authentication token to be invalidated. 61 | 62 | - **Usage Example**: 63 | ```bash 64 | dotnet run -- --server-ip 127.0.0.1 --server-port 1234 --token MyToken 65 | ``` 66 | 67 | --- 68 | 69 | ### 2.0 MCPChatClient 70 | - **Purpose**: Initiates a new chat session with the MCP server. 71 | 72 | - **Main Features**: 73 | - Sends a `chat` command to the server with a question. 74 | - Supports optional parameters for public chats, groups, and language. 75 | 76 | - **Key Arguments**: 77 | - `--server-ip`: IP address of the MCP server. 78 | - `--server-port`: Port number of the MCP server. 79 | - `--token`: Authentication token. 80 | - `--question`: Initial question for the chat session. 81 | - `--use-public`: Optional flag for public chat. 82 | - `--groups`: Optional group list. 83 | - `--language`: Optional language parameter. 84 | 85 | - **Usage Example**: 86 | ```bash 87 | dotnet run -- --server-ip 127.0.0.1 --server-port 1234 --token MyToken --question "Hello World" --use-public --groups "devops,hr" --language en 88 | ``` 89 | 90 | ### 2.1 MCPContinueChatClient 91 | - **Purpose**: Continues an existing chat session by sending follow-up messages. 92 | 93 | - **Main Features**: 94 | - Sends a `continue_chat` command to the server. 95 | - Provides the conversation ID and follow-up message. 96 | 97 | - **Key Arguments**: 98 | - `--server-ip`: IP address of the MCP server. 99 | - `--server-port`: Port number of the MCP server. 100 | - `--token`: Authentication token. 101 | - `--conversation-id`: ID of the conversation to continue. 102 | - `--message`: Follow-up message. 103 | 104 | - **Usage Example**: 105 | ```bash 106 | dotnet run -- --server-ip 127.0.0.1 --server-port 1234 --token MyToken --conversation-id 12345 --message "Can you provide an update?" 107 | ``` 108 | 109 | ### 2.2 MCPGetChatInfo 110 | - **Purpose**: Retrieves metadata and status information about an existing chat session. 111 | 112 | - **Main Features**: 113 | - Sends a `get_chat_info` command to the server. 114 | - Extracts and displays information about the chat session. 115 | 116 | - **Key Arguments**: 117 | - `--server-ip`: IP address of the MCP server. 118 | - `--server-port`: Port number of the MCP server. 119 | - `--token`: Authentication token. 120 | - `--chat-id`: ID of the chat session to retrieve information for. 121 | 122 | - **Usage Example**: 123 | ```bash 124 | dotnet run -- --server-ip 127.0.0.1 --server-port 1234 --token MyToken --chat-id 6789 125 | ``` 126 | 127 | --- 128 | 129 | ### 3.0 MCPCreateSourceClient 130 | - **Purpose**: Creates a new source on the MCP server and associates it with specified groups. 131 | 132 | - **Main Features**: 133 | - Sends a `create_source` command with details such as name, content, and associated groups. 134 | - Provides robust error handling for missing arguments and server communication issues. 135 | 136 | - **Key Arguments**: 137 | - `--server-ip`: IP address of the MCP server. 138 | - `--server-port`: Port number of the MCP server. 139 | - `--token`: Authentication token for the session. 140 | - `--name`: Name of the source to create. 141 | - `--content`: Content of the source in plain text or markdown. 142 | - `--groups`: (Optional) List of groups to associate with the source. 143 | 144 | - **Usage Example**: 145 | ```bash 146 | dotnet run -- --server-ip 127.0.0.1 --server-port 1234 --token MyToken --name "Sample Source" --content "This is a test content" --groups devops hr 147 | ``` 148 | 149 | --- 150 | 151 | ### 3.1 MCPGetSourceClient 152 | - **Purpose**: Fetches detailed information about a specific source from the MCP server. 153 | 154 | - **Main Features**: 155 | - Sends a `get_source` command to the server with the source ID as a parameter. 156 | - Retrieves and displays the source's metadata and contents. 157 | 158 | - **Key Arguments**: 159 | - `--server-ip`: IP address of the MCP server. 160 | - `--server-port`: Port number of the MCP server. 161 | - `--token`: Authentication token for the server. 162 | - `--source-id`: Unique ID of the source to retrieve. 163 | 164 | - **Usage Example**: 165 | ```bash 166 | dotnet run -- --server-ip 127.0.0.1 --server-port 1234 --token MyToken --source-id 12345 167 | ``` 168 | 169 | ### 3.2 MCPListSourcesClient 170 | - **Purpose**: Lists all sources belonging to a specified group on the MCP server. 171 | 172 | - **Main Features**: 173 | - Sends a `list_sources` command with the group name as a parameter. 174 | - Displays a list of sources available in the specified group. 175 | 176 | - **Key Arguments**: 177 | - `--server-ip`: IP address of the MCP server. 178 | - `--server-port`: Port number of the MCP server. 179 | - `--token`: Authentication token for the server. 180 | - `--group-name`: Name of the group for which to list sources. 181 | 182 | - **Usage Example**: 183 | ```bash 184 | dotnet run -- --server-ip 127.0.0.1 --server-port 1234 --token MyToken --group-name devops 185 | ``` 186 | 187 | ### 3.3 MCPEditSourceClient 188 | - **Purpose**: Edits the details of an existing source on the MCP server. 189 | 190 | - **Main Features**: 191 | - Sends an `edit_source` command with optional updates for the source title, content, and group associations. 192 | - Supports adding or updating multiple groups for the source. 193 | 194 | - **Key Arguments**: 195 | - `--server-ip`: IP address of the MCP server. 196 | - `--server-port`: Port number of the MCP server. 197 | - `--token`: Authentication token for the server. 198 | - `--source-id`: ID of the source to edit. 199 | - `--title`: (Optional) New title for the source. 200 | - `--content`: (Optional) New content for the source. 201 | - `--groups`: (Optional) List of groups to associate with the source. 202 | 203 | - **Usage Example**: 204 | ```bash 205 | dotnet run -- --server-ip 127.0.0.1 --server-port 1234 --token MyToken --source-id 12345 --title "Updated Title" --content "Updated content for the source." --groups devops finance 206 | ``` 207 | 208 | ### 3.4 MCPDeleteSourceClient 209 | - **Purpose**: Deletes a specific source from the MCP server. 210 | 211 | - **Main Features**: 212 | - Sends a `delete_source` command to remove the source identified by its ID. 213 | 214 | - **Key Arguments**: 215 | - `--server-ip`: IP address of the MCP server. 216 | - `--server-port`: Port number of the MCP server. 217 | - `--token`: Authentication token for the server. 218 | - `--source-id`: ID of the source to delete. 219 | 220 | - **Usage Example**: 221 | ```bash 222 | dotnet run -- --server-ip 127.0.0.1 --server-port 1234 -token MyToken --source-id 12345 223 | ``` 224 | 225 | --- 226 | 227 | ### 4.0 MCPListGroupsClient 228 | - **Purpose**: 229 | Lists all the groups available on the MCP server. 230 | 231 | - **Main Features**: 232 | - Sends a `list_groups` command to retrieve the available groups. 233 | - Outputs the groups in JSON format. 234 | 235 | - **Key Arguments**: 236 | - `--server-ip`: IP address of the MCP server. 237 | - `--server-port`: Port number of the MCP server. 238 | - `--token`: Authentication token for the session. 239 | 240 | - **Usage Example**: 241 | ```bash 242 | dotnet run -- --server-ip 127.0.0.1 --server-port 1234 --token MyToken 243 | ``` 244 | 245 | ### 4.1 MCPStoreGroupClient 246 | - **Purpose**: 247 | - Creates or updates a group on the MCP server. 248 | 249 | - **Main Features**: 250 | - Sends a `store_group` command with the group's name and description. 251 | - Allows creation of new groups or modification of existing ones. 252 | 253 | - **Key Arguments**: 254 | - `--server-ip`: IP address of the MCP server. 255 | - `--server-port`: Port number of the MCP server. 256 | - `--token`: Authentication token for the session. 257 | - `--group-name`: Name of the group to create or update. 258 | - `--description`: (Optional) Description of the group. 259 | 260 | - **Usage Example**: 261 | ```bash 262 | dotnet run -- --server-ip 127.0.0.1 --server-port 1234 --token MyToken --group-name "Team DevOps" --description "Group for development and operations" 263 | ``` 264 | 265 | ### 4.2 MCPDeleteGroupClient 266 | - **Purpose**: 267 | - Deletes a specified group from the MCP server. 268 | 269 | - **Main Features**: 270 | - Sends a `delete_group` command with the group name. 271 | - Ensures the group is removed from the server. 272 | 273 | - **Key Arguments**: 274 | - `--server-ip`: IP address of the MCP server. 275 | - `--server-port`: Port number of the MCP server. 276 | - `--token`: Authentication token for the session. 277 | - `--group-name`: Name of the group to delete. 278 | 279 | - **Usage Example**: 280 | ```bash 281 | dotnet run -- --server-ip 127.0.0.1 --server-port 1234 --token MyToken --group-name "Team DevOps" 282 | ``` 283 | 284 | --- 285 | 286 | ### 5.0 MCPStoreUserClient 287 | - **Purpose:** Creates or updates user details on the MCP server. 288 | 289 | - **Main Features:** 290 | - Sends a `store_user` command with comprehensive user details. 291 | - Allows specification of default values for language and timezone if not provided. 292 | 293 | - **Key Arguments:** 294 | - `--server-ip`: IP address of the MCP server. 295 | - `--server-port`: Port number of the MCP server. 296 | - `--token`: Authentication token. 297 | - `--name`: Name of the user. 298 | - `--email`: Email address of the user. 299 | - `--password`: Password for the user account. 300 | - `--language` (Optional): User's preferred language (default: "en"). 301 | - `--timezone` (Optional): User's timezone (default: "Europe/Berlin"). 302 | - `--roles` (Optional): Roles assigned to the user. 303 | - `--groups` (Optional): Groups the user belongs to. 304 | - `--usePublic` (Optional): Flag to set the user as public. 305 | - `--activateFtp` (Optional): Flag to activate FTP access. 306 | - `--ftpPassword` (Optional): Password for FTP access. 307 | 308 | **Usage Example:** 309 | ```bash 310 | dotnet run -- --server-ip 127.0.0.1 --server-port 1234 --token MyToken --name John --email [email protected] --password secret --language en --roles admin manager --groups devops finance --usePublic --activateFtp --ftpPassword ftpPass123 311 | ``` 312 | 313 | ### 5.1 MCPEditUserClient 314 | - **Purpose:** Modifies the details of an existing user on the MCP server. 315 | 316 | - **Main Features:** 317 | - Sends an `edit_user` command with the specified user details. 318 | - Supports conditional sending of fields to avoid unnecessary data transmission. 319 | 320 | - **Key Arguments:** 321 | - `--server-ip`: IP address of the MCP server. 322 | - `--server-port`: Port number of the MCP server. 323 | - `--token`: Authentication token. 324 | - `--user-id`: ID of the user to modify. 325 | - `--name` (Optional): New name of the user. 326 | - `--email` (Optional): New email for the user. 327 | - `--password` (Optional): New password for the user. 328 | - `--language` (Optional): New language for the user. 329 | - `--timezone` (Optional): New timezone for the user. 330 | - `--roles` (Optional): New roles for the user. 331 | - `--groups` (Optional): New groups for the user. 332 | - `--usePublic` (Optional): Flag to set the user as public. 333 | - `--activateFtp` (Optional): Flag to activate FTP for the user. 334 | - `--ftpPassword` (Optional): New password for FTP access. 335 | 336 | - **Usage Example:** 337 | ```bash 338 | dotnet run -- --server-ip 127.0.0.1 --server-port 1234 --token MyToken --user-id 12345 --name Jane --roles manager devops --groups hr devops 339 | ``` 340 | 341 | ### 5.2 MCPDeleteUserClient 342 | - **Purpose:** Deletes a user from the MCP server. 343 | 344 | - **Main Features:** 345 | - Sends a `delete_user` command using the user's email as an identifier. 346 | 347 | - **Key Arguments:** 348 | - `--server-ip`: IP address of the MCP server. 349 | - `--server-port`: Port number of the MCP server. 350 | - `--email`: Email address of the user to delete. 351 | - `--token`: Authentication token. 352 | 353 | - **Usage Example:** 354 | ```bash 355 | dotnet run -- --server-ip 127.0.0.1 --server-port 1234 --token MyToken --email [email protected] 356 | ``` 357 | 358 | --- 359 | 360 | ## General Notes 361 | **JSON Communication:** 362 | - Each file constructs and sends JSON payloads specific to its functionality. 363 | - Responses from the server are parsed and displayed in JSON format. 364 | 365 | **Socket Communication:** 366 | - The files use C# .Net's Socket class for establishing TCP connections with the MCP server. 367 | 368 | **Error Handling:** 369 | - The scripts handle missing or invalid arguments gracefully, printing clear usage instructions where necessary. 370 | 371 | **Examples:** 372 | - Replace placeholders (e.g., `<SERVER_IP>`, `<TOKEN>`) with actual values relevant to your environment. 373 | 374 | ## Prerequisites and Dependencies: 375 | 1. **.NET SDK**: Ensure you have the .NET SDK installed. Download it from [dotnet.microsoft.com](https://dotnet.microsoft.com/). 376 | 2. **Newtonsoft.Json**: The examples use the `Newtonsoft.Json` library for JSON serialization/deserialization. Install it using: 377 | ```bash 378 | dotnet add package Newtonsoft.Json 379 | ``` 380 | 381 | ## Build and Run 382 | Each .NET C# console application is designed to perform a specific operation. Below are the details for compiling and running each application: 383 | ```bash 384 | dotnet build 385 | dotnet run -- <APPLICATION with PARAMETERS> 386 | ``` 387 | 388 | ## Error Handling 389 | Both clients include error handling for: 390 | - Missing or invalid parameters. 391 | - Server connection issues. 392 | - Unexpected server responses. 393 | 394 | ## Future Enhancements 395 | - Add support for SSL/TLS encryption for secure communication. 396 | - Implement a configuration file to simplify the command-line parameters. 397 | - Enhance error reporting with detailed server-side error codes. 398 | 399 | ## License 400 | This project is licensed under the MIT License - see the LICENSE file for details. 401 | This repository and/or code is provided "as is" without warranty of any kind, and use is at your own risk. 402 | 403 | 404 | ``` -------------------------------------------------------------------------------- /clients/C++/README.md: -------------------------------------------------------------------------------- ```markdown 1 | # MCP Client Examples (C++) 2 | This repository contains examples for interacting with the MCP server using **C++**. Each console application demonstrates a specific operation and its corresponding server interaction. 3 | 4 | ## Main Menu 5 | Choose an operation from the list below. Each example demonstrates a specific server interaction. 6 | 7 | ### 1. Authentication 8 | [1.1 Login User](#10-mcploginclient) 9 | [1.2 Logout User](#12-mcplogoutclient) 10 | 11 | ### 2. Chat Operations 12 | [2.1 Start a New Chat](#20-mcpchatclient) 13 | [2.2 Continue a Chat Session](#21-mcpcontinuechatclient) 14 | [2.3 Retrieve Chat Info](#22-mcpgetchatinfoClient) 15 | 16 | ### 3. Source Management 17 | [3.1 Create a New Source](#30-mcpcreatesourceclient) 18 | [3.2 Retrieve Source Details](#31-mcpgetsourceclient) 19 | [3.3 List All Sources in a Group](#32-mcplistsourcesclient) 20 | [3.4 Edit an Existing Source](#33-mcpeditsourceclient) 21 | [3.5 Delete a Source](#34-mcpdeletesourceclient) 22 | 23 | ### 4. Group Management 24 | [4.1 List All Groups](#40-mcplistgroupsclient) 25 | [4.2 Create/Update a Group](#41-mcpstoregroupclient) 26 | [4.3 Delete a Group](#42-mcpdeletegroupclient) 27 | 28 | ### 5. User Management 29 | [5.1 Create/Update a User](#50-mcpstoreuserclient) 30 | [5.2 Edit User Details](#51-mcpedituserclient) 31 | [5.3 Delete a User](#52-mcpdeleteuserclient) 32 | 33 | --- 34 | 35 | 36 | ### 1.0 MCPLoginClient 37 | - **Purpose**: Handles user authentication by sending login requests to the MCP server. 38 | 39 | - **Main Features**: 40 | - Sends a `login` command to the server with user credentials. 41 | - Handles JSON-based requests and parses the server's response. 42 | 43 | - **Key Arguments**: 44 | - `--server-ip`: IP address of the MCP server. 45 | - `--server-port`: Port number of the MCP server. 46 | - `--email`: User email for authentication. 47 | - `--password`: User password for authentication. 48 | 49 | - **Usage Example**: 50 | ```bash 51 | MCPLoginClient.exe --server-ip 127.0.0.1 --server-port 1234 --email [email protected] --password secret 52 | ``` 53 | 54 | ### 1.2 MCPLogoutClient 55 | - **Purpose**: Logs out an authenticated user by invalidating their session token. 56 | 57 | - **Main Features**: 58 | - Sends a `logout` command to the server. 59 | - Invalidates the token provided in the request. 60 | 61 | - **Key Arguments**: 62 | - `--server-ip`: IP address of the MCP server. 63 | - `--server-port`: Port number of the MCP server. 64 | - `--token`: Authentication token to be invalidated. 65 | 66 | - **Usage Example**: 67 | ```bash 68 | MCPLogoutClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken 69 | ``` 70 | 71 | --- 72 | 73 | ### 2.0 MCPChatClient 74 | - **Purpose**: Initiates a new chat session with the MCP server. 75 | 76 | - **Main Features**: 77 | - Sends a `chat` command to the server with a question. 78 | - Supports optional parameters for public chats, groups, and language. 79 | 80 | - **Key Arguments**: 81 | - `--server-ip`: IP address of the MCP server. 82 | - `--server-port`: Port number of the MCP server. 83 | - `--token`: Authentication token. 84 | - `--question`: Initial question for the chat session. 85 | - `--use-public`: Optional flag for public chat. 86 | - `--groups`: Optional group list. 87 | - `--language`: Optional language parameter. 88 | 89 | - **Usage Example**: 90 | ```bash 91 | MCPChatClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --question "Hello World" --use-public --groups "devops,hr" --language en 92 | ``` 93 | 94 | ### 2.1 MCPContinueChatClient 95 | - **Purpose**: Continues an existing chat session by sending follow-up messages. 96 | 97 | - **Main Features**: 98 | - Sends a `continue_chat` command to the server. 99 | - Provides the conversation ID and follow-up message. 100 | 101 | - **Key Arguments**: 102 | - `--server-ip`: IP address of the MCP server. 103 | - `--server-port`: Port number of the MCP server. 104 | - `--token`: Authentication token. 105 | - `--conversation-id`: ID of the conversation to continue. 106 | - `--message`: Follow-up message. 107 | 108 | - **Usage Example**: 109 | ```bash 110 | MCPContinueChatClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --conversation-id 12345 --message "Can you provide an update?" 111 | ``` 112 | 113 | ### 2.2 MCPGetChatInfoClient 114 | - **Purpose**: Retrieves metadata and status information about an existing chat session. 115 | 116 | - **Main Features**: 117 | - Sends a `get_chat_info` command to the server. 118 | - Extracts and displays information about the chat session. 119 | 120 | - **Key Arguments**: 121 | - `--server-ip`: IP address of the MCP server. 122 | - `--server-port`: Port number of the MCP server. 123 | - `--token`: Authentication token. 124 | - `--chat-id`: ID of the chat session to retrieve information for. 125 | 126 | - **Usage Example**: 127 | ```bash 128 | MCPGetChatInfoClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --chat-id 6789 129 | ``` 130 | 131 | --- 132 | 133 | ### 3.0 MCPCreateSourceClient 134 | - **Purpose**: Creates a new source on the MCP server and associates it with specified groups. 135 | 136 | - **Main Features**: 137 | - Sends a `create_source` command with details such as name, content, and associated groups. 138 | - Provides robust error handling for missing arguments and server communication issues. 139 | 140 | - **Key Arguments**: 141 | - `--server-ip`: IP address of the MCP server. 142 | - `--server-port`: Port number of the MCP server. 143 | - `--token`: Authentication token for the session. 144 | - `--name`: Name of the source to create. 145 | - `--content`: Content of the source in plain text or markdown. 146 | - `--groups`: (Optional) List of groups to associate with the source. 147 | 148 | - **Usage Example**: 149 | ```bash 150 | MCPCreateSourceClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --name "Sample Source" --content "This is a test content" --groups devops hr 151 | ``` 152 | 153 | --- 154 | 155 | ### 3.1 MCPGetSourceClient 156 | - **Purpose**: Fetches detailed information about a specific source from the MCP server. 157 | 158 | - **Main Features**: 159 | - Sends a `get_source` command to the server with the source ID as a parameter. 160 | - Retrieves and displays the source's metadata and contents. 161 | 162 | - **Key Arguments**: 163 | - `--server-ip`: IP address of the MCP server. 164 | - `--server-port`: Port number of the MCP server. 165 | - `--token`: Authentication token for the server. 166 | - `--source-id`: Unique ID of the source to retrieve. 167 | 168 | - **Usage Example**: 169 | ```bash 170 | MCPGetSourceClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --source-id 12345 171 | ``` 172 | 173 | ### 3.2 MCPListSourcesClient 174 | - **Purpose**: Lists all sources belonging to a specified group on the MCP server. 175 | 176 | - **Main Features**: 177 | - Sends a `list_sources` command with the group name as a parameter. 178 | - Displays a list of sources available in the specified group. 179 | 180 | - **Key Arguments**: 181 | - `--server-ip`: IP address of the MCP server. 182 | - `--server-port`: Port number of the MCP server. 183 | - `--token`: Authentication token for the server. 184 | - `--group-name`: Name of the group for which to list sources. 185 | 186 | - **Usage Example**: 187 | ```bash 188 | MCPListSourcesClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --group-name devops 189 | ``` 190 | 191 | ### 3.3 MCPEditSourceClient 192 | - **Purpose**: Edits the details of an existing source on the MCP server. 193 | 194 | - **Main Features**: 195 | - Sends an `edit_source` command with optional updates for the source title, content, and group associations. 196 | - Supports adding or updating multiple groups for the source. 197 | 198 | - **Key Arguments**: 199 | - `--server-ip`: IP address of the MCP server. 200 | - `--server-port`: Port number of the MCP server. 201 | - `--token`: Authentication token for the server. 202 | - `--source-id`: ID of the source to edit. 203 | - `--title`: (Optional) New title for the source. 204 | - `--content`: (Optional) New content for the source. 205 | - `--groups`: (Optional) List of groups to associate with the source. 206 | 207 | - **Usage Example**: 208 | ```bash 209 | MCPEditSourceClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --source-id 12345 --title "Updated Title" --content "Updated content for the source." --groups devops finance 210 | ``` 211 | 212 | ### 3.4 MCPDeleteSourceClient 213 | - **Purpose**: Deletes a specific source from the MCP server. 214 | 215 | - **Main Features**: 216 | - Sends a `delete_source` command to remove the source identified by its ID. 217 | 218 | - **Key Arguments**: 219 | - `--server-ip`: IP address of the MCP server. 220 | - `--server-port`: Port number of the MCP server. 221 | - `--token`: Authentication token for the server. 222 | - `--source-id`: ID of the source to delete. 223 | 224 | - **Usage Example**: 225 | ```bash 226 | MCPDeleteSourceClient.exe --server-ip 127.0.0.1 --server-port 1234 -token MyToken --source-id 12345 227 | ``` 228 | 229 | --- 230 | 231 | ### 4.0 MCPListGroupsClient 232 | - **Purpose**: 233 | Lists all the groups available on the MCP server. 234 | 235 | - **Main Features**: 236 | - Sends a `list_groups` command to retrieve the available groups. 237 | - Outputs the groups in JSON format. 238 | 239 | - **Key Arguments**: 240 | - `--server-ip`: IP address of the MCP server. 241 | - `--server-port`: Port number of the MCP server. 242 | - `--token`: Authentication token for the session. 243 | 244 | - **Usage Example**: 245 | ```bash 246 | MCPListGroupsClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken 247 | ``` 248 | 249 | ### 4.1 MCPStoreGroupClient 250 | - **Purpose**: 251 | - Creates or updates a group on the MCP server. 252 | 253 | - **Main Features**: 254 | - Sends a `store_group` command with the group's name and description. 255 | - Allows creation of new groups or modification of existing ones. 256 | 257 | - **Key Arguments**: 258 | - `--server-ip`: IP address of the MCP server. 259 | - `--server-port`: Port number of the MCP server. 260 | - `--token`: Authentication token for the session. 261 | - `--group-name`: Name of the group to create or update. 262 | - `--description`: (Optional) Description of the group. 263 | 264 | - **Usage Example**: 265 | ```bash 266 | MCPStoreGroupClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --group-name "Team DevOps" --description "Group for development and operations" 267 | ``` 268 | 269 | ### 4.2 MCPDeleteGroupClient 270 | - **Purpose**: 271 | - Deletes a specified group from the MCP server. 272 | 273 | - **Main Features**: 274 | - Sends a `delete_group` command with the group name. 275 | - Ensures the group is removed from the server. 276 | 277 | - **Key Arguments**: 278 | - `--server-ip`: IP address of the MCP server. 279 | - `--server-port`: Port number of the MCP server. 280 | - `--token`: Authentication token for the session. 281 | - `--group-name`: Name of the group to delete. 282 | 283 | - **Usage Example**: 284 | ```bash 285 | MCPDeleteGroupClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --group-name "Team DevOps" 286 | ``` 287 | 288 | --- 289 | 290 | ### 5.0 MCPStoreUserClient 291 | - **Purpose:** Creates or updates user details on the MCP server. 292 | 293 | - **Main Features:** 294 | - Sends a `store_user` command with comprehensive user details. 295 | - Allows specification of default values for language and timezone if not provided. 296 | 297 | - **Key Arguments:** 298 | - `--server-ip`: IP address of the MCP server. 299 | - `--server-port`: Port number of the MCP server. 300 | - `--token`: Authentication token. 301 | - `--name`: Name of the user. 302 | - `--email`: Email address of the user. 303 | - `--password`: Password for the user account. 304 | - `--language` (Optional): User's preferred language (default: "en"). 305 | - `--timezone` (Optional): User's timezone (default: "Europe/Berlin"). 306 | - `--roles` (Optional): Roles assigned to the user. 307 | - `--groups` (Optional): Groups the user belongs to. 308 | - `--usePublic` (Optional): Flag to set the user as public. 309 | - `--activateFtp` (Optional): Flag to activate FTP access. 310 | - `--ftpPassword` (Optional): Password for FTP access. 311 | 312 | **Usage Example:** 313 | ```bash 314 | MCPStoreUserClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --name John --email [email protected] --password secret --language en --roles admin manager --groups devops finance --usePublic --activateFtp --ftpPassword ftpPass123 315 | ``` 316 | 317 | ### 5.1 MCPEditUserClient 318 | - **Purpose:** Modifies the details of an existing user on the MCP server. 319 | 320 | - **Main Features:** 321 | - Sends an `edit_user` command with the specified user details. 322 | - Supports conditional sending of fields to avoid unnecessary data transmission. 323 | 324 | - **Key Arguments:** 325 | - `--server-ip`: IP address of the MCP server. 326 | - `--server-port`: Port number of the MCP server. 327 | - `--token`: Authentication token. 328 | - `--user-id`: ID of the user to modify. 329 | - `--name` (Optional): New name of the user. 330 | - `--email` (Optional): New email for the user. 331 | - `--password` (Optional): New password for the user. 332 | - `--language` (Optional): New language for the user. 333 | - `--timezone` (Optional): New timezone for the user. 334 | - `--roles` (Optional): New roles for the user. 335 | - `--groups` (Optional): New groups for the user. 336 | - `--usePublic` (Optional): Flag to set the user as public. 337 | - `--activateFtp` (Optional): Flag to activate FTP for the user. 338 | - `--ftpPassword` (Optional): New password for FTP access. 339 | 340 | - **Usage Example:** 341 | ```bash 342 | MCPEditUserClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --user-id 12345 --name Jane --roles manager devops --groups hr devops 343 | ``` 344 | 345 | ### 5.2 MCPDeleteUserClient 346 | - **Purpose:** Deletes a user from the MCP server. 347 | 348 | - **Main Features:** 349 | - Sends a `delete_user` command using the user's email as an identifier. 350 | 351 | - **Key Arguments:** 352 | - `--server-ip`: IP address of the MCP server. 353 | - `--server-port`: Port number of the MCP server. 354 | - `--email`: Email address of the user to delete. 355 | - `--token`: Authentication token. 356 | 357 | - **Usage Example:** 358 | ```bash 359 | MCPDeleteUserClient.exe --server-ip 127.0.0.1 --server-port 1234 --token MyToken --email [email protected] 360 | ``` 361 | 362 | --- 363 | 364 | ## General Notes 365 | **JSON Communication:** 366 | - Each file constructs and sends JSON payloads specific to its functionality. 367 | - Responses from the server are parsed and displayed in JSON format. 368 | 369 | **Socket Communication:** 370 | - The files use C++'s Socket class for establishing TCP connections with the MCP server. 371 | 372 | **Error Handling:** 373 | - The scripts handle missing or invalid arguments gracefully, printing clear usage instructions where necessary. 374 | 375 | **Examples:** 376 | - Replace placeholders (e.g., `<SERVER_IP>`, `<TOKEN>`) with actual values relevant to your environment. 377 | 378 | ## Prerequisites and Dependencies: 379 | 1. **C-Compiler**: Those agents have been build using g++. 380 | 2. **JsonCpp **: The examples use the `JsonCpp ` library for JSON serialization/deserialization. 381 | 382 | ## Build 383 | Each C++ console application is designed to perform a specific operation. Below are the details for compiling an example application, in this case MCPKeygenClient: 384 | ```bash 385 | g++ -std=c++17 -o .\MCPKeygenClient .\MCPKeygenClient.cpp -I"C:\msys64\mingw64\include" -L"C:\msys64\mingw64\lib" -ljsoncpp -lws2_32 386 | ``` 387 | 388 | ## Error Handling 389 | Both clients include error handling for: 390 | - Missing or invalid parameters. 391 | - Server connection issues. 392 | - Unexpected server responses. 393 | 394 | ## Future Enhancements 395 | - Add support for SSL/TLS encryption for secure communication. 396 | - Implement a configuration file to simplify the command-line parameters. 397 | - Enhance error reporting with detailed server-side error codes. 398 | 399 | ## License 400 | This project is licensed under the MIT License - see the LICENSE file for details. 401 | This repository and/or code is provided "as is" without warranty of any kind, and use is at your own risk. 402 | 403 | 404 | ```