Complete Project Setup

From now on, we will use the CMakeLists.txt, client.cpp and server.cpp files as a base for almost every demonstration example we build together.

The examples are:

  • MCP STDIO/HTTP Server Usage: MCP STDIO/HTTP server implementation example. Codes under this section will be written under the server.cpp.

  • MCP STDIO/HTTP Client Usage: MCP STDIO/HTTP client implementation example. Codes under this section will be written under the client.cpp.

Total CMakeLists.txt

CMakeLists.txt
cmake_minimum_required(VERSION 3.15...3.31)
project("mcp_simple_project" LANGUAGES CXX)

add_executable(mcp_client_sample client.cpp)
add_executable(mcp_server_sample server.cpp)

find_package(mbase.libs REQUIRED COMPONENTS mcp)

target_compile_features(mcp_client_sample PUBLIC cxx_std_17)
target_link_libraries(mcp_client_sample PRIVATE mbase-mcp)
target_include_directories(mcp_client_sample PUBLIC mbase-mcp)

target_compile_features(mcp_server_sample PUBLIC cxx_std_17)
target_link_libraries(mcp_server_sample PRIVATE mbase-mcp)
target_include_directories(mcp_server_sample PUBLIC mbase-mcp)

Total client.cpp

client.cpp
#include <mbase/mcp/mcp_client_base.h>
#include <iostream>

int main()
{
    mbase::McpClientBase myMcpClient(
        "MCP Sample Client",
        "1.0.0"
    );
    std::cout << myMcpClient.get_client_name() << " " << myMcpClient.get_client_version() << std::endl;
    return 0;
}

Total server.cpp

server.cpp
#include <mbase/mcp/mcp_server_base.h>
#include <mbase/mcp/mcp_server_stdio.h>
#include <iostream>

int main()
{
    mbase::McpServerStdio mcpServer(
        "MCP Sample Server",
        "1.0.0"
    );
    std::cout << mcpServer.get_server_name() << " " << mcpServer.get_server_version() << std::endl;
    return 0;
}